WordPressテーマを自作した時にカテゴリーをもっと活かそうと思いました。そしてカテゴリーリストも記事内容によって柔軟に変えました。今回もプラグインを使わない方法を紹介します。
ゆめぴょんです。こんちはっ(^^)/
今回はPC版のWordPressテーマについての記事です。スマホ版のデザインにおけるカテゴリーについては、下の記事でくわしく説明していますので参考にしてみてください。PC版でも使えるテク満載です。
ちなみに上の記事の最後で「いま読んでいる記事のカテゴリーに応じて、表示するカテゴリーの順番も変えた方がいい」と書きましたが、その後スマホ版でも実現しています。この方法は後ほど紹介します。
この記事は「WordPressプラグインはずし特集」の第3弾です。1,2弾目に比べると外すプラグインは低負荷ですがメリットもあります。今までの特集記事は全て下のリンクにまとめています。
カテゴリーの順番を柔軟に変更するメリット
私のこのブログだけでなく、最近はやりのブログは多ジャンル・カテゴリーを扱うものが増えています。iPhoneアプリの紹介、美味しい店の情報、子育て記録、旅行記、ブログ論が1つのブログで語られます。
そうすることにより、ブログを書いた人に関心が持てて「セルフ・ブランディング」に結びつけることができます。すると更にファンが増えてくるという好循環を生みます。
ただ検索エンジンからブログに辿り着いた人は、ほしい情報だけ読むと去っていくのが大半です。私のブログの場合は80%近くがこういう人達です。
例えば「WordPressプラグイン」を探しに来た人は、「海外旅行」「アニメ感想」に興味ある可能性は低いです。ただ「ChromeやiPhoneのアプリ」には関心があるかもしれません。
そこで、いま読んでいる記事の内容によって、表示するカテゴリーリストの順番を並べ替えるのは、「お・も・て・な・し」にも通じるのではないかと思います。
カテゴリー構造化の有効性については、下の記事も参考にしてみてください。
今回はずせるWordPressプラグイン
今回はたった1つだけWordPressプラグインを外せます。「Category Order」というカテゴリーの順番を自由に変更できるプラグインです。
私は今回このプラグインを外しましたが、サイドバーのウィジェットのカテゴリーリストの順番も好みに変更できるため、とても便利です。詳しくは下の記事を参考にしてみてください。
ところでこのプラグイン、もう6年近くも更新されてないようです。今のところ不具合はなかったけど、いつ動かなくなるかわかりません。
自力でカテゴリーリストを好みの順番にする方法
今回はかなりゴリ押しに近いです。単純にカテゴリーを順番に並べてliタグに入れただけです。
テーマファイル「functions.php」を編集します。WordPressで最重要ファイルです。修正前には必ずバックアップをとってください。もし問題が起こったらすぐ元に戻してください。全て自己責任でお願いします。
下のコードをテーマファイル「functions.php」にコピペしてください。今回は私のカテゴリー構成の一部を例として記入しました。リストの順番は2種類だけ用意しました。
[php]
function category_order() {
$cat = get_the_category();
switch ($cat[0]->slug) {
case “blog” :
case “wordpress” :
case “wordpress-plugin” :
$cate_list = ‘
‘;
break;
default:
$cate_list = ‘
‘;
}
return $cate_list;
}
[/php]
「●●●.com」やカテゴリーページへのURL、カテゴリー名などはあなたのブログのものに置き換えてください。
表示している記事が「’blog’」「’wordpress’」「’wordpress-plugin’」の時だけは、それらを上位にしたリストを出力します。
もちろん「’blog’」「’wordpress’」などには、あなたのブログのカテゴリーのスラッグ(urlで表示されるカテゴリー名)を入力してくださいね。
複数カテゴリーに所属している場合は、最初のカテゴリーのみで判定しています。私のブログはこれで問題ないけど、全く違うジャンルの複数カテゴリーに所属している場合は、優先カテゴリを決めるコードが必要になるかも。
子カテゴリーの場合は、class名として「cate-child」を割り当てましたので、CSSでインデントなどの装飾を施すことができます。
あとはカテゴリーリストを表示したい場所に「$cate_list」を出力するだけです。その方法についてもこの記事の先で書いています。
カテゴリーの順番を他の場所で流用する場合のコード
私は同じカテゴリ情報を「グローバルナビゲーション」「パンくずリスト」などでも利用するつもりなので配列化($cate_order_slug)して、後で利用できるようにしました。
[php]
function category_order() {
global $cate_order_slug;
$cat = get_the_category();
switch ($cat[0]->slug) {
case “blog” :
case “wordpress” :
case “wordpress-plugin” :
$cate_order_slug = array(
‘blog’,
‘wordpress’,
‘wordpress-plugin’,
‘review’,
‘movie’,
‘anime’);
break;
default:
$cate_order_slug = array(
‘review’,
‘movie’,
‘anime’,
‘blog’,
‘wordpress’,
‘wordpress-plugin’);
}
$cate_list = “”;
foreach( $cate_order_slug as $slug_order ) {
$cate_by_slug = get_category_by_slug( $slug_order );
if( $cate_by_slug->parent !=0 ){ $cate_list .= “
else{ $cate_list .= “
$cate_list .= “