2016-08-05 8 views
0

Ich möchte in der Lage sein, alle Beiträge (Kinder und Eltern) beim Durchsuchen einer übergeordneten Kategorie aufzulisten.Wordpress - Listen Sie alle Kategorie Kind Beitrag, wenn in der übergeordneten Kategorie

So:

  • Parent (Beiträge anzeigen von Kind 1 und Kind 2)
    • Kind 1 (Nur Beiträge von Kind 1)
    • Kind 2 (Nur Beiträge von Child 2)

Mit diesem Code (platziert in category.php) bekomme ich nicht al l die Beiträge, wenn ich in einer Elternkategorie bin. Ich bekomme nur Beiträge von einer Kindkategorie statt mehrerer.

Irgendwelche Ideen, um das zu lösen?

<?php get_header(); ?> 
    <div class="container"> 
     <div class="row"> 
      <?php get_template_part('include-cat-tag'); ?> 
      <div class="col-xs-12 col-sm-9 col-md-9 list-page-middle"> 
       <header class="clearfix"> 
        <h1><?php single_cat_title('', true); ?></h1> 
       </header> 
       <?php 
        wp_reset_query(); 
        $categories = get_the_category(); 
        $category_id = $categories[0]->cat_ID; 
        $args = array(
         'posts_per_page' => 100, 
         'category__in' => array($category_id), 
         'orderby' => 'meta_value title', 
         'order' => 'ASC', 
         'post_status' => 'publish', 
         'meta_key' => 'betyg', 
         'child_of' => $category_id 
        ); 
        query_posts($args); 
        if (have_posts()): while (have_posts()) : the_post(); 
        get_template_part('include-list-post'); 
       ?> 
       <?php endwhile; ?> 
       <?php else: ?> 
        <?php get_template_part('include-no-post'); ?> 
       <?php endif; ?> 
      </div>  
     </div> 
     <?php 
      get_template_part('include-list'); 
      get_template_part('include-social'); 
     ?> 
     </div> 
    </div> 
    <?php get_footer(); ?> 

Antwort

0

Ich denke, es gibt ein paar Probleme mit Ihrer Abfrage.

  1. "child_of" ist nicht für query_posts unterstützt/get_posts Funktion. Stattdessen ist es nur eine gültige Option für get_categories. Ich denke, Sie sind verwirrt, die Posts und Kategorien hier abzufragen. Sie können überprüfen parse_query oder get_posts Funktion, um alle verfügbaren Optionen zu sehen.

https://codex.wordpress.org/Plugin_API/Action_Reference/parse_query

https://codex.wordpress.org/Template_Tags/get_posts

  1. "meta_key" Option gezeigt, aber "meta_value" fehlt.

  2. Es wird von WP auch nicht empfohlen, query_posts direkt zu verwenden, sondern die Funktion get_posts zu verwenden oder die Aktion pre_get_posts zu haken.

Um die Liste aller Beiträge von den Kindern Kategorien einer Kategorie zu erhalten, können Sie etwas tun können, wie folgt:

<?php ... 
    $categories = get_categories(array("child_of" => $parent_category->term_id)); 

    $posts_to_display = get_posts("category" => $parent_category->term_id); 
    foreach($categories as $category){ 

    // query child posts of this category here of this category here using get_posts 

    // then merge them to the $posts_to_display array 
    } 

    //Do what ever you want with the array 

Oder wenn Sie wollen immer noch die Verwendung von query_posts und die Wordpress-Schleife machen nicht get_posts Verwendung, verwenden kann Aktion zu den pre_get_posts hook:

<?php 
function get_posts_for_parent_category($query) { 
    // make sure that you are in the category page not single post or custom post type page 
    if(!$query->is_category) 
     return; 

    $parent_category = $query->get_querried_object(); 
    $categories_to_query = array($parent_category->term_id); 

    // Using get_categories to get all child categories_to_query 

    // Get their ids and add it to the $categories_to_query array 

    $query->set("category__in",$categories_to_query); 
} 
add_action('pre_get_posts', 'get_posts_for_parent_category');