Wie sortiere ich eine Liste von benutzerdefinierten Posts, um eine Ansicht wie eine Baumstruktur von Posts unter Kategorien und deren Kategorien zu erhalten?

Ich bin neu hier und mein Englisch ist nicht perfekt, also tut mir leid für das 🙂 Ich bin hier, weil ich vor Ort mit Post-Liste nach Kategorie sortiert arbeite und ich habe Probleme mit dem Sortieren meiner Beiträge in Kategorien und Kinderkategorien unter ihnen. Jetzt ist alles durcheinander. Ich möchte meine benutzerdefinierten Beiträge so sortieren:

KATEGORIE 1

  • KIND KATEGORIE 1

    • Post
    • Post
    • Post
  • KINDKATEGORIE2

    • Post
    • Post
    • Post

KATEGORIE 2

  • KINDKATEGORIE3
    • Post
    • Post
    • Post

KATEGORIE 3

  • Post
  • Post

  • KINDKATEGORIE4

    • Post
    • Post
    • Post

Ist es mit diesem Code möglich:

term_taxonomy tax LEFT JOIN $wpdb->terms terms ON tax.term_id = terms.term_id WHERE tax.taxonomy = 'MY_CUSTOM_TAXONOMY'"; $categories = $wpdb->get_results($querystr, OBJECT); foreach( $categories as $category ): echo '

'.$category->name.'

'; echo '

'.strip_tags(term_description($category->term_id,'MY_CUSTOM_TAXONOMY')).'

'; $posts = get_posts( array( 'MY_CUSTOM_TAXONOMY' => $category->name, 'post_type' => 'MY_CUSTOM_POST' ) ); foreach($posts as $post) : setup_postdata($post); the_title(); endforeach; endforeach; ?>

Ich werde für alle Hilfe dankbar sein, danke !!

Solutions Collecting From Web of "Wie sortiere ich eine Liste von benutzerdefinierten Posts, um eine Ansicht wie eine Baumstruktur von Posts unter Kategorien und deren Kategorien zu erhalten?"

Ok, das ist meine Arbeitslösung:

 < ?php $args=array( 'post_type' => 'biblioteka', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'kategoria-pozycji', 'pad_counts' => false ); $categories=get_categories($args); foreach ( $categories as $category ) { if ( $category->parent > 0 ) { continue; } echo '

' . $category->name . '

'; $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->terms WHERE term_id = (" . $category->cat_ID . ") AND term_taxonomy_id = (" . $category->term_taxonomy_id . ") AND ID = object_id AND post_type = 'biblioteka' AND post_status = 'publish' ORDER BY post_date DESC"; $posts = $wpdb->get_results($querystr, OBJECT); echo '
    '; foreach ( $posts as $post ) { setup_postdata($post); echo '
  • '; the_title(); echo '
  • '; } echo '
'; $categories2 = get_terms('kategoria-pozycji',array('parent' => $category->term_id , 'hide_empty'=> '0' )); foreach ( $categories2 as $category ) { echo '

' . $category->name . '

'; $posts = get_posts( array( 'kategoria-pozycji' => $category->name, 'post_type' => 'biblioteka' ) ); echo '
    '; foreach($posts as $post) { setup_postdata($post); echo '
  • '; the_title(); echo '
  • '; } echo '
'; } } ?>

Ich habe ein wenig gespielt und das ist, was ich herausgefunden habe, ich habe getestet und es funktioniert genau wie Ihr gegebenes Beispiel:

 
    < ?php // get initial categories $categories = get_categories(); foreach ( $categories as $category ) { // we don't want child categories now, and since get_categories does not support 'depth' parameter, we use ->parent check if ( $category->parent > 0 ) { continue; } $i = 0; echo '
  • ' . $category->cat_name . '
  • '; $posts = get_posts( array( 'category' => $category->term_id ) ); foreach ( $posts as $post ) { // let's make sure that the post is not also in any of child categories, if it is, skip it ( we don't want to display it twice ) $child_categories = get_term_children( $category->term_id, 'category' ); if ( $child_categories && in_category( $child_categories, $post->ID ) ) { continue; } echo 0 === $i ? '
    ' : ''; echo '
  • ' . $post->post_title . '
  • '; $i++; } // now, after we listed all the posts, we query for child categories $categories2 = get_categories( array( 'parent' => $category->term_id ) ); foreach ( $categories2 as $category ) { $j = 0; echo '
  • ' . $category->cat_name . '
  • '; $posts2 = get_posts( array( 'category' => $category->term_id ) ); foreach ( $posts2 as $post ) { echo 0 === $j ? '
    ' : ''; echo '
  • ' . $post->post_title . '
  • '; $j++; } echo null === $posts2 ? '' : '
'; } echo null === $posts ? '' : ''; } ?>

Hier ist die Lösung, dass ich die Probleme getriggers habe, wie Sie erfahren

  //Define Some require define(TAX_TYPE, 'category'); //you can also replace your custom taxonomy in category $terms = get_terms(TAX_TYPE); define(WP_HOME, 'http://yourdomain.com'); ?>  

Meine beste Lösung! (funktioniert für alle Taxonomien, einschließlich “Kategorie”)

 $your_taxonomy='category'; function my_Categ_tree($TermName='', $termID, $separator='', $parent_shown=true ){ $args = 'hierarchical=1&taxonomy='.$TermName.'&hide_empty=0&orderby=id&parent='; if ($parent_shown) {$term=get_term($termID , $TermName); $output=$separator.$term->name.'('.$term->term_id.')
'; $parent_shown=false;} $separator .= '-'; $terms = get_terms($TermName, $args . $termID); if(count($terms)>0){ foreach ($terms as $term) { //$selected = ($cat->term_id=="22") ? " selected": ""; //$output .= ''; $output .= $separator.$term->name.'('.$term->term_id.')
'; $output .= my_Categ_tree($TermName, $term->term_id, $separator, $parent_shown); } } return $output; }

Dann können Sie Folgendes ausgeben:

1) Zielkategorie (Taxonomie) Baum, mit spezifischen ID

 echo my_Categ_tree($your_taxonomy, 0 ); 

2) Alle Kategorien / Taxonomien

 foreach (get_terms($your_taxonomy, array('hide_empty'=>0, 'parent'=>0)) as $each) { echo my_Categ_tree($each->taxonomy,$each->term_id); }