Im Grunde möchte ich PARENT für eine Reihe von benutzerdefinierten Felddaten abfragen und sie aussprechen. Dann möchte ich alle CHILD-Seiten dieses Elternteils abfragen und mehr Daten ausgeben.
Was ist der beste Weg, es zu tun?
Am besten wp_query
oder get_posts
oder eine Kombination aus beiden verwenden?
UPDATE: Sieht so aus, als müsste ich etwas besser erklären.
Wenn die Struktur der Seiten so aussieht:
Page Parent ID(2) 1. Child 1 ID(3) 2. Child 2 ID(4) 3. Child 3 ID(5) 4. Child 4 ID(6)
Und die übergeordnete Abfrage sieht so aus:
$parent = new wp_query(post_id=2) while //do page parent stuff, eg get the_title(); of the parent page endwhile
Muss ich eine weitere Instanz von wp_query ausführen, um die untergeordneten Seiten mit post_parent=2
, oder kann ich die ursprüngliche übergeordnete Abfrage irgendwie erneut verwenden und sie mit zusätzlichen Parametern erweitern, um die Anzahl der Abfrageaufrufe zu post_parent=2
?
Ich bin auf der Suche nach einer Optimierung der wp_query hier, wenn eine Child-Abfrage die gleichen Parameter wie die Eltern plus ein paar mehr verwendet. Vielen Dank.
Ich verstehe nicht die Unterscheidung, die Sie zwischen ‘Sublevel’ Abfrage und ‘Toplevel’ Abfrage machen, aber so ziehe ich Kinder für eine Seite.
$children = get_children( array( 'post_parent' => $servid, 'post_type' => 'page', 'post_status' => 'publish', 'orderby' => 'menu_order', 'order' => 'ASC' )); ?>
Oder…
$page_children = get_pages( array( 'child_of' => $post->ID, 'post_type' => 'page', 'sort_column' => 'menu_order', 'order' => 'ASC' ));
In beiden Fällen sende ich die ID des Elternposts als ersten Parameter.
In diesem Beispiel werden Kategorien anstelle von Seiten verwendet. Sie können die Informationen jedoch mithilfe der Informationen des übergeordneten Elements innerhalb der anderen Schleife abfragen:
// checking current taxonomy to see if it has child categories if it doesn't then we're out of sub categories and should show the current categories products $args = array( 'type' => $taxfunc_post_type, 'hide_empty' => 1, 'orderby' => 'name', 'order' => 'ASC', 'taxonomy' => $taxfunc_tax_name ); $categories = get_categories($args); $categories = wp_list_filter($categories,array('parent'=> $term_id)); foreach($categories as $category) { // setup the cateogory ID $cat_id = $category->term_id; // Get category name $cat_name = $category->name; // Get category count $cat_count = $category->count; //get the category url $cat_url = get_term_link( $category->slug, $taxfunc_tax_name ); echo ''; echo ''; echo ""; echo $cat_name; echo "
"; if ($cat_count > 0) { echo ''; printf( _n('1 profile', '%s profiles', $cat_count,'mouldings' ),$cat_count ); echo ''; } $subcat_args = array( 'type' => $taxfunc_post_type, 'hide_empty' => 1, 'orderby' => 'name', 'child_of' => $cat_id, 'order' => 'ASC', 'taxonomy' => $taxfunc_tax_name, 'pad_counts' => 1 ); $subcategories = get_categories($subcat_args); $subcat_count = count($subcategories); if ($subcat_count > 0) { echo ' '; printf( _n('1 subcategory', '%s subcategories', $subcat_count,'mouldings' ),$subcat_count ); echo ''; } echo ' '.__('View all','mouldings').''; echo ' '; echo ''; }
Im obigen child_of
weise ich den child_of
child_of der übergeordneten Kategorie zu. Lass es mich wissen, wenn das hilft.