如何使用' wp_style_add_data'?

时间:2016-04-20 22:20:05

标签: php wordpress

我已经学会了如何使用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' );
} 

1 个答案:

答案 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进行特定于模板的更改,那么您有几个选项

  1. 如果css更改在文章/页面中,则通常会为该页面设置唯一的ID /类(或自己添加一个)。

  2. 将自定义css直接添加到模板中(它可以在页面的任何位置使用,不会受到标准的欢迎,但目前你可以将CSS规则放在样式标签内的任何地方

  3. 将自定义类添加到body标记的标题中,例如 >

  4. 然后,您可以在模板中专门定位css ... e.g。

     .page-id-2 header{ display: none;} //-->use chrome inspector to see what classes are outputted on each template