WordPressのサイトマップとは別に、特定カテゴリのみのサイトマップを作りたい。
そんな場合の固定ページに指定カテゴリ別の記事一覧の作り方をメモ。
実は、以前にも同じような記事をメモしているのだけど。
(詳しくは私の別ブログに書かれているのでどうぞ。)WordPressの固定ページに特定カテゴリの記事一覧を書き出す – サツぽろ、ニッキ。
今回は
・カテゴリが増える予定がある
・カテゴリ名からカテゴリアーカイブにリンクしたい
という事で、もっと別な方法はないのかなと調べてみた。
すると、以下サイトにサイトマップの詳しい記事が。
参考サイト:
オンズ » 【WordPress】プラグイン無しでサイトマップを追加する方法。
【WordPress】 サイトマップを作る
これを使えば、以前のものを直すより早いはず…。
参考サイトの方は、固定ページのスラッグを入れないと表示できないようになっているけど、今回はテンプレートを選ぶのみで表示出来る方がいいかな。
説明がややこしいので、例として以下のようなカテゴリのサイトとする。
例)
・食べ物(id=1)
・洋食(id=2)
・中華(id=3)
・和食(id=4)
・その他(id=10)
・雑談(id=11)
・Mac(id=12)
・…(増える予定あり)
表示したいのは「食べ物」以外、「その他」のカテゴリのサイトマップ。
特定カテゴリのサイトマップ作成
1.サイトマップ専用の固定ページテンプレートを作成
2.特定カテゴリの表示を追加する
3.作成したテンプレートで固定ページを表示する
1.サイトマップ専用の固定ページテンプレートを作成
テーマファイル内のpage.phpを複製し、page-etcsitemap.phpを作成。
etcsitemapの部分は判りやすい名前なら何でもいいです。
page-etcsitemap.phpを開き、一番上の行に以下を追加。
/*
Template Name: ETC SITEMAP
*/
?>
ETC SITEMAPは、テンプレート名になるので、何か判りやすい名前でどうぞ。
固定ページのテンプレートについて、詳しくは、私の別ブログの記事を見てください。
WordPressでページによってテンプレートを変更する場合 – サツぽろ、ニッキ。
2.特定カテゴリの表示を追加する
page-etcsitemap.phpを開き、以下を追加する。
$args=array(‘orderby’ => ‘name‘, ‘order’ => ‘DESC‘ , ‘exclude’ => ‘1,2,3,4‘ );
$categories=get_categories($args);
foreach($categories as $category) {echo ‘<h3><a href="’ . get_category_link( $category->term_id ) . ‘" title="’ . sprintf( __( "View all posts in %s" ), $category->name ) . ‘"’ . ‘>’ . $category->name.'</a></h3>’;
?>
<ul>
<?php
global $post;$myposts = get_posts(‘numberposts=100&category=’ . $category->term_id);
foreach($myposts as $post) : setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
<?php }; ?>
追加するのはテーマにもよるけど
の後。
追加した内容で、各変更する場所は以下の2つ。
‘orderby’ => ‘name‘
記事の表示順。この場合はnameなので名前順(初期値)。
‘order’ => ‘DESC‘
記事の並び順。この場合はDESCなので降順。昇順はASC。
‘exclude’ => ‘1,2,3,4‘
表示除外のカテゴリ。この場合はカテゴリIDの1,2,3,4を除外して表示。
今回は、カテゴリが増える可能性があるので、除外指定して、残りを表示としている。
表示するカテゴリが増える可能性がないのであれば、代わりに
‘include’ => ‘1,2,3,4‘
とすると、1,2,3,4が表示される。
関数のパラメータのについて詳しくは以下をどうぞ。
関数リファレンス/get categories – WordPress Codex 日本語版
numberposts=100は最大表示する記事数。
必要に応じて100から増やすのがいいと思う。
3.作成したテンプレートで固定ページを表示する
2で修正したテンプレートをテーマファイルデレクトリにアップロードする。
管理画面にログインし、新規固定ページを作成。
ページ属性のテンプレートから先程作成した「ETC SITEMAP」を選択し、一度下書き保存。
これで、カテゴリが表示されると思う。
サイトマップは便利なプラグインもあるのだけど、それとは記事一覧を出したいという事もある。
そんな時にこの表示は便利かも。