特定の投稿者が投稿した記事のカテゴリー一覧を取得した
-
投稿者ページにて、その投稿者が投稿した記事が存在するカテゴリを一覧で表示したいのですが、どのようにすれば良いでしょうか?
wp_list_categoriesの引数で指定できるかと思ったのですが、見当たらず・・
お手数おかけしますが、ご教授ください。
-
Twentyfourteenテーマのauthor.phpに下記のコードを足して表示できました。
スマートなコードではありませんが、ちゃんと動きます。<?php if ( get_the_author_meta( 'description' ) ) : ?> <div class="author-description"><?php the_author_meta( 'description' ); ?></div> <?php endif; ?> </header><!-- .archive-header --> <ul> <!-- ここから --> <?php /* この投稿者が投稿した記事が存在するカテゴリーを一覧で表示する */ $aid = get_the_author_meta( 'ID' ); $cats = get_categories( 'orderby=name&order=ASC' ); foreach( $cats as $cat ) { $args = array( 'posts_per_page' => 1, 'category' => $cat->term_id, 'author' => $aid ); if( count( get_posts( $args ) ) > 0 ) printf( "<li>%s</li>", $cat->name ); wp_reset_query(); } ?> </ul> <!-- ここまで --> <?php /* * Since we called the_post() above, we need to rewind * the loop back to the beginning that way we can run * the loop properly, in full. */ rewind_posts();
ご返信が遅くなり、申し訳ありませんでした。
コードのご呈示、ありがとうございます、試させていただきます。
ghvst様
コード確認させていただきました。
確かに、authorの書いた投稿があるカテゴリのみリスト表示されました。カテゴリが階層化されているのですが、wp_list_categoriesのように、子カテゴリは親liの中にul > liとして表示したいのですが、どのようにすればいいでしょうか?
wordpress coreファイルのwp-includes/category-template.phpのfunction wp_list_categories()をベースにghvst様に頂いたコードのように修正すればなんとか出来るかと思ったのですが、私の力量ではコードを追っていくのが精一杯で、挫折してしまいました。
大変お手数ですが、階層化されたカテゴリに対応出来るコードをご教授いただけないでしょうか??
大変お手数ですが、階層化されたカテゴリに対応出来るコードをご教授いただけないでしょうか??
私も
function wp_list_categories()
を読み始めてみましたが、同様に挫折しました。ghvst様
そうでしたか、わざわざありがとうございます。
結果的に、いろいろなところで拾ったコードをつぎはぎして、なんとか実現できました
<ul> <?php $aid = get_the_author_meta( 'ID' ); $cats = get_categories( 'orderby=name&order=ASC&parent=0' ); foreach( $cats as $cat ) { $args = array( 'posts_per_page' => 1, 'category' => $cat->term_id, 'author' => $aid ); if( count( get_posts( $args ) ) > 0 ){ $v_cat_id = $cat->cat_ID; $v_cat_Parent_title = $cat->cat_name; $v_cat_Parent_t_a = wp_specialchars($v_cat_Parent_title); $v_cat_Parent_t_u = attribute_escape($v_cat_Parent_title); $v_cat_Parent_url = get_category_link($v_cat_id); $v_cat_childs_list = get_categories(array( 'parent'=>$v_cat_id, )); echo "<li><a href=\"$v_cat_Parent_url\" title=\"$v_cat_Parent_t_u\">$v_cat_Parent_t_a</a></li>\n"; echo "<ul class='sub_cat'>"; foreach( $v_cat_childs_list as $v_cat_child ) { $v_cat_child_id = $v_cat_child->cat_ID; $v_cat_child_title = $v_cat_child->cat_name; $v_cat_child_t_a = wp_specialchars($v_cat_child_title); $v_cat_child_t_u = attribute_escape($v_cat_child_title); $v_cat_child_url = get_category_link($v_cat_child_id); $args = array( 'posts_per_page' => 1, 'category' => $v_cat_child->term_id, 'author' => $aid ); if( count( get_posts( $args ) ) > 0 ){ echo "<li><a href=\"$v_cat_child_url\" title=\"$v_cat_child_t_u\">$v_cat_child_t_a</a></li>\n"; } } echo "</ul>"; } wp_reset_query(); } ?> </ul>
よけいスマートじゃ無いコードになってしまいましたが、想定通りの動きをしているので、とりあえずこれでいこうとおもいます。(どういう処理をしているのか、自分でもよく分からなくなってしまっていますがw)
ご協力いただきまして、ありがとう御座います。
- トピック「特定の投稿者が投稿した記事のカテゴリー一覧を取得した」には新たに返信することはできません。