Consulta de plantilla de página con WP_Query


14

Me gustaría consultar solo páginas con una determinada plantilla de página WP_Queryo una función que devolvería el objeto de publicación, pero no puedo encontrar ninguna información al respecto en el códice oficial.

Respuestas:


23

Pruebe esto ... Suponiendo que el nombre de la plantilla es '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...

También puede usar get_posts o modificar publicaciones de consultas para realizar el trabajo. Ambas funciones usan los mismos parámetros que WP_Query .


20

Incorrecto: a partir de wordpress 3 necesitas algo parecido a:

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);

¡¡GRACIAS!! Hojeé esta página demasiado rápido, usé la respuesta aceptada. Esto lo hace. Para cualquier otra persona, tenga en cuenta la matriz dentro de la matriz dentro de la matriz ...
— Jeremy Carlson

3
La única diferencia aquí es la post_type. De lo contrario, no necesita la meta_querymatriz para un solo par clave / valor personalizado.
— Rutwick Gangurde

Por supuesto, se necesita la meta consulta. Excepto que podría ser "en línea" con meta_keyy meta_valueo con una matriz simple, que podría incluir varias condiciones.
— Maxime Culea


0

Si el intento de alguien resulta incorrectamente en cero publicaciones, probablemente el nombre de la plantilla sea incorrecto. Probé el nombre del archivo php y el nombre de mi plantilla y no funcionaron. Luego decidí inspeccionar el cuadro de selección de plantillas donde seleccionamos la plantilla en el editor de páginas. Encontré esto:

<option value="templates-map/component-tutorial-1.php" 
 selected="selected">Tutorial -1</option>

Solía templates-map/component-tutorial-1.phpy funcionó.


0

Si tiene la plantilla dentro de otra carpeta:

$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
        )
    )
);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.