Query del modello di pagina con WP_Query


14

Vorrei interrogare solo le pagine con un determinato modello di pagina con WP_Queryo una funzione che restituirebbe l'oggetto post, ma non riesco a trovare alcuna informazione al riguardo sul codice ufficiale.

Risposte:


23

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 .


20

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'
        )
    )
);

GRAZIE!! Ho sfogliato questa pagina troppo velocemente, ho usato la risposta accettata. Questo lo fa. Per chiunque altro, nota l'array all'interno dell'array all'interno dell'array ...
Jeremy Carlson,

3
L'unica differenza qui è il post_type. Altrimenti non è necessario l' meta_queryarray per una singola coppia chiave / valore personalizzata.
Rutwick Gangurde,

Naturalmente è necessaria la meta query. Tranne che potrebbe essere "inline" con meta_keye meta_valueo con un array semplice, che potrebbe includere più condizioni.
Maxime Culea


0

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.phpe ha funzionato.


0

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
        )
    )
);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.