Ich möchte nur Seiten mit einer bestimmten Seitenvorlage WP_Query
oder einer Funktion abfragen , die das Post-Objekt zurückgibt, aber ich kann im offiziellen Codex keine Informationen dazu finden.
Ich möchte nur Seiten mit einer bestimmten Seitenvorlage WP_Query
oder einer Funktion abfragen , die das Post-Objekt zurückgibt, aber ich kann im offiziellen Codex keine Informationen dazu finden.
Antworten:
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 .
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'
)
)
);
post_type
. Andernfalls benötigen Sie das meta_query
Array nicht für ein einzelnes benutzerdefiniertes Schlüssel / Wert-Paar.
meta_key
und meta_value
oder mit einem einfachen Array sein, das mehrere Bedingungen enthalten könnte.
Die Seitenvorlage wird als Metawert mit dem Schlüssel "_wp_page_template" gespeichert.
Sie müssen diesen Schlüssel also nur in einem Meta-Abfrageparameter verwenden. Zum Beispiel
und http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
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.php
und es hat funktioniert.
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
)
)
);