根据类别将css文件添加到单后模板

时间:2016-02-10 15:22:58

标签: php css wordpress wordpress-theming

我正在使用此功能(在function.php中)为特定类别slug添加模板,但我也希望使用特定的css文件,但我不知道如何正确嵌入它过滤器。我试过下面,但这只是呈现一个空白页面(所以php-error),感谢任何帮助:

原始代码,可在Function.php中创建帖子类别的模板(即" single-categoryname.php"):

add_filter('single_template', create_function(
    '$the_template',
    'foreach( (array) get_the_category() as $cat ) {
        if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
        return TEMPLATEPATH . "/single-{$cat->slug}.php";
        }
    return $the_template;' )
);

我未能尝试包含外部CSS:

        add_filter('single_template', create_function(
            '$the_template',
            'foreach( (array) get_the_category() as $cat ) {
                if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
                return TEMPLATEPATH . "/single-{$cat->slug}.php",

       //my code:
       wp_enqueue_style( 'single-{$cat->slug}', get_template_directory_uri() . '/css/single-{$cat->slug}.css', array(), '1.1', 'all');  
      }
            return $the_template;' )
      });

2 个答案:

答案 0 :(得分:0)

我没有为特定模板添加CSS,所以我从我自己的一个项目(简化)和is_page_template函数中混淆了以下内容。

add_action('wp_enqueue_scripts', 'mcd_theme_styles');

if( !function_exists("mcd_theme_styles") ) {
    function mcd_theme_styles() {
        wp_register_style( 'some-css', get_template_directory_uri() . '/assets/dist/css/some-css.css', array(), '1.4', 'all' );

        if ( is_page_template( 'templates/about.php' ) ) {
            wp_enqueue_style( 'some-css' );
        }

        if ( is_singular() ) {
            wp_enqueue_style( 'different-css' );
        }
    }
}

它回答问题的第一部分,这对第二部分有帮助吗?

答案 1 :(得分:0)

所以,经过一些谷歌搜索,我实际上找到了一个非常简单的答案:

add_filter('single_template', create_function(
    '$the_template',
    'foreach( (array) get_the_category() as $cat ) {
        if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
        return TEMPLATEPATH . "/single-{$cat->slug}.php";
        return STYLESHEETPATH . "css/single-{$cat->slug}.css";
        }
    return $the_template;' )
);