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";
}
?>
困ったらやっぱりフォーラムですね。
