Ich versuche, eine benutzerdefinierte Seitenleiste für meine Posts in bestimmten Kategorien zu erstellen. Es wird ungefähr so aussehen.
Meine Kategoriestruktur sieht so aus:
Was ich tun möchte, ist, alle Beiträge unter Sub Child 1 und 2 anzuzeigen. Ich werde genauer sagen, wir haben 3 Beiträge, von denen sich 2 unter Sub Child 1 und der letzte unter Sub Child 2 befinden. Dann bin ich nur möchten, dass die 2 Beiträge, die sich unter Untergeordnetem 1 befinden, unter Untergeordnetem 1 und der 3. Beitrag nur unter Untergeordnetem 2 angezeigt werden.
Ich habe in 2 Tagen über das Internet gesucht, um herauszufinden, wie man das macht, aber ich verstehe nicht, was ich falsch mache.
Hier ist mein Code und was ich zu ändern versuche:
<?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>';
}
?>
Irgendwelche Ideen?
Ich vermute, Sie könnten einen großen Schritt machen, indem Sie wp_list_categories()
mit einem walker
verwenden, um jedem Element eine zusätzliche ungeordnete Liste hinzuzufügen.
Der Code :
$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 );
}
}
Nachdem Sie den ganzen Tag lang gesucht haben, sammeln und kombinieren Sie den Code.
<?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; ?>
geniesse es :)
Funktion zum Abrufen aller Kategorien und ihres Beitrags für eine bestimmte übergeordnete Kategorie
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;
}