WordPressのget_the_category()でカテゴリの記事一覧表示がうまくいかないを解決
Wordpress

こんにちは。レジット代表の浅井です。

 

ご好評につき、制作案件が増えてきております。

リピート率100%!!感謝致します。

 

忙しくて制作に関するブログがアップされていないので、今回はワードプレスで困ったお話です。

 

WordPressで投稿記事が属するカテゴリーを表示するパンくず

WordPressで投稿記事が属するカテゴリーを表示するパンくず

 

弊社、ブログをご覧になって気付いた方もいらっしゃると思いますが、実はうまく表示ができている時とできていない時がありましたw

 

ちなみに、うまく行っていなかったソースは以下です。

<?php $cat = get_the_category(); echo get_category_parents($cat[0], true, ' &raquo; '), 'この記事'; ?>

 

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";
 }
?>

 

困ったらやっぱりフォーラムですね。

 

レジットに相談してみる
この記事をシェアする
一覧へ戻る