Определение того, какой шаблон Wordpress используется для страницы с страницы администрирования
Я пытаюсь получить имя файла/путь шаблона, используемого на странице "Редактировать страницу" в Личном кабинете.
Подобно тому, что wp-includes/template-loader.php
(источник) делает на переднем конце: выяснение, какой шаблон отображать.
К сожалению, выражения типа is_front_page()
, которые Wordpress 'template-loader.php
использует, чтобы узнать, следует ли использовать get_front_page_template()
, не работают корректно на странице администратора. Ожидается, что в этом выражении используется глобальный объект $wp_query, а не текущий запрос.
Что я пробовал до сих пор:
Запуск цикла сообщений внутри страницы администратора
$args = array(
'p' => get_the_ID(),
'post_type' => 'any'
);
$query = new \WP_Query($args);
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
<?= the_title(); ?><br>
Is front page: <?= is_front_page() ? 'true' : 'false' ?>
<?php endwhile; endif; ?>
Вывод:
Главная
Первая страница: false
Использование get_post_metastrong >
<?= get_post_meta(get_the_ID(), '_wp_page_template', true); ?>
Вывод:
по умолчанию
..., что было бы одинаково для front-page.php на Home и page.php на другой странице по умолчанию, поэтому мне это не помогает.
Короче
То, что я пытаюсь получить, это front-page.php
, когда я редактирую страницу "Главная". Или custom-template.php
, когда я редактирую какую-либо страницу с выбранным настраиваемым шаблоном. Или about-page.php
, когда я редактирую страницу под названием "О". Как получить правильное имя файла или путь?
Ответы
Ответ 1
Если ваша конкретная проблема связана с главной страницей, вы можете использовать комбинацию get_page_template()
и сравнивая отредактированный идентификатор страницы с get_option('page_on_front')
(см. Ссылка на WordPress). Также есть опция show_on_front
, которая указывает, отображается ли на первой странице сообщения или статическая страница.
Может быть, это помогает? Я не знаю, есть ли другие граничные случаи, когда будет использоваться другой шаблон...
Ответ 2
Используйте get_page_template()
:
<?php echo realpath(get_page_template()); ?>
Он выводит что-то вроде /foo/bar/baz/wp-content/themes/your-theme/{page-template}.php
Вы можете не использовать realpath()
и просто получить имя шаблона.