Ich habe eine Vorlage namens „Foo“ in „foo.php“, ich möchte alle Seiten auswählen können, die diese Vorlage verwenden. Ich habe jetzt eine Weile gesucht, konnte aber keinen erfolgreichen Weg finden, dies zu tun … Kann mich jemand über den richtigen/einzigen Weg aufklären, dies zu tun?
Abfragen von Seiten in WordPress nach Vorlagennamen
Sie können dies erhalten, indem Sie den folgenden Code verwenden
$query = new WP_Query( array( 'meta_key' => '_wp_page_template', 'meta_value' => 'foo.php' ) );
if ( have_posts() ) while ( have_posts() ) : the_post();
<?php the_title(); ?>
<?php endwhile; // end of the loop. ?>
-
Wenn Sie hinzufügen
'post_type' => 'page'
das wird funktionieren. Vielen Dank!– Nathanjosia
3. Oktober 2011 um 17:23 Uhr
-
und auch nur für den Fall ‘hierarchisch’ => 0
– open-ecommerce.org
22. Juli 2014 um 12:44 Uhr
-
Um dies (und die Lösung von Jessie Baltazar) zu verdeutlichen: Wenn Ihre Vorlage in einem Unterverzeichnis gespeichert ist, müssen Sie dies in den meta_value aufnehmen. Zum Beispiel,
'meta_value' => 'templates/template-contact.php'
– Josh Stabback
5. Januar 2017 um 18:49 Uhr
-
Sollte nicht
if ( have_posts() ) while ( have_posts() ) : the_post();
seinif ( $query->have_posts() ) while ( $query->have_posts() ) : $query->the_post();
?– HostingUtilities.com
27. Februar 2018 um 6:59 Uhr
Die Antwort von Robot ist gut, aber ich dachte, ich würde ein paar Dinge klarstellen.
Zuerst sollten Sie die Variable für die von Ihnen erstellte Abfrage verwenden, also $query->have_posts() usw.
Zweitens sollten Sie post_type angeben. Ich habe any verwendet, damit alle Post-Typen außer Revisionen gezogen werden.
Wenn sich dies auf einer Seite mit anderen WP-Schleifen befindet, möchten Sie möglicherweise wp_reset_query verwenden. Ich habe für alle Fälle eine darunter und eine darüber hinzugefügt, aber Sie brauchen dies nur, wenn Sie eine weitere Schleife darüber oder darunter haben. Entfernen Sie es, wenn Sie dies nicht tun.
Hier ist der Code:
wp_reset_query();
$query = new WP_Query( array(
'post_type' => 'any',
'meta_key' => '_wp_page_template',
'meta_value' => 'foo.php'
) );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) : $query->the_post(); // WP loop
the_title();
endwhile; // end of the loop.
} else { // in case there are no pages with this template
echo 'No Pages with this template';
}
wp_reset_query();
Hoffe das hilft jemandem!! Viel Spaß beim Codieren!
-
DANKE!!!! Nur so konnte ich die Abfrage dazu bringen, meine Vorlage zu erkennen, nachdem ich eine Seite erstellt und zu einem Kind gemacht hatte. Es muss der ‘post_type’ => ‘any’ gewesen sein?
– Sean
4. Januar 2019 um 15:53 Uhr
Das funktioniert auch
$pages = get_pages(
array(
'meta_key' => '_wp_page_template',
'meta_value' => 'template.php'
)
);
foreach($pages as $page){
echo $page->post_title.'<br />';
}
http://jorgepedret.com/old/web-development/get-pages-by-template-name-in-wordpress/
-
Wie füge ich auch eine Paginierung hinzu?
– Nitisch
7. Oktober 2017 um 6:52 Uhr
-
Nicht auf dem neuesten Stand. Sehen wordpress.stackexchange.com/questions/29918/…
– Nadav
29. März 2021 um 9:59 Uhr