Wie kann ich Wp_Query hierarchisch bestellen?

Ich habe eine cpt, für die ich Wp_Query hierarchisch bestellen Wp_Query

Beispiel:

Zeigen 1
Episode 1
Episode 2

Zeigen 2
Episode 1
Episode 2

Ich dachte order_by=parent würden es tun, aber anscheinend nicht so.

Solutions Collecting From Web of "Wie kann ich Wp_Query hierarchisch bestellen?"

Sie müssen etwas anderes als eine einzelne WP_Query verwenden. Sie könnten wp_list_pages() mit einem benutzerdefinierten Walker verwenden, um die gewünschte Struktur zu erhalten.

wp_list_pages in Widget, Sidebar oder wo immer die Liste wp_list_pages :

 
    < ?php wp_list_pages(array( 'post_type' => 'cpt', // replace with your cpt's slug 'title_li' => '', // don't include a title LI 'post_status' => 'publish', // don't include private/draft/etc. 'sort_column' => 'post_title', // order by post title 'walker' => new wpse_hierarchy_walker) ); ?>

Walker in theme’s functions.php:

 < ?php class wpse_hierarchy_walker extends Walker_page { public function start_el(&$output, $page, $depth = 0, $args = array(), $current_page = 0) { if($depth) $indent = str_repeat("\t", $depth); else $indent = ''; extract($args, EXTR_SKIP); $css_class = array('page_item'); if(!empty($current_page)) { $_current_page = get_page( $current_page ); $children = get_children('post_type=page&post_status=publish&post_parent='.$page->ID); if(count($children) != 0) { $css_class[] = 'hasChildren'; } if(isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors)) $css_class[] = 'current_page_ancestor'; if($page->ID == $current_page) $css_class[] = 'current_page_item'; elseif($_current_page && $page->ID == $_current_page->post_parent) $css_class[] = 'current_page_parent'; } elseif($page->ID == get_option('page_for_posts')) { $css_class[] = 'current_page_parent'; } $css_class = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) ); if($page->ID == $current_page) { $output .= $indent .'
  • ' . $page->post_title; } else { $output .= $indent .'
  • ' . $page->post_title .''; } } } ?>
  • Dann können Sie mit CSS die Kinder so oft einrücken, wie Sie möchten. li.hasChildren ul wird um die Kinder gewickelt.