カテゴリー情報の説明文にいろいろ詰め込みたい場合に、任意の固定ページの本文で情報を入力し、取得する方法。
- カテゴリー説明文をテキストエディターに変更するとか、
- カテゴリーフィールドを自作するとか、
- カテゴリー 説明文でHTMLを使えるようにするプラグインとか
方法はいろいろありますが…
取り敢えず今回は、 特定のカテゴリーだけだし。
余分なものは足さないで、WordPress が持っている機能だけでなんとかしよう
という考えから。
固定ページを利用することにしました。
手順1 カテゴリーと同じスラッグの固定ページを作る
カテゴリーのスラッグが
○○○.com/archives/category/foo/web
(「foo」を親カテゴリーに持つ子カテゴリー「web」)だとしたら、
固定ページのパーマリンクを
○○○.com/bar/web
(「bar」を親ページに持つ子ページ「web」) に設定します。
「bar」の部分は何でも良いです。
で、
○○○.com/bar/web の本文にいろいろ入力。
手順2 category.php にソースを記述
category.php の表示したい場所に、下記のソースを記述します。
条件分岐しているので、該当する固定ページがなければ、何も表示されません。
また、特定のカテゴリーにのみ対応させる場合は、category-◯◯.php にソースを記述します。
<?php $catid = get_query_var('cat');//現在のカテゴリーのIDを取得 $category = get_category($catid);//IDから現在のカテゴリーの情報を取得 $catname = $category->slug;//現在のカテゴリーのスラッグを取得 $page_data = get_page_by_path('bar/'.$catname ); //カテゴリースラッグと同じスラッグの固定ページの情報を取得 //親ページがある場合は親ページのスラッグを含める:今回の場合親ページが bar なので、bar を入力 $page_id = $page_data->ID;//取得した固定ページのIDを取得 $page = get_post($page_id, 'OBJECT' , 'raw');//ページIDから固定ぺーじのオブジェクトを取得 $page_include = apply_filters( 'the_content',$page->post_content);//ページの本文をフィルターフックで整形 ?> <?php if($page_data) : echo $page_include;//整形したコンテンツを出力 ?> <?php endif ;?>
以上です。
新規カテゴリーを作成した場合にも、カテゴリーと同じスラッグの固定ページを作成すれば、その固定ページの本文を読み込んでくれます。
その場合、固定ページは、
$page_data = get_page_by_path(‘bar/’.$catname );
で示した、 ‘bar/’.$catname と同じ階層に作成してください。
固定ページを利用する利点
- 固定ページの本文で入力できるので、編集が簡単
- もちろん画像も簡単に挿入が可能
- 管理画面のカテゴリー一覧が見やすい
(カテゴリー説明文にごちゃごちゃ表示されなくてスッキリ) - 新規カテゴリーを追加した場合でも、新たにカテゴリーテンプレートを追加することなく、カテゴリーページの生成が可能。
( 同じスラッグの固定ページを作成し、入力するだけで読み込める )
詳しく説明しますね。
通常、カテゴリーで入力できるのは、
・カテゴリー名
・スラッグ
・親カテゴリー
・説明
の4点のみ。
「説明」には、HTMLタグは使えないので、画像は入れられません。
固定ページで入力できれば、画像も簡単に挿入できるし、文字色や背景色など、装飾も可能です。
で、説明文にいろいろ文章を入れてしまうと、
こんな感じでカテゴリー情報に表示されます。
これは、 カテゴリー 説明文でHTMLを使えるようにするプラグイン を使っても同じ。
たくさん書けば書くほど、ダラダラと表示されてしまい、イメージタグを入力すれば、なお見難い。
固定ページを利用すれば、カテゴリー一覧もスッキリ!
更に。
新規カテゴリーを作成するたびに、どのページの情報を読み込むか、カテゴリー毎にテンプレートを作成する必要もありません。
テンプレートもスッキリ!
新規カテゴリーを作成した場合にも、カテゴリーと同じスラッグの固定ページを作成すれば、その固定ページの本文を読み込んでくれます。
その場合、固定ページは、
$page_data = get_page_by_path(‘bar/’.$catname );
で示した、 ‘bar/’.$catname と同じ階層に作成してください。