Vorrei interrogare solo le pagine con un determinato modello di pagina con WP_Query
o una funzione che restituirebbe l'oggetto post, ma non riesco a trovare alcuna informazione al riguardo sul codice ufficiale.
Vorrei interrogare solo le pagine con un determinato modello di pagina con WP_Query
o una funzione che restituirebbe l'oggetto post, ma non riesco a trovare alcuna informazione al riguardo sul codice ufficiale.
Risposte:
Prova questo ... Supponendo che il nome del modello sia "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...
È inoltre possibile utilizzare get_posts o modificare i post delle query per completare il lavoro. Entrambe queste funzioni utilizzano gli stessi parametri di WP_Query .
Errato: a partire da Wordpress 3 hai bisogno di qualcosa di simile a:
$args = array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'my_template.php'
)
)
);
post_type
. Altrimenti non è necessario l' meta_query
array per una singola coppia chiave / valore personalizzata.
meta_key
e meta_value
o con un array semplice, che potrebbe includere più condizioni.
Il modello di pagina è memorizzato come meta valore con la chiave "_wp_page_template".
Quindi tutto ciò che serve è usare quella chiave in un parametro di meta query. Per esempio
e http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
Se il tentativo di qualcuno porta erroneamente a zero post, probabilmente il nome del modello è sbagliato. Ho provato il nome del file php e il nome del mio modello e non hanno funzionato. Quindi ho deciso di ispezionare la casella di selezione dei modelli in cui selezioniamo il modello nell'editor di pagine. Ho trovato questo:
<option value="templates-map/component-tutorial-1.php"
selected="selected">Tutorial -1</option>
Ho usato templates-map/component-tutorial-1.php
e ha funzionato.
Se hai il modello in un'altra cartella:
$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
)
)
);