Gostaria de consultar apenas páginas com um determinado modelo de página WP_Query
ou uma função que retornasse o objeto de postagem, mas não consigo encontrar nenhuma informação sobre isso no codex oficial.
Gostaria de consultar apenas páginas com um determinado modelo de página WP_Query
ou uma função que retornasse o objeto de postagem, mas não consigo encontrar nenhuma informação sobre isso no codex oficial.
Respostas:
Tente isso ... Supondo que o nome do modelo seja '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...
Você também pode usar get_posts ou modificar postagens de consulta para concluir o trabalho. Ambas as funções usam os mesmos parâmetros que WP_Query .
Incorreto: a partir do wordpress 3, você precisa de algo semelhante a:
$args = array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'my_template.php'
)
)
);
post_type
. Caso contrário, você não precisará da meta_query
matriz para um único par de chave / valor personalizado.
meta_key
e meta_value
ou com uma matriz simples, o que poderia incluir várias condições.
O modelo da página é armazenado como um meta-valor com a chave "_wp_page_template".
Então, tudo que você precisa é usar essa chave em um parâmetro de meta consulta. Por exemplo
e http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
Se alguém tentar incorretamente resultar em zero postagens, provavelmente o nome do modelo está errado. Eu tentei o nome do arquivo php e o nome do meu modelo e eles não funcionaram. Decidi inspecionar a caixa de seleção de modelos, onde selecionamos o modelo no editor de páginas. Eu achei isto:
<option value="templates-map/component-tutorial-1.php"
selected="selected">Tutorial -1</option>
Eu usei templates-map/component-tutorial-1.php
e funcionou.
Se você tiver o modelo dentro de outra pasta:
$args = array(
'post_type' => 'page', //it is a Page right?
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'page-templates/template-name.php', // folder + template name as stored in the dB
)
)
);