Я хочу знать, возможно ли получить идентификатор страницы с определенным шаблоном. Можно ли получить идентификатор страницы, назначенной «page-special.php»?
19
Когда страница создается, назначенный шаблон для этой страницы сохраняется в качестве пользовательской мета-записи так же, как настраиваемые поля. meta_key
Это _wp_page_template
и meta_value
будет шаблон страницы
Вы можете просто использовать get_pages
для извлечения всех страниц, которые имеют meta_value
указанный шаблон
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Если вам просто нужны идентификаторы страницы, тогда вы используете, get_posts
а затем просто передаете значения page
as post_type
и 'ids as
fields ' . Это обеспечит гораздо более быстрый и более оптимизированный запрос, поскольку мы будем возвращать только столбец идентификатора записи в БД, а не все из них для данных страниц.
( Требуется PHP 5.4+ )
$args = [
'post_type' => 'page',
'fields' => 'ids',
'nopaging' => true,
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
];
$pages = get_posts( $args );
foreach ( $pages as $page )
echo $page . '</br>';
set_transient
( codex.wordpress.org/Transients_API ), если не хотите слишком много запрашивать базу данных.Если ваш шаблон страницы находится в подпапке theme-folder / page-templates / page-template.php, то ваш следующий запрос будет работать:
Эти коды также отображают подстраницы.
Благодарность
источник
Ниже приведен немного более четко сформулированный скрипт, который учитывает язык, если это необходимо. Обратите внимание, что предполагается использование Polylang, а не WPML.
источник
Вот полная функция, которая работает с WPML и Polylang. Кредит https://github.com/cyrale/
источник