Me gustaría consultar solo páginas con una determinada plantilla de página WP_Query
o 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.
Me gustaría consultar solo páginas con una determinada plantilla de página WP_Query
o 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:
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 .
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'
)
)
);
post_type
. De lo contrario, no necesita la meta_query
matriz para un solo par clave / valor personalizado.
meta_key
y meta_value
o con una matriz simple, que podría incluir varias condiciones.
La plantilla de página se almacena como un metavalor con la clave "_wp_page_template".
Entonces, todo lo que necesita es usar esa clave en un parámetro de meta consulta. Por ejemplo
y http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
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.php
y funcionó.
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
)
)
);