php - 从管理页面找出用于页面的 Wordpress 模板

标签 php wordpress templates admin

我正在尝试检索仪表板中“编辑页面”页面上使用的模板的文件名/路径。

类似于 wp-includes/template-loader.php ( source ) 在前端所做的事情:找出要呈现的模板。

不幸的是,像 is_front_page() 这样的表达式 - Wordpress 的 template-loader.php 用来确定它是否应该使用 get_front_page_template() - 在管理页面上无法正常工作。这是意料之中的,因为这些表达式使用全局 $wp_query 对象,而不是当前查询。

到目前为止我尝试了什么:

在管理页面内运行一个 post 循环

$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; ?>

显示:

Home

Is front page: false

使用 get_post_meta

<?= get_post_meta(get_the_ID(), '_wp_page_template', true); ?>

显示:

default

...这对于主页上的 front-page.php 和另一个默认页面上的 page.php 是相同的,所以这对我没有帮助。

简而言之

当我编辑“主页”页面时,我想要获取的是 front-page.php。或 custom-template.php 当我使用选定的自定义模板编辑某些页面时。或 about-page.php 当我编辑名为“关于”的页面时。如何获取正确的文件名或路径?

最佳答案

如果您的具体问题出在主页上,您可以结合使用 get_page_template() 并将已编辑页面的 ID 与 get_option('page_on_front') 进行比较(见 WordPress option reference )。还有一个选项,show_on_front,它指示首页是显示帖子还是静态页面。

也许这有帮助?我不知道是否还有其他边缘情况会使用不同的模板...

关于php - 从管理页面找出用于页面的 Wordpress 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45965531/

相关文章:

templates - 在 Underscore.js 模板中使用 <% 而不解析它

templates - Azure DevOps 模板管道函数

php - 如何正确使用付款意图,我不断收到错误无效付款意图状态

php - 数据库中的代码未返回

php - 如何在 Windows 本地运行部署在 Heroku 中的 PHP 项目?

javascript - 提交 WordPress 之前检查输入的 radio ID

delphi - 如何减少新表单的 "uses"样板?

java - 将凭据从 PHP Web 应用程序发送到 Java Web 应用程序

php - Wordpress:从数据库中检索值

css - 在移动设备上查看时如何隐藏我的菜单?