Requête de modèle de page avec WP_Query


14

Je voudrais interroger uniquement les pages avec un certain modèle de page avec WP_Queryou une fonction qui retournerait l'objet post, mais je ne trouve aucune information à ce sujet sur le codex officiel.

Réponses:


23

Essayez ceci ... En supposant que le nom du modèle est '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...

Vous pouvez également utiliser get_posts ou modifier les messages de requête pour effectuer le travail. Ces deux fonctions utilisent les mêmes paramètres que WP_Query .


20

Incorrect: à partir de wordpress 3, vous avez besoin de quelque chose comme:

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

MERCI!! A parcouru cette page trop rapidement, a utilisé la réponse acceptée. Cela suffit. Pour n'importe qui d'autre, notez le tableau à l'intérieur du tableau à l'intérieur du tableau ...
Jeremy Carlson

3
La seule différence ici est le post_type. Sinon, vous n'avez pas besoin du meta_querytableau pour une seule paire clé / valeur personnalisée.
Rutwick Gangurde

Bien sûr, la méta-requête est nécessaire. Sauf qu'il peut être "en ligne" avec meta_keyet meta_valueou avec un tableau simple, qui peut inclure plusieurs conditions.
Maxime Culea


0

Si la tentative de quelqu'un aboutit incorrectement à zéro publication, le nom du modèle est probablement incorrect. J'ai essayé le nom du fichier php et le nom de mon modèle et ils n'ont pas fonctionné. J'ai alors décidé d'inspecter la boîte de sélection des modèles où nous sélectionnons le modèle dans l'éditeur de page. J'ai trouvé ça:

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

J'ai utilisé templates-map/component-tutorial-1.phpet cela a fonctionné.


0

Si vous avez le modèle dans un autre dossier:

$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
        )
    )
);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.