3

我有一个简单的问题,希望有人能解释一下。我有一个带有自定义页面模板的子主题,我只是想检查天气是否正在使用该模板。在正常情况下,我只会使用该is_page_template功能,但它似乎不适用于子主题。我试过以下

if(is_page_template('template-custom-fullwidth.php')){
    //do something..
}

if(is_page_template(dirname(get_bloginfo('stylesheet_url')).'/template-custom-fullwidth.php'){
    //do something..
}

Neiter 有效,我希望有一个比$_SERVER用于检查 URL 更优雅的解决方案。我无法想象没有这样的功能,因为这似乎是一项常见的任务。我相信问题是模板和样式表目录之间的区别。是否可以使用 Wordpress 检查位于子主题中的页面模板?

提前致谢!

4

8 回答 8

3

我遇到了类似的问题。一些试验和错误发现,如果条件保留在函数内部,它就可以工作。但如果放在外面就不会。

function team_page_enqueue_style() {

    if ( is_page_template('page-team.php') ) {
        wp_enqueue_style( 'easy-responsive-tabs-css', get_stylesheet_directory_uri() . '/css/easy-responsive-tabs.css', array(), NULL);
    }
}

add_action( 'wp_enqueue_scripts', 'team_page_enqueue_style' );
于 2014-04-12T03:37:03.610 回答
1

如果在循环中使用 is_page_template,请尝试wp_reset_query()在调用 is_page_template 之前放置。

于 2013-03-29T20:05:26.467 回答
1

有同样的问题并像这样解决它:

get_stylesheet_directory_uri()不起作用,因为它会显示 url 并且您需要服务器完整路径,请使用get_stylesheet_directory()

如果is_page_template()不起作用,您可以使用get_page_template()和比较

if(get_page_template() == (get_stylesheet_directory() . '/custom-template.php')){
//your stuff
}
于 2016-11-18T02:31:34.253 回答
0

试试is_singular(); 它适用于我的情况,因为我的模板是单个帖子页面模板。

要使用它,您需要指定不带 and 字样的模板single-名称.php。例如,如果模板文件是single-forest_of_trees.php,那么这应该是代码:

if (is_singular( 'forest_of_trees' )) {
   // do something
}

它还允许以优雅的方式处理多个值。

于 2016-09-14T09:01:48.227 回答
0

对我有用的是(在functions.php中):

if (get_page_template_slug() == 'template-custom-fullwidth.php'){

// anything

}
于 2017-11-21T12:09:43.000 回答
0

在子主题中唯一对我有用的是访问全局 $template 变量并与之进行比较:

global $template;
if (basename($template) === 'template-custom-fullwidth.php') {
   // do something
}
于 2019-04-27T22:44:23.537 回答
0

使用主题文件夹中的相对路径:

if(is_page_template('page-templates/template-custom-fullwidth.php')){
//do something..
}
于 2019-05-09T08:13:43.273 回答
-1

参考这个 WP Codex 页面:http ://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri

改为使用get_stylesheet_directory_uri。这应该有效:

is_page_template(get_stylesheet_directory_uri() . '/template-custom-fullwidth.php')
{
    //do something..
}
于 2013-03-29T19:07:05.077 回答