Je veux savoir s'il est possible d'obtenir l'ID d'une page avec un modèle spécifique. Est-il possible d'obtenir l'ID d'une page affectée à "page-special.php"?
19
Lorsqu'une page est créée, le modèle attribué à cette page est enregistré en tant que méta de publication personnalisée de la même manière que les champs personnalisés. Le meta_key
est _wp_page_template
et le meta_value
sera le modèle de page
Vous pouvez simplement utiliser get_pages
pour récupérer toutes les pages qui ont un meta_value
du modèle spécifié
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Si l'on a juste besoin des identifiants de page, alors vous utilisez get_posts
et passez simplement la valeur page
as post_type
et 'ids as
fields`. Cela garantira une requête beaucoup plus rapide et beaucoup plus optimisée car nous ne retournerons que la colonne post id dans la base de données et pas toutes pour les pages données
( Nécessite PHP 5.4+ )
$args = [
'post_type' => 'page',
'fields' => 'ids',
'nopaging' => true,
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
];
$pages = get_posts( $args );
foreach ( $pages as $page )
echo $page . '</br>';
set_transient
( codex.wordpress.org/Transients_API ) si vous ne souhaitez pas trop interroger la base de données.Si votre modèle de page réside dans le sous-dossier, dossier-thème / modèles-page / page-modèle.php, la requête ci-dessous fonctionnera:
Ces codes ci-dessus affichent également des sous-pages.
Merci
la source
Ce qui suit est un script légèrement plus articulé qui prend en compte une langue, si nécessaire. REMARQUE: il suppose l'utilisation de Polylang et non de WPML.
la source
Voici une fonction complète qui fonctionne avec WPML et Polylang. Crédit à https://github.com/cyrale/
la source