WordPress で投稿した記事の表示方法には 2 通りあります。1 つは全文表示。もう 1 つは抜粋表示です。
使い分けとしては、、、
- トップページやアーカイブページなどでは抜粋表示
- 記事全文を読みたい場合の個別投稿ページでは全文表示
というのがベターだと思います。
しかし、WordPress のデフォルトテンプレートである Twenty Eleven や Twenty Twelve など、初期設定のままだとトップページやアーカイブページでも全文表示なっているます。いちいち タグを挿し込むのも面倒くさい・・・。他のテンプレートでも同じようになっているかもしれません。
この記事では、条件分岐タグを使って全文表示と抜粋表示を使い分ける方法をご紹介します。
条件分岐タグの役割を理解しよう
まず、簡単にWordPressの条件分岐タグについて説明しておきたいと思います。理屈はそんなに難しくないはずです。PHPを使っていますが、特に専門的な知識がなくても使えてしまう便利さがあります。(少なくともぼくはPHP、よく分っていません)
条件分岐タグの基本構造は・・・
というものです。簡単ですよね?これを実際のPHPのタグに合わせて見てみましょう。
<?php if ( 【条件1】 ) : ?> 【表示1】 <?php else : ?> 【表示2】 <?php endif; ?>
もし | <?php if ( 【条件1】 ) : ?> |
【表示1】 | 任意のタグ |
それ以外は | <?php else : ?> |
【表示2】 | 任意のタグ |
条件指定終わり | <?php endif; ?> |
といった感じです。あとは、これらを踏まえて指定したい条件と表示させたい内容のタグを埋め込んでいけばいいというわけです。
条件を複数指定したい場合
条件を複数指定したい場合は、【 || 】この縦2本のラインを挟めばOKです。例えば、「もし、【条件1】【条件2】【条件3】の場合は・・・」というような指定をしたい場合は以下のように指定します。
<?php if ( 【条件1】 || 【条件2】 || 【条件3】 ) : ?>
多分、抜粋表示をさせたいのはカテゴリーページやタグページなど、複数に渡るはずなので、この複数の条件指定を覚えておきましょう。
ちなみに、この線( → | )なんて呼ぶのか分りませんが、キーボードの右上にあるはずです。。。
条件分岐タグを使って全文表示と抜粋表示を切り替える
さて、いよいよ実践です。今回は以下のように指定したいと思います。
抜粋表示 | トップページ(投稿一覧) アーカイブページ(archive.php) 検索結果一覧ページ(search.php) |
---|---|
全文表示 | 個別投稿ページ(single.php) 固定ページ(page.php)など |
つまり、文章にしてみると、『もし、トップページ・アーカイブページ・検索結果エページの場合は抜粋表示にして、それ以外の場合は全文表示にしてね』となります。
ちなみに、アーカイブページとは、「カテゴリーページ」・「タグページ」・「作成別ページ」・「日付別ページ」の結果を全て含んでいます。なので、条件としてはアーカイブページを指定しておけばOKです。
全文と抜粋を着替える条件分岐タグの指定例
全文表示と抜粋表示の切り替えを指定するためには以下のように記述します。
<?php if ( is_home() || is_archive() || is_search() ) : ?> <?php the_excerpt(); ?> <?php else : ?> <?php the_content(); ?> <?php endif; ?>
ちなみに、トップページを指定する WordPress の条件分岐タグは
is_home()
カテゴリーページを指定する条件分岐タグは
is_archive()
検索結果一覧ページを指定する条件分岐タグは
is_search()
です。
また、抜粋表示を示す WordPress のタグは
<?php the_excerpt(); ?>
全文表示を示すタグは
<?php the_content(); ?>
です。実際はスタイルシートの指定やその他の PHP が記述されていると思いますが、単純化するとこのようになっています。
タグはどこに書き込めばいいのか?
ここからは Twenty Eleven、もしくは Twenty Twelve を元に解説していきます。条件指定の仕方は WordPress 共通していますので、お使いのテンプレートに合わせてカスタマイズしてみてください。
それでは、まずは content.php を開きましょう。Twenty Eleven は 35 行目、Twenty Twelve は 33 行目辺りから、コンテンツの表示方法についての記述があります(子テーマに複製してから作業してくださいね)。
<?php if ( is_search() ) : // Only display Excerpts for Search ?> <div class="entry-summary"> <?php the_excerpt(); ?> </div><!-- .entry-summary --> <?php else : ?> <div class="entry-content"> <?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?> <?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pages:', 'twentyeleven' ) . '</span>', 'after' => '</div>' ) ); ?> </div><!-- .entry-content --> <?php endif; ?>
元々の記述内容は、『もし、検索結果一覧ページなら抜粋表示にして、それ以外は全文表示にしてね〜』となっています。なので、単純に最初の
<?php if ( is_search() ) : // Only display Excerpts for Search ?>
の部分を
<?php if ( is_search() || is_home() || is_archive() ) : // Only display Excerpts for Search ?>
に変更すれば OK です。
簡単ですね。ぜひ試してみてください。
コメントを残す