为不起作用的模板加载正确的CSS的函数

时间:2014-08-06 作者:coolpup

我想使用三个模板(索引页、主模板和默认模板)。我能够在函数中添加“if/else”语句,根据两个模板(索引和默认)之间使用的模板来获取要加载的正确CSS文件。

然而,当我尝试使用“elseif”以便为主模板添加另一个选项时,它不起作用。相反,使用主模板的页面加载索引页面CSS。

以下是相关代码:

    if ( is_page() && ! is_page_template( \'page-templates/index_page.php\' ) ) {
        wp_enqueue_style( \'authorLuncheon-layout-style1\', get_template_directory_uri().\'/layouts/index_page.css\' );
    } elseif ( is_page() && ! is_page_template( \'page-templates/main_template.php\' ) ) {
        wp_enqueue_style( \'authorLuncheon-layout-style2\', get_template_directory_uri().\'/layouts/main_template.css\' );
    } else {
        wp_enqueue_style( \'authorLuncheon-layout-style3\', get_template_directory_uri().\'/layouts/content-sidebar.css\' );
    }
以下是整个功能:

function authorluncheon_scripts() {
    wp_enqueue_style( \'authorluncheon-style\', get_stylesheet_uri() );

    if ( is_page() && ! is_page_template(\'page-templates/index_page.php\' ) ) {
        wp_enqueue_style( \'authorLuncheon-layout-style1\', get_template_directory_uri().\'/layouts/index_page.css\' );
    } elseif ( is_page() && ! is_page_template( \'page-templates/main_template.php\' ) ) {
        wp_enqueue_style( \'authorLuncheon-layout-style2\', get_template_directory_uri().\'/layouts/main_template.css\' );
    } else {
        wp_enqueue_style( \'authorLuncheon-layout-style3\', get_template_directory_uri().\'/layouts/content-sidebar.css\' );
    }

    wp_enqueue_script( \'authorluncheon-navigation\', get_template_directory_uri() . \'/js/navigation.js\', array(), \'20120206\', true );

    wp_enqueue_script( \'authorluncheon-skip-link-focus-fix\', get_template_directory_uri().\'/js/skip-link-focus-fix.js\', array(), \'20130115\', true );

    if ( is_singular() && comments_open() && get_option( \'thread_comments\' ) ) {
        wp_enqueue_script( \'comment-reply\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'authorluncheon_scripts\' );

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

我认为你最大的问题是你使用下划线(_) 在页面模板名称中。根据Handbook of Coding Standards

文件应使用小写字母进行描述性命名。Hyphens 应该分开单词。

我的插件名称。php此外,为了获得最佳实践,您应该调用自定义页面模板。php

例如,index\\u页面。php应重命名为页面索引。php和index\\u页面。css应该重命名为类似索引样式的样式。css

NOTE: 如果你正在谈论使用索引的主页,请记住一点。php或使用索引的博客页面。php或主页。php,您应该使用is_home() 而不是is_page() && !is_page_template(\'page-templates/index_page.php\'). 如果设置了静态首页,则应使用is_front_page() 而不是is_page() && !is_page_template(\'page-templates/index_page.php\'). 您的首页也应命名为首页。php是一种良好的做法,尽管您可以使用下面列出的其他名称here

我想这会解决你的问题。如果没有,请告诉我

EDIT

 if (is_page() && !is_page_template(\'page-templates/index_page.php\')) {
        wp_enqueue_style(\'authorLuncheon-layout-style1\', get_template_directory_uri() . \'/layouts/index_page.css\');
    } elseif (is_page() && !is_page_template(\'page-templates/main_template.php\')) {
        wp_enqueue_style(\'authorLuncheon-layout-style2\', get_template_directory_uri() . \'/layouts/main_template.css\');
    } else {
        wp_enqueue_style(\'authorLuncheon-layout-style3\', get_template_directory_uri() . \'/layouts/content-sidebar.css\');
    }
用普通英语阅读以上代码

if(显示一个页面,模板不是页面模板/index\\u page.php){

将我的样式编入队列authorLuncheon-layout-style1

}else if(显示一个页面,模板不是page templates/main\\u template.php){

将我的样式编入队列authorLuncheon-layout-style2

}其他{

当显示的模板为页面模板/main\\u模板时。php或页面模板/index\\u页面。php{

将我的样式编入队列authorLuncheon-layout-style3

}

所以这基本上是对操作符的错误使用。回想起! 表示它所附加的条件的相反。因此,您应该完全重新排列代码,以使其正常工作。这只是一个粗略的通风

if ( is_page() && is_page_template( \'page-templates/index_page.php\' ) ) {
        //enqueue whatever style you want to use ON THIS SPECIFIC PAGE 
    } elseif ( is_page() && is_page_template( \'page-templates/main_template.php\' ) ) {
       //enqueue whatever style you want to use ON THIS SPECIFIC PAGE
    } else {
       //enqueue whatever style you want to use ON ANY OTHER PAGE
    }

EDIT 2

你也可以试试这个。我也不会使用is_page()

if ( !is_page_template( \'page-templates/index_page.php\' ) && !is_page_template( \'page-templates/main_template.php\' ) ) {
       //enqueue whatever style you want to use ON ANY OTHER PAGE THAN THIS TWO
    } elseif ( is_page_template( \'page-templates/index_page.php\' ) ) {
        //enqueue whatever style you want to use ON THIS SPECIFIC PAGE 
    } elseif ( is_page_template( \'page-templates/main_template.php\' ) ) {
       //enqueue whatever style you want to use ON THIS SPECIFIC PAGE
    }

结束

相关推荐