WordPress 特定カテゴリのみのサイトマップの作成方法

google+ はてなブックマーク
2015年4月2日3:36 PM|WordPress テーマ

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を開き、一番上の行に以下を追加。

<?php
/*
Template Name: ETC SITEMAP
*/
?>

ETC SITEMAPは、テンプレート名になるので、何か判りやすい名前でどうぞ。

固定ページのテンプレートについて、詳しくは、私の別ブログの記事を見てください。
WordPressでページによってテンプレートを変更する場合 – サツぽろ、ニッキ。

2.特定カテゴリの表示を追加する

page-etcsitemap.phpを開き、以下を追加する。

<?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 }; ?>

追加するのはテーマにもよるけど

<?php the_content(); ?>

の後。

追加した内容で、各変更する場所は以下の2つ。

$args=array(‘orderby’ => ‘name‘, ‘order’ => ‘DESC‘ , ‘exclude’ => ‘1,2,3,4‘ );

‘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 日本語版

global $post;$myposts = get_posts(‘numberposts=100&category=’ .

numberposts=100は最大表示する記事数。
必要に応じて100から増やすのがいいと思う。

3.作成したテンプレートで固定ページを表示する

2で修正したテンプレートをテーマファイルデレクトリにアップロードする。
管理画面にログインし、新規固定ページを作成。

特定カテゴリサイトマップ

ページ属性のテンプレートから先程作成した「ETC SITEMAP」を選択し、一度下書き保存。

これで、カテゴリが表示されると思う。
サイトマップは便利なプラグインもあるのだけど、それとは記事一覧を出したいという事もある。
そんな時にこの表示は便利かも。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です