按条件加载样式表的正确方法

时间:2017-11-02 作者:Agustin

我正在为我的网站和我的功能创建一个子主题。php我添加了一个代码,仅在主页上加载特定的css文件:

 // enqueue styles for child theme
 function wowdental_enqueue_styles() {

 // enqueue parent styles
wp_enqueue_style(\'Divi\', get_template_directory_uri() .\'/style.css\', get_the_time() );

 // Flip3d css
 wp_enqueue_style( \'flip\', get_stylesheet_directory_uri() . \'/css/flip.css\', get_the_time() );

// flip3d only on home page
if( is_home()  ) {
    wp_enqueue_style(\'flip\');
}
}
 add_action(\'wp_enqueue_scripts\', \'wowdental_enqueue_styles\');
我为if is\\u home()设置了条件,但无论是否为主页,样式表都会被拉入所有页面。

我还使用了if(is\\u home()| | is\\u front\\u page()),但得到了相同的结果。

我做错了什么??

2 个回复
最合适的回答,由SO网友:James 整理而成

您需要将if语句放在第一个排队的行周围。

// enqueue styles for child theme
function wowdental_enqueue_styles() {

    // enqueue parent styles
    wp_enqueue_style(\'Divi\', get_template_directory_uri() .\'/style.css\', 
    get_the_time() );

    // Flip3d css
    // flip3d only on home page
    if( is_home()  ) {
        wp_enqueue_style( \'flip\', get_stylesheet_directory_uri() . 
\'/css/flip.css\', get_the_time() );
    }


    }
add_action(\'wp_enqueue_scripts\', \'wowdental_enqueue_styles\');
要像在原始代码中一样执行,首先需要使用wp\\u register\\u样式,然后将队列保留在if中。

SO网友:Laxmana

docs:

如果提供了源(不覆盖),则注册样式并排队。

这意味着当你使用wp_enqueue_style css文件将被注册并排队等待输出。

if 您必须使用注册css文件的条件wp_register_style 然后在条件内排队。

结束

相关推荐

根据页面内容在Head中包含css文件

例如:我有一个插件,可以在页面中添加一个框</Box需要CSS文件和JS文件</可以通过短代码、PHP或小部件添加框</我的问题是-如何包括CSS和;JS文件仅限于此框所在的页面?对于JS文件,它很简单,因为它被添加到页脚。但是CSS文件必须添加到<head> 部分我知道有些解决方案涉及字符串解析post\\u内容和查找短代码。但当通过Widget或PHP添加box时,这并没有帮助。有什么建议吗?非常感谢。