我已经学会了如何使用wp_style_add_data
为早期版本的Internet Explorer添加样式表 - 这是理想的,因为它只会覆盖必要的CSS规则并从我的style.css
中获取其余部分。
除了我的page.php
之外,我还有第二个页面模板,我将其命名为full-page.php
几乎完全相同,除了标题的一些更改和其他一些小差异之外。
因为我的模板几乎相同,所以当我可以执行类似于wp_style_add_data
函数的操作时,编写两个长样式表似乎有点过分,只能重写我需要更改的那些。
我开始使用wp_style_add_data
将页面模板的样式表排入队列。这实际上有效并采用我添加到style.css
的任何样式,前提是full-page.css
中的样式不同。
以下是我使用的代码:
if (is_page_template('page-templates/full-page.php'))
{ wp_enqueue_style( 'theme_style', get_stylesheet_uri() );
wp_enqueue_style( 'theme-full-page', get_stylesheet_directory_uri() . '/css/full-page.css', array( 'theme_style' ) );
wp_style_add_data( 'theme-full-page' );
}
else { wp_enqueue_style( 'theme_style', get_stylesheet_uri() );
wp_enqueue_style( 'theme_style_ie8', get_stylesheet_directory_uri() . '/css/ie8.css', array( 'theme_style' ) );
wp_style_add_data( 'theme_style_ie8', 'conditional', 'IE 8' );
但是,它也会出现以下错误消息。
Warning
: Missing argument 3 for wp_style_add_data(), called in /var/sites/l/lucieaverillphotography.co.uk/public_html/wp-content/themes/lucieaverillphotography/functions.php on line 31 and defined in
/var/sites/l/lucieaverillphotography.co.uk/public_html/wp-includes/functions.wp-styles.php
on line
223
我认为这是因为我删除了告诉它的部分,只有当用户在IE 8上查看网站时才会生效,但我一直在研究我可以添加的内容,而且还有&避免& #39;能够找到答案。
非常感谢任何帮助。
更新: -------------------------------------- ------------------------------------
我认为我已经设法解决了这个问题,因为它似乎现在正在运行 - 我在style.css
中所做的任何更改都会影响其他样式表full-page.css
,除非我指定其他内容在full-page.css
。
查看代码,这是写出来的正确/最佳方式吗?它似乎有点冗长,我必须重复样式表名称,但它似乎也有效。我知道使用PHP做各种事情的方式通常不同,因为我建立自己的主题时,我担心会引起并发症。
if(is_page_template(' page-templates / full-page.php'))
{ wp_enqueue_style( 'theme_style', get_stylesheet_uri() );
wp_enqueue_style( 'theme-full-page', get_stylesheet_directory_uri() . '/css/full-page.css', array( 'theme_style' ) );
wp_style_add_data( 'theme-full-page', 'title', 'theme-full-page' );
}
答案 0 :(得分:1)
您已经将样式排入队列,wp_style_add_data()没有排队,它会将元数据添加到已排队的样式中,并且此函数不允许使用空参数。见下文。
if (is_page_template('page-templates/full-page.php')) {
wp_enqueue_style( 'lucieaverillphotography_style', get_stylesheet_uri() );
wp_enqueue_style( 'lucieaverillphotography-full-page', get_stylesheet_directory_uri() . '/css/full-page.css', array( 'lucieaverillphotography_style' ) );
//wp_style_add_data( 'lucieaverillphotography-full-page' ); --> not needed & cannot be used without required inputs
}
但是.....你可以将你所有的css合并到一个文件中并在所有页面上将其称为默认值(如果你想要的话,调用ie8特定的样式表),这样它可以被浏览器缓存,之后第一次访问,你的css加载速度更快......刷新CSS特性和ids /类,从长远来看,它将为你节省大量的工作!
如果您想要对css进行特定于模板的更改,那么您有几个选项
如果css更改在文章/页面中,则通常会为该页面设置唯一的ID /类(或自己添加一个)。
将自定义css直接添加到模板中(它可以在页面的任何位置使用,不会受到标准的欢迎,但目前你可以将CSS规则放在样式标签内的任何地方
将自定义类添加到body标记的标题中,例如 >
然后,您可以在模板中专门定位css ... e.g。
.page-id-2 header{ display: none;} //-->use chrome inspector to see what classes are outputted on each template