How to display my all category names using loop (W

2020-06-05 08:47发布

问题:

I have below code here. It's display that I want category names and description as well. Now I need to display post that they have inside their categories. How I do it?

<?php 
    $args = array(
        'orderby' => 'id',
        'hide_empty'=> 0,
        'child_of' => 10, //Child From Boxes Category 
    );
    $categories = get_categories($args);
    foreach ($categories as $cat) {
        echo '<div class="one_fourth">';
        echo '<h1 class="valignmiddle uppercase title-bold">'.$cat->name.'<img src="'.$cat->term_icon.'" alt=""  class="alignleft"/>'.'<br />'.'<span class="solutions">'.$cat->description.'</span>'.'</h1>';
        $post = array( 'posts_per_page' => 5, 'offset'=> 1, 'category' => 10 );
        $posts_array = get_posts( $post );

        echo '</div>';
    }
    ?>

If there have any other way to get child category post and display child category name and posts in loop. Please let me to know here.

回答1:

After I solved this. I think this will help for you.

    <?php 
    $args = array(
      'orderby' => 'id',
      'hide_empty'=> 0,
      'child_of' => 5, //Child From Boxes Category 
  );
  $categories = get_categories($args);
  foreach ($categories as $cat) {
        echo '<div style="width:20%;float:left;">';
        echo '<h1 class="valignmiddle uppercase title-bold">'.$cat->name.'<img src="'.$cat->term_icon.'" alt=""  class="alignleft"/>'.'<br />'.'<span class="solutions">'.$cat->description.'</span>'.'</h1>';
        //echo '<br />';
        $args2= array("orderby"=>'name', "category" => $cat->cat_ID); // Get Post from each Sub-Category
        $posts_in_category = get_posts($args2);
        foreach($posts_in_category as $current_post) {
            echo '<span>';
            ?>
            <li type='none' style='list-style-type: none !important;'><a href="<?=$current_post->guid;?>"><?='+ '.$current_post->post_title;?></a></li>
            <?php
            echo '</span>';
        }
        echo '</div>';
    }
?>


回答2:

  • Write for get all parent category
  • Now do a foreach loop for them and get their child category.
  • Now under above foreach write another foreach using this get post for child category

    $parent_cats = get_categories($args);

    foreach ( $parent_cats as $parent_cat) {
        $child_cats = some wp functions to get child cats of current parent category
        foreach ( $child_cats as $child_cat ) {
            $child_cat_post = get the post of child category
        }
    }
    

Helpful links: http://codex.wordpress.org/Function_Reference/get_categories http://codex.wordpress.org/Template_Tags/get_posts



回答3:

Wordpress has <?php wp_dropdown_categories( $args ); ?>

Example Usage (Dropdown without a Submit Button using JavaScript)

<li id="categories">
  <h2><?php _e( 'Posts by Category' ); ?></h2>
  <?php wp_dropdown_categories( 'show_option_none=Select category' ); ?>
  <script type="text/javascript">
  <!--
    var dropdown = document.getElementById("cat");
    function onCatChange() {
      if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
        location.href = "<?php echo esc_url( home_url( '/' ) ); ?>?cat="+dropdown.options[dropdown.selectedIndex].value;
      }
    }
    dropdown.onchange = onCatChange;
  -->
  </script>
</li>

Other examples can be found on the Codex site - https://codex.wordpress.org/Function_Reference/wp_dropdown_categories