Seiten auflisten, die bestimmte Vorlagen verwenden

Ich habe eine Vorlage namens product.php mit folgendem Header erstellt:

 <?php /* Template Name: Product Page */ 

Wie kann ich in einer Seitenleiste jede Seite auflisten, die die Vorlage “Produktseite” verwendet?

Ich habe versucht, die wp_list_pages() functionsdokumentation zu lesen, aber es schien nur möglich, die Filterung nach post_type und nicht nach verwendeter Vorlage post_type .

Solutions Collecting From Web of "Seiten auflisten, die bestimmte Vorlagen verwenden"

Sie können dies mit einer WP_Query meta_query WP_Query meta_query . Der Dateiname der Seitenvorlage wird im Post-Meta unter dem Schlüssel _wp_page_template :

 $args = array( 'post_type' => 'page', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_wp_page_template', 'value' => 'product.php' ) ) ); $the_pages = new WP_Query( $args ); if( $the_pages->have_posts() ){ while( $the_pages->have_posts() ){ $the_pages->the_post(); the_title(); } } wp_reset_postdata(); 

Die Seitenvorlage wird über ein '_wp_page_template' mit dem Schlüssel '_wp_page_template' . Der Wert für dieses Metafeld ist der vollständige Dateiname der Vorlagendatei, ähnlich wie

page-products.php'

Sie können also eine benutzerdefinierte function erstellen, um die Seite mit einer bestimmten Vorlage zu erhalten, indem Sie met_key und meta_value param off get_pages (oder ein WP_Query mit 'meta_query' Argument 'meta_query' ):

 get_pages_by_template( $template = '', $args = array() ) { if ( empty($template) ) return false; if ( strpos($template, '.php') !== (strlen($template) - 4) ) $template .= '.php'; $args['meta_key'] = '_wp_page_template'; $args['meta_value'] = $template; return get_pages($args); } 

Diese function akzeptiert als erstes (obligatorisches) Argument die Vorlage und als zweites (optionales) Argument alle Argumente von get_pages .

Die Vorlage kann mit oder ohne Erweiterung ‘.php’ übergeben werden:

 $pages = get_pages_by_template('page-products'); 

oder

 $pages = get_pages_by_template('page-products.php'); 

Anschließend können Sie die abgerufene Seite nach Belieben verwenden: Sie durchlaufen sie und geben ein Markup aus, erstellen ein benutzerdefiniertes Widget, das die function verwendet, und so weiter …