wp_unique_post_slug

説明

string wp_unique_post_slug( string $slug, int $post_ID, string $post_status, string $post_type, int $post_parent )
ユニークな投稿スラッグを取得する。

パラメータ

  • $slug
    サニタイズした投稿名を指定。
  • $post_ID
    投稿IDを指定。
  • $post_status
    投稿ステータスで指定。
  • $post_type
    投稿タイプを指定。
  • $post_parent
    親の投稿IDを指定(親がない場合は0)。

返り値

ユニークな投稿スラッグを返す。

注意

サイト全体でユニークとなる投稿スラッグ(同じ名前がすでにある場合は-1や-2のようなサフィックスが付く)を取得できるもので、通常は wp_insert_post関数内で呼ばれている。基本的に呼び出すことはなく、利用するなら'wp_unique_post_slug'フィルターだろう。
なお、パラメータ$post_statusが'draft'、'pending'、'auto-draft'のいずれかか、パラメータ$post_statusが'inherit'でパラメータ$post_typeが'revision'の場合はパラメータ$slugをすぐに返す(フィルターは呼び出されない)。

【重要】
'wp_unique_post_slug'フィルターを利用する場合は、その戻り値となるスラッグがURLエンコード(PHP urlencode関数など)して200文字を超えないようにすること。200文字を超えたスラッグを返した場合はその投稿情報は正しく保存されない(3.7.1で確認)。

[5.1.0]本関数でユニークなスラッグを生成する前に'pre_wp_unique_post_slug'フィルターが追加され、独自ルールでスラッグを生成する場合は従来の'wp_unique_post_slug'フィルターの代わりに使用できる。


使用例

  • $postからユニークな投稿スラッグを取得する。
    <?php $post_name = wp_unique_post_slug( sanitize_title( $post->post_title ), $post->ID, $post->post_status, $post->post_type, $post->post_parent ); ?>

フィルター

[5.1.0]ユニークなスラッグを生成する前に'pre_wp_unique_post_slug'フィルターを呼び出す。パラメータ$override_slugにはnullが、以降のパラメータには本関数が受け取った内容が格納されている。
$override_slug = apply_filters( 'pre_wp_unique_post_slug', $override_slug, $slug, $post_ID, $post_status, $post_type, $post_parent );
[3.3.0]ユニークになった投稿スラッグを返す直前に'wp_unique_post_slug'フィルターを呼び出す。パラメータ$slugはユニークになった投稿スラッグ、$original_slugは本関数のパラメータ$slugの内容が格納される。
return apply_filters( 'wp_unique_post_slug', $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug );

アクション

直接実行するアクションはありません。

ソースファイル

/wp-includes/post.php

最終更新 : 2019年03月01日 14:51



お勧め

固定ページを投稿ページ用テンプレートファイル(single.php)で表示する(2013年7月31日 更新)

固定ページと投稿ページのデザインが共通の場合、同じ内容のsingle.phpとpage.phpを用意すれば事足りるが、デザインの修正時は二度手間になってしまう。そこで、固定ページをsingle.phpで表示するようにできないか考えてみた。

タイトルが一致する投稿を検索する(2014年2月20日 更新)

WordPressが提供する投稿ページの文字列検索機能の実現には、 query_posts関数(WP_Queryクラス)が大きな役割を担っている。ここで紹介するのは、高機能ゆえに使いこなすのが難しいquery_posts関数(WP_Queryクラス)の使用法の一例である。

フォーム内のエスケープ処理を考える(2018年10月19日 更新)

WordPressにはエスケープ処理を行う esc_html関数と esc_attr関数がある。HTML要素(タグ)の属性値ならesc_attr関数を、それ以外はesc_html関数を使うことがほとんどだが、今回esc_html関数が適していないと思われるケースに遭遇した。

ダッシュボードのフィードボックスをカスタマイズ(2011年7月8日 更新)

管理者ページのトップページ「ダッシュボード」には、「WordPress 開発者ブログ」と「WordPress フォーラム」という2つのフィードボックスが表示されている。自分のような開発者には有益な情報をもたらしているが、一般の方には必要のない情報かもしれない。今回はこのフィードボックスをカスタマイズする方法を紹介する(管理者権限)。

classic editorプラグインを試してみた(2018年12月10日 更新)

WordPress 5.0 beta1のリリースにあわせて旧エディター環境を実現できる「classic editor」(バージョン0.5.0)が公開された。自分が公開しているプラグインの一部が旧エディター環境に依存していることもあり、さっそく試してみた。WordPress 5.0正式リリースに合わせてclassic editorも1.0がリリースされたので、それについて追記しました。