表示タイプを(ほぼ)全部判別する条件分岐

ワードプレス

表示タイプを判別する条件分岐を整理したのでメモ。

ソース

<div class="template-info" style="position: fixed; top: 0; left: 0; z-index: 999; font-weight: bold; color: #FFF; padding: 1rem; background-color: #F00;">
<p>[
<?php if(is_front_page() ): ?>
フロントページ
<?php elseif(is_page( 'contact' ) ): ?>
お問い合わせページ
<?php elseif(is_page() ): ?>
ページ
<?php elseif( is_home() ): ?>
標準投稿トップ
<?php elseif(is_tax() ): ?>
カスタム投稿:タクソノミー
<?php elseif(is_post_type_archive()): ?>
	<?php if(is_date()): ?>
カスタム投稿:年月日
	<?php else: ?>
カスタム投稿アーカイブ
	<?php endif; ?>
<?php elseif( is_category() ): ?>
標準投稿:カテゴリー
<?php elseif( is_tag() ): ?>
標準投稿:タグ
<?php elseif(is_author()): ?>
標準投稿:投稿者
<?php elseif( is_archive() ): ?>
	<?php if(is_day()): ?>
標準投稿:日毎
	<?php elseif(is_month()): ?>
標準投稿:月毎
	<?php elseif(is_year()):?>
標準投稿:年毎
	<?php else: ?>
標準投稿アーカイブ
	<?php endif; ?>
<?php elseif(is_attachment()): ?>
画像添付(アタッチメント)
<?php elseif(is_single()): ?>
	<?php if(get_post_type() == 'post'): ?>
標準投稿シングル
	<?php else: ?>
カスタム投稿シングル
	<?php endif; ?>
<?php elseif(is_404()): ?>
404
<?php elseif(is_search()): ?>
検索結果
<?php else : ?>
そのほか
<?php endif; ?>
]タイプ</p>
</div>

プラグイン(Breadcrumb NavXT)を使わずにパンくずリストを生成する必要に迫られ、表示パターンをすべて洗い出せるような条件分岐を試作。

「そのほか」が表示されなければ万々歳。ざっと確認したところ、まだ未遭遇。

詳細

順番

分岐の順序を変えると判定できなくなる箇所がところどころあります。

404なんかはどこでも関係ないですが、画像添付はシングルの判定前、とか。

標準投稿

ちょいちょい出てくる「標準投稿」は、デフォルトの投稿。ポストタイプ名は「post」

1行目、ブロック、スタイル

ここは何でもいい、なんなら無くてもいい。ここでは、テスト環境で使うため目立つ位置に。

3行目、トップページの判別

これは、固定ページ、ブログのアーカイブトップ問わず、カスタマイザーなどでサイトのトップに指定してあるモノが該当。

ブログのトップを判定するタグは無いみたいなので、「is_page()」「is_home()」と併せて使います。

5行目、お問い合わせページの判別

パンくずには関係ないですが、meta description/keywordなどに転用する場合は必要になってくるので一応。(お問い合わせページにはショートコードしか書いてない場合とか結構ある)

14行目、カスタム投稿タイプの日付判定

年月日、まとめて判定しています。

カスタム投稿タイプの年月日別パンくずリンクはとってもメンドクサイので、まとめて投稿タイプトップに飛ばす所存。ほんとはきちんと作りたいけど。

35行目、画像添付

これ、使ったことないです。一応テンプレートは用意していますが、フルサイズ表示のリンクとか、ライトボックスでポップアップ、ぐらいしか使わない。

どう活用するのか?と「image.php」「is_attachment()」とかで検索してみると、「無効にする」Tipsばっかり出てきます。

完全に使わないならココはカットで。

どう使うか

当初の目的の「パンくずリスト」以外に、ヘッダーのメタ情報、各テンプレートにタイプ別のCSSクラスを追加、などパッと思いつくのはこんな感じ。

また、おおよそ条件ごとに対応するテンプレートがあるので、組み合わせていろいろ制御、など。

 

ほかに、

  1. テンプレート内に書いておいて、
  2. よく使う変数を取得しておき、
  3. 各タイプのテンプレートから呼び出して使う。

なんてことも思いつきますが、これはほぼNG。

「get_template_part()」で呼び出したファイルの変数は基本的に参照できない仕様。

この仕様のおかげで誤動作も少ないのでしょうけれど。

 

とても簡素なパンくずリスト」に続きます。