web-dev-qa-db-fra.com

Requête de modèle de page avec WP_Query

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

9

Essayez ceci ... En supposant que le nom du modèle soit '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 query posts pour que le travail soit effectué. Ces deux fonctions utilisent les mêmes paramètres que WP_Query .

16
Rutwick Gangurde

Incorrect: à partir de WordPress 3, vous avez besoin de quelque chose qui ressemble à:

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

Le modèle de page est stocké en tant que méta-valeur avec la clé "_wp_page_template".

Il suffit donc d’utiliser cette clé dans un paramètre de méta-requête. Pour des exemples

Voir http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query#Query_based_on_Custom_Field_and_Sorted_by_Value

et http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

1
anmari

Si la tentative de quelqu'un aboutit incorrectement à zéro message, le nom du modèle est probablement faux. J'ai essayé le nom de fichier php et mon nom de modèle et ils ne fonctionnaient pas. Ensuite, j'ai décidé d'inspecter la boîte de sélection de modèles dans laquelle 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.php et cela a fonctionné.

0
Ivan Gomes