気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. WordPressのPHP
  2. 49 view

is_singleはカスタム投稿タイプの条件分岐には効かない

WordPressのテンプレートで特定のカスタム投稿タイプのときだけ処理を実行したい場合、is_singleを使った条件分岐を思い付きますがうまく利きません。

次の例では、「おすすめ店」を管理する「shops」というカスタム投稿タイプのときだけ何かを表示するため、is_singleで条件分岐を作成しています。

if (is_single('shops')) {
…何かを表示する…
}

非常に紛らわしいので注意してください。is_single自体には投稿とカスタム投稿が含まれますが、「is_single(カスタム投稿タイプ)」という書式ではありません。「is_single(ID・スラッグまたはタイトル)」になります。

if (is_single(ID・スラッグまたはタイトル)) {
…何かを表示する…
}

この使い方は、特定の投稿を識別する用途になります。

次の使い方はうまくいきません。

if (is_single(カスタム投稿タイプ)) {
…何かを表示する…
}

特定のカスタム投稿タイプを条件に分岐させたい場合はis_singleの代わりにis_singularを使います。

if (is_singular('shops')) {
…何かを表示する…
}

つまり、

  • is_singular(投稿タイプ) — 指定した投稿タイプかどうか調べる
  • is_single(投稿ID) — 指定した投稿(ID・スラッグ・タイトル)かどうか調べる

のように異なります。

最後にさらに紛らわしいことを書きますが、パラメータなしで呼び出した場合、それぞれの関数は次のデータにヒットします。

  • is_singular() — 投稿・カスタム投稿の個別記事および固定ページ・添付ファイル
  • is_single() — 投稿・カスタム投稿の個別記事

詳しくは、以下のページも参考にしてください。

関数リファレンス/is_single – WordPress Codex 日本語版
関数リファレンス/is_singular – WordPress Codex 日本語版

WordPressのPHPの最近記事

  1. WordPressダッシュボードのメニューを非表示にするremove_menu_page関…

  2. WordPressで中身が空のindex.phpは消しても大丈夫?

  3. WordPressのPHPでショートコードを呼び出す方法

  4. is_categoryとin_categoryの違い

  5. wp_get_attachment_image_src関数の使用例

関連記事

PAGE TOP