Quiero saber si es posible obtener la ID de una página con una plantilla específica. ¿Es posible obtener el ID de una página que se asignó a "page-special.php"?
19
Cuando se crea una página, la plantilla asignada a esa página se guarda como metaetiquetado personalizado de la misma manera que los campos personalizados. El meta_key
es _wp_page_template
y meta_value
será la plantilla de página
Simplemente puede utilizar get_pages
para recuperar todas las páginas que tienen una meta_value
de las plantillas especificadas
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Si uno solo necesita los identificadores de página, entonces utiliza get_posts
y luego pasa page
como valor de post_type
' as
campos de identificadores' . Esto garantizará una consulta mucho más rápida y mucho más optimizada, ya que solo devolveremos la columna de ID de publicación en el DB 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>';
set_transient
( codex.wordpress.org/Transients_API ) si no desea consultar demasiado la base de datos.Si la plantilla de su página reside dentro de la subcarpeta, theme-folder / page-templates / page-template.php, la siguiente consulta funcionará:
Estos códigos anteriores también muestran subpáginas también.
Gracias
fuente
El siguiente es un script ligeramente más articulado que tiene en cuenta un idioma, si es necesario. NOTA que asume el uso de Polylang, no WPML.
fuente
Aquí hay una función completa que funciona con WPML y Polylang. Crédito a https://github.com/cyrale/
fuente