Quero saber se é possível obter o ID de uma página com um modelo específico. É possível obter o ID de uma página atribuída a "page-special.php"?
19
Quando uma página é criada, o modelo atribuído a essa página é salvo como meta post personalizada, da mesma maneira que os campos personalizados. O meta_key
é _wp_page_template
e o meta_value
será o modelo da página
Você pode simplesmente usar get_pages
para recuperar todas as páginas que possuem um meta_value
dos modelos especificados
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Se alguém precisar apenas dos IDs da página, use-os get_posts
e depois passe page
como valor post_type
"e as
campos dos IDs" . Isso garantirá uma consulta muito mais rápida e muito mais otimizada, pois retornaremos apenas a coluna de ID da postagem no banco de dados e não todas para as páginas especificadas.
( Requer PHP 5.4 ou superior )
$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 ) se não desejar consultar muito o banco de dados.Se o seu modelo de página estiver dentro da subpasta, pasta-tema / modelos-página / modelo-página.php, a consulta abaixo funcionará:
Os códigos acima também exibem subpáginas.
obrigado
fonte
A seguir, um script um pouco mais articulado que leva em conta um idioma, se necessário. OBSERVAÇÃO: ele pressupõe o uso do Polylang, não do WPML.
fonte
Aqui está uma função completa que funciona com WPML e Polylang. Crédito para https://github.com/cyrale/
fonte