Pregunta:
Quiero saber si es posible obtener el ID de una página con una plantilla específica. ¿Es esto posible obtener el ID de una página asignada a "page-special.php"?
Respuesta:
Cuando se crea una página, la plantilla asignada a esa página se guarda como meta de publicación personalizada de la misma manera que los campos personalizados. La meta_key
es _wp_page_template
y el meta_value
será la plantilla de página
Simplemente puede hacer uso de get_pages
para recuperar todas las páginas que tienen un meta_value
de la plantilla especificada
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
EDITAR 23-07-2015
Si solo necesita los identificadores de página, entonces usa get_posts
y luego simplemente pasa la page
como post_type
y el valor 'ids as
campos'. Esto asegurará una consulta mucho más rápida y optimizada, ya que solo devolveremos la columna de identificación de la publicación en la base de datos y no todas para las páginas dadas.
( Requiere 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>';