Consulta de modelo de página com WP_Query

14

Gostaria de consultar apenas páginas com um determinado modelo de página WP_Queryou uma função que retornasse o objeto de postagem, mas não consigo encontrar nenhuma informação sobre isso no codex oficial.

Alexandre Kirszenberg
fonte

Respostas:

23

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 .

Rutwick Gangurde
fonte
20

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'
        )
    )
);
BenJam
fonte
OBRIGADO!! Percorreu esta página rapidamente, usou a resposta aceita. Isso faz. Para qualquer outra pessoa, observe a matriz dentro da matriz dentro da matriz ...
Jeremy Carlson
3
A única diferença aqui é a post_type. Caso contrário, você não precisará da meta_querymatriz para um único par de chave / valor personalizado.
Rutwick Gangurde
Obviamente, a meta consulta é necessária. Exceto que poderia estar "em linha" com meta_keye meta_valueou com uma matriz simples, o que poderia incluir várias condições.
Maxime Culea 14/02
0

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.phpe funcionou.

Ivan Gomes
fonte
0

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
        )
    )
);
Guille Holmann
fonte