Запрос шаблона страницы с помощью WP_Query
ОБНОВЛЕНИЕ: Этот ответ написан десять лет назад и предназначен для очень старой версии WordPress. Я вижу комментарии, в которых говорится, что это может не работать в новых версиях WP. Пожалуйста, обратитесь к другим ответам ниже, если мой не работает для вашей версии WP. Для WP 2.* этот способ будет работать.
Попробуйте это... Предполагая, что имя шаблона — 'my_template.php',
$query = new WP_Query(
array(
'post_type' => 'page',
'meta_key' => '_wp_page_template',
'meta_value' => 'my_template.php'
)
);
// Здесь начинается цикл...
Вы также можете использовать get_posts или изменить query posts, чтобы выполнить задачу. Обе эти функции используют те же параметры, что и WP_Query.

СПАСИБО!! Слишком быстро пробежался глазами по странице, использовал принятый ответ. Это работает. Для остальных замечу, что здесь массив внутри массива внутри массива...

Единственное отличие здесь - это post_type
. В остальном вам не нужен массив meta_query
для одной пары ключ/значение.

Конечно, meta query необходим. Только он может быть "встроенным" с meta_key
и meta_value
или в виде простого массива, который может включать несколько условий.

Если шаблон находится внутри другой папки:
$args = array(
'post_type' => 'page', // это страница, верно?
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'page-templates/template-name.php', // папка + имя шаблона, как хранится в БД
)
)
);

Шаблон страницы хранится как мета-значение с ключом "_wp_page_template".
Таким образом, все что вам нужно - это использовать этот ключ в параметре meta_query. Например:
и 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
, и это сработало.
