Seitenvorlagenabfrage mit WP_Query


14

Ich möchte nur Seiten mit einer bestimmten Seitenvorlage WP_Queryoder einer Funktion abfragen , die das Post-Objekt zurückgibt, aber ich kann im offiziellen Codex keine Informationen dazu finden.

Antworten:


23

Versuchen Sie Folgendes ... Angenommen, der Vorlagenname lautet 'my_template.php'.

$query = new WP_Query(
    array(
        'post_type' => 'page',
        'meta_key' => '_wp_page_template',
        'meta_value' => 'my_template.php'
    )
);
//Down goes the loop...

Sie können auch get_posts verwenden oder Abfrageposts ändern , um die Aufgabe zu erledigen. Beide Funktionen verwenden dieselben Parameter wie WP_Query .


20

Falsch: Ab WordPress 3 benötigen Sie etwas Ähnliches wie:

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);

VIELEN DANK!! Diese Seite viel zu schnell überflogen, die akzeptierte Antwort verwendet. Das macht es. Für alle anderen beachten Sie das Array innerhalb des Arrays innerhalb des Arrays ...
Jeremy Carlson

3
Der einzige Unterschied ist hier der post_type. Andernfalls benötigen Sie das meta_queryArray nicht für ein einzelnes benutzerdefiniertes Schlüssel / Wert-Paar.
Rutwick Gangurde

Natürlich wird die Meta-Abfrage benötigt. Außer es könnte "inline" mit meta_keyund meta_valueoder mit einem einfachen Array sein, das mehrere Bedingungen enthalten könnte.
Maxime Culea


0

Wenn jemand falsch versucht, keine Beiträge zu verfassen, ist der Name der Vorlage wahrscheinlich falsch. Ich habe den Namen der PHP-Datei und meinen Vorlagennamen ausprobiert und sie haben nicht funktioniert. Dann habe ich beschlossen, das Auswahlfeld für Vorlagen zu überprüfen, in dem wir die Vorlage im Seiteneditor auswählen. Ich habe das gefunden:

<option value="templates-map/component-tutorial-1.php" 
 selected="selected">Tutorial -1</option>

Ich habe verwendet templates-map/component-tutorial-1.phpund es hat funktioniert.


0

Wenn Sie die Vorlage in einem anderen Ordner haben:

$args = array(
    'post_type' => 'page', //it is a Page right?
    'post_status' => 'publish',   
    'meta_query' => array(
        array(
            'key' => '_wp_page_template',
            'value' => 'page-templates/template-name.php', // folder + template name as stored in the dB
        )
    )
);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.