Определение того, какой шаблон 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_meta​​strong >

<?= 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() и просто получить имя шаблона.