
現在メインカラムに表示している記事があるとします。
サイドバーにはその記事が属するタームの親タームの子ターム、つまり記事が属するタームの兄弟タームを表示して、記事が属するタームにはクラスを付与、しかもタームの並び替えも任意でしてみようと思います。
タームの並び替えはプラグイン Category Order and Taxonomy Terms Order がおすすめです。このプラグインを使えば、WordPress管理画面でドラッグ&ドロップでカテゴリやタームの順番を替えることができて超簡単です。Category Order and Taxonomy Terms Order の’orderby’ は ‘term_order’ を使います。
テーマの sidebar.php に以下を記述します。
<?php
$taxonomy = 'blog_cat'; //タクソノミー
$taxonomy_terms = wp_get_object_terms($post->ID, $taxonomy);
$the_term = $taxonomy_terms[0];
$term_slug = $taxonomy_terms[0]->slug; //タームスラッグ
$ancestors = get_ancestors( $the_term->term_id, $taxonomy ); //現在のタームの親を取得
if ( $ancestors ) {
$ancestor_id = end( $ancestors );
} else {
$ancestor_id = $the_term->term_id;
}
$args = array(
'parent' => $ancestor_id,
'orderby' => 'term_order',
'order' => 'ASC'
);
$terms = get_terms( $taxonomy, $args ); //兄弟ターム一覧取得
?>
<?php if ( $terms ) { ?>
<div>
<div><h4>カテゴリ</h4></div>
<ul>
<?php foreach ( $terms as $term ) {
$term_name = $term->name;
$blog_cat_link = get_term_link( $term->slug, $taxonomy );
$class = '';
if ( $term->term_id == $the_term->term_id ) {
$class = 'current-menu-item'; //現在記事の属するタームにクラスを付与
} ?>
<li class="<?php echo $class; ?>"><a href="<?php echo $blog_cat_link; ?>"><?php echo $term_name; ?></a></li>
<?php } ?>
</ul>
</div>
<?php } ?>
以上で完成です。
が、もしこの状態でタームのリンクがデッドリンクになるなど正しくリンクしない方がいたら、それはタクソノミーのスラッグをカスタム投稿タイプと同じにしている方かもしれません。
その場合はパーマリンク設定をカスタマイズできるプラグインをインストールしましょう。
本事例集でおなじみの「Custom Post Type Permalinks」です。これをインストール&有効化してください。
そして、カスタム投稿タイプ「blog」のパーマリンクの設定をします。
管理画面メニュー[設定 – パーマリンク設定]のカスタム投稿タイプのパーマリンク設定にてblogのパーマリンク入力欄に
/%blog_cat%/%post_id%/
と入力して「変更を保存」します。
現在あなたが利用されているWordPressテーマを活かしたまま、このページの事例を解決できるWordPressテーマを、子テーマとして購入できます。
この子テーマを有効化するだけで、現在お使いのデザインテーマにこの事例解決の機能が自動付与されます。
デザインが入っていないため、一般より格段に低い価格(事例の難易度により200円~1.3万円)です。
※ テーマは買い切りです
※ 自由に改変してお使いいただいて構いません
※ すでに子テーマでサイト運用されている方は、当該子テーマをマージしてください
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!