特定のカテゴリの投稿にカスタムサイドバーを作成しようとしています。それはこのように見えるでしょう。
私のカテゴリ構造は次のようになります。
私がしたいのは、Sub Child 1とSub Child 2の下にすべての投稿を表示することです。具体的に、3つの投稿があり、そのうちの2つがSub Child 1の下にあり、最後の投稿がSub Child 2の下にあるとします。サブチャイルド1の下にある2つのポストをサブチャイルド1の下に表示し、3:ポストをサブチャイルド2の下にのみ表示するようにします。
私はこれをどのように行うかを理解するためにインターネット上で今2日間探していました、しかし私は私が間違っていることを得ません。
ここに私のコードと私が修正しようとしているものがあります:
<?php
$cat = get_the_category();
$catID = get_cat_ID($cat);
$subcats = get_categories('child_of=' . $catID);
foreach($subcats as $subcat) {
echo '<h3>';
echo '<a href="' . get_category_link($subcat->cat_ID) . '">';
echo '/' . $subcat->cat_name . '';
echo '</a></h3>';
echo '<ul>';
$subcat_posts = get_posts('cat=' . $subcat->cat_ID);
foreach($subcat_posts as $subcat_post) {
$postID = $subcat_post->ID;
echo '<li>';
echo '<a href="' . get_permalink($postID) . '">';
echo get_the_title($postID);
echo '</a></li>';
}
echo '</ul>';
}
?>
何か案は?
wp_list_categories()
をwalker
と共に使用して、すべての項目に追加の番号なしリストを追加するという大きな一歩を踏み出すことができると思います。
コード :
$cat_id = get_query_var( 'cat' );
$subcats = get_categories( 'child_of=' . $cat_id ); // child categories
class Cat_Walker extends Walker_Category {
function end_el( &$output, $page, $depth = 0, $args = array() ) {
$posts = get_posts( 'cat=' . $page->term_id );
if ( sizeof( $posts ) > 0 ) {
$output .= '<ul>';
foreach ( $posts as $post ) {
$output .= sprintf( '<li><a href="%1$s">%2$s</a></li>', get_permalink( $post->ID ), $post->post_title );
}
$output .= '</ul>';
}
$output .= '</li>';
}
}
foreach ( $subcats as $subcat ) {
$subsubcats = get_categories( 'child_of=' . $subcat->term_id ); // sub child categories
foreach ( $subsubcats as $subsubcat ) {
$args = array(
'title_li' => '',
'show_option_none' => '',
'taxonomy' => 'category',
'child_of' => $subsubcat->term_id,
'walker' => new Cat_Walker( )
);
wp_list_categories( $args );
}
}
最後に、一日中検索した後..コードを集めて結合します..これはそれです:
<?php $categories = get_categories('child_of='.get_queried_object()->term_id); if(!empty($categories)):
foreach ($categories as $category) {
$category_id = $category->term_id;
query_posts('cat='.$category_id."&order=ASC");
if ( have_posts() ) :
?> <h3><?php echo $category->name; ?><span></span></h3><?php while ( have_posts() ) : the_post(); ?><ul><li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li></ul><?php endwhile;?><?php endif;
} endif; ?>
楽しめ :)
特定の親カテゴリのすべてのカテゴリとその投稿を取得するための機能
function get_cat_subcat_posts($catid){
$categories = get_categories('child_of='.$catid);
if(!empty($categories)):
foreach ($categories as $category) {
$category_id = $category->term_id;
query_posts('cat='.$category_id."&order=ASC");
if ( have_posts() ) :
?>
<div class="detail_row">
<h3><?php echo $category->name; ?><span></span></h3>
<ul>
<?php
// Start the Loop.
while ( have_posts() ) : the_post();
?>
<li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
<?php
endwhile;
?>
</ul>
</div>
<?php
endif;
wp_reset_query();
// Recall the category posts function
get_cat_subcat_posts($category_id);
}
endif;
}