wake-up-neo.com

Alle Beiträge unter der Unterkategorie "Kind" in der Seitenleiste auf der Beitragsseite anzeigen?

Ich versuche, eine benutzerdefinierte Seitenleiste für meine Posts in bestimmten Kategorien zu erstellen. Es wird ungefähr so ​​aussehen.

enter image description here

Meine Kategoriestruktur sieht so aus:

  • Elternteil 1
    • Kind 1
      • Unterkind 1
      • Unterkind 2
    • Kind 1
      • Unterkind 1
      • Unterkind 2
  • Elternteil 2

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?

2
user2121214

Ich vermute, Sie könnten einen großen Schritt machen, indem Sie wp_list_categories() mit einem walkerverwenden, 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 );
    }
}
4
Mike Madern

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 :)

1
awangfaisal

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;

            }