Abfragen von Seiten in WordPress nach Vorlagennamen

Lesezeit: 2 Minuten

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?

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(); sein if ( $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/

1396190cookie-checkAbfragen von Seiten in WordPress nach Vorlagennamen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy