WordPressのget_the_category()でカテゴリの記事一覧表示がうまくいかないを解決
Wordpress
こんにちは。レジット代表の浅井です。
ご好評につき、制作案件が増えてきております。
リピート率100%!!感謝致します。
忙しくて制作に関するブログがアップされていないので、今回はワードプレスで困ったお話です。
WordPressで投稿記事が属するカテゴリーを表示するパンくず
弊社、ブログをご覧になって気付いた方もいらっしゃると思いますが、実はうまく表示ができている時とできていない時がありましたw
ちなみに、うまく行っていなかったソースは以下です。
<?php $cat = get_the_category(); echo get_category_parents($cat[0], true, ' » '), 'この記事'; ?>
WordPressで投稿記事が属するカテゴリーを取得する get_the_category は、属するカテゴリーをカテゴリーの名前順で取得してくるようです。
それが原因でget_category_parents がうまく反応しないことがわかりました。
正しいパンくずリストを表示する方法
参考サイト:http://ja.forums.wordpress.org/topic/8095
<dl> <?php $args = array('orderby' => 'ID'); $terms = wp_get_post_terms( $post->ID , 'category', $args); $html = '<dd>:<a href="%1$s" title="%2$s">%3$s</a></dd>'; $colon = array(); $result = array(); /*表示したいIDを列挙*/ $ids = array(1,2,3); /*親カテゴリ名を取得*/ foreach($terms as $key=>$term){ foreach($ids as $id){ if($key== 0){ //loopの最初 $result[$id] = '<dt>'.get_category_parents($id, true,'').'</dt>'; $colon[$id] = false; } if(cat_is_ancestor_of($id, $term)){ $result[$id] .= sprintf( $html, esc_url(get_term_link($term, 'category')), sprintf( __( "%s" ), esc_attr($term->name)), esc_html($term->name)); $coron[$id] = true; } if($key == count($terms) - 1){ //loopの最後 if($coron[$id] == false){ $result[$id] .= '<dd>:</dd>'; } } } } // 表示 array_walk($result, 'print_named_array'); function print_named_array($item, $key){ echo $item."n"; } ?>
困ったらやっぱりフォーラムですね。