从管理页面

时间:2017-08-30 16:29:43

标签: php wordpress templates admin

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

类似于wp-includes/template-loader.phpsource)在前端的作用:找出要呈现的模板。

不幸的是,像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; ?>

显示器:

  

主页

     

是首页:假

使用get_post_meta

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

显示器:

  

默认

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

简而言之

当我正在编辑我的主页&#39;时,我想要得到的是front-page.php。页。或者custom-template.php当我选择自定义模板编辑某个页面时。或者about-page.php当我正在编辑一个名为&#39;关于&#39;的页面时。如何获取正确的文件名或路径?

3 个答案:

答案 0 :(得分:3)

如果您的具体问题与主页有关,则可以使用get_page_template()的组合,并将已编辑的网页ID与get_option('page_on_front')进行比较(请参阅WordPress option reference)。还有一个选项show_on_front,用于指示首页是显示帖子还是静态页面。

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

答案 1 :(得分:2)

使用get_page_template()

<?php echo realpath(get_page_template()); ?> 

输出类似/foo/bar/baz/wp-content/themes/your-theme/{page-template}.php

的内容

您可以选择不使用realpath(),只需获取模板名称。

答案 2 :(得分:0)

我发现的唯一解决方案是:

Class<T!>

我知道它很丑陋,但我只是找不到不使用此全局变量的方法。