【Twenty Seventeenのちょこっとカスタマイズ】投稿ページに表示される記事を絞り込む


前回に引き続き、Wordpressの新テーマ、Twenty Seventeenのカスタマイズについて。

フロントページに表示される記事一覧をあるカテゴリーに絞り込むことは出来たのですが、そうすると該当ページ(news)をクリックした時にはまだ全カテゴリーの記事が表示されてしまう事態が起きます。

これに対応するために、index.phpを弄ります。(なぜindex.phpなのかは前記事のプラス解説を参照してください。)

/wp-content/themes/twentyseventeen/index.php

を子テーマにコピーして

				/* Start the Loop */
				while ( have_posts() ) : the_post();

					/*
					 * Include the Post-Format-specific template for the content.
					 * If you want to override this in a child theme, then include a file
					 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
					 */
					get_template_part( 'template-parts/post/content', get_post_format() );

				endwhile;

ここのWhile文の中に条件を付け加えます。

コメントもとっぱらって、

				while ( have_posts() ) : the_post();
                    			if (in_category("news")) {
						get_template_part( 'template-parts/post/content', get_post_format() );
                    			}
				endwhile;

こんな感じに。

in_category(“slug”)またはin_category(id)で、投稿がそのカテゴリーに含まれるかどうかがチェックできます(参照:関数リファレンス/in category – WordPress Codex 日本語版)。

これで、newsページをクリックしても全記事ではなくニュースカテゴリーに入っている記事だけが表示されるようになります。

プラス解説

in_category()によく似た関数に、is_category()というのがあって、こちらは

カテゴリーアーカイブページであれば true、そうでなければ false

なので投稿のチェックにはなりませんので要注意。

さて、カテゴリーをしぼり込んだわけですが、ということは他のカテゴリーの記事を表示するページが必要になります。
でもカテゴリーなわけなので、カテゴリーの記事一覧を指定してあげれば問題ないはず。

・・・とここまで書いてきてやっと気が付きましたが、そもそもindex.phpをイジらなくても

yoursite.com/news

というURLを使わせずに、

yoursite.com/category/news

を見てもらえば良いわけですね。そうだったー。

つまり、メニューで固定ページへのリンクを使わずに、カテゴリーへのリンクを使えばいいというわけです。(メニューの編集方法は公式サイトなどを参照のこと

後は念のために、

yoursite.com/news

へのアクセスを切り替えれば良いのかなあ。別に要らない気もしますが(気になる方は上のようにindex.phpをいじっちゃえば良いし、.htaccess使うとか色々と方法はあります)。

それより、カテゴリー一覧だと、タイトルに「カテゴリー: ニュース」みたいに出ちゃうのをなんとかしましょうかね。ここねー、spanタグでも挟んでくれれば良いのに素で出力してくれちゃうという、wordpressさんの中の人に真意を聞きたいポイントの一つです。次回はここを書いてみたいと思います。


この記事を書いた人