Я б хотів запитувати лише сторінки з певним шаблоном сторінки WP_Query
або функцією, яка б повернула об'єкт публікації, але я не можу знайти жодної інформації про це в офіційному кодексі.
Я б хотів запитувати лише сторінки з певним шаблоном сторінки WP_Query
або функцією, яка б повернула об'єкт публікації, але я не можу знайти жодної інформації про це в офіційному кодексі.
Відповіді:
Спробуйте це ... Припустимо, що назва шаблону "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...
Ви також можете використовувати get_posts або змінювати публікації запитів, щоб виконати роботу. Обидві ці функції використовують ті ж параметри, що і WP_Query .
Неправильно: що стосується Wordpress 3, вам потрібно щось схоже на:
$args = array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'my_template.php'
)
)
);
post_type
. В іншому випадку вам не потрібен meta_query
масив для однієї спеціальної пари ключ / значення.
meta_key
і meta_value
або з ним, який може включати кілька умов.
Шаблон сторінки зберігається як мета-значення з ключем "_wp_page_template".
Тому все, що вам потрібно, це використовувати цей ключ у параметрі мета запиту. Для прикладів
та http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
Якщо спроба когось неправильно призводить до нульових повідомлень, можливо, назва шаблону неправильна. Я спробував ім'я файлу php та ім'я мого шаблону, і вони не спрацювали. Тоді я вирішив перевірити поле вибору шаблонів, де ми вибираємо шаблон у редакторі сторінки. Я знайшов це:
<option value="templates-map/component-tutorial-1.php"
selected="selected">Tutorial -1</option>
Я використовував templates-map/component-tutorial-1.php
і це спрацювало.
Якщо у вас шаблон є в іншій папці:
$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
)
)
);