【问题标题】:Wordpress: How to override all default theme CSS so your custom one is loaded the last?Wordpress:如何覆盖所有默认主题 CSS,以便最后加载自定义主题 CSS?
【发布时间】:2012-11-23 19:16:55
【问题描述】:

我有一个问题,我可以使用以下代码在我的 wordpress 主题部分中包含自定义 css:

function load_my_style_wp_enqueue_scripts()
{
wp_register_style('my_styles_css', includes_url("/css/my_styles.css"));
wp_enqueue_style('my_styles_css');
}
add_action('wp_enqueue_scripts','load_my_style_wp_enqueue_scripts');

但源码中的顺序如下:

<link rel='stylesheet' id='my_styles_css-css'  href='http://...folderA.../my_styles.css?ver=3.1' type='text/css' media='all' />
<link rel="stylesheet" id="default-css" href="http://...folderB.../default.css" type="text/css" media="screen,projection" />
<link rel="stylesheet" id="user-css" href="http://...folderC.../user.css" type="text/css" media="screen,projection" />

我希望 my_styles_css 成为最后加载的文件,覆盖默认文件和用户文件。我试图通过以不同方式修改 wp_enqueue_style 来实现这一点,但没有任何成功。我试过了:

wp_enqueue_style('my_styles_css', array('default','user'));

wp_enqueue_style('my_styles_css', false, array('default','user'), '1.0', 'all');

我看到一些相关的问题没有答案,或者最后两种方法对我来说仍然失败。

上述功能是我在安装 wordpress 时启用的插件的一部分。

【问题讨论】:

    标签: css wordpress


    【解决方案1】:

    add_action 函数有一个可能有帮助的优先级参数:

    $优先级 (int)(可选)你的功能有多重要。更改它以使您的函数在其他函数之前或之后调用。默认值为 10,因此(例如)将其设置为 5 将使其更早运行,将其设置为 12 将使其稍后运行。 默认值:10

    http://codex.wordpress.org/Function_Reference/add_action

    或者您可以直接在 header.php 文件中链接到您的 css,而不是使用 wp_enqueue_style,因此可以将其准确放置在您想要的位置。

    否则这里似乎有答案:How to force wp_enqueue_style to display CSS at the very bottom of the head tag to override all CSS rules?

    【讨论】:

    • 我阅读了相关链接,这就是我解决这个问题的方式。不确定他是如何使用“add_action”调用的,但我的语法不起作用。我尝试使用值为 12 的 $priority 使其稍后加载:add_action('wp_enqueue_scripts','load_my_style_wp_enqueue_scripts',12); 但仍在“默认”和“用户”之前加载。
    【解决方案2】:

    将样式表添加到主题的正确方法是使用 wp_enqueue_style() 函数:

    wp_enqueue_style( $handle, $src, $deps, $ver, $media );
    

    您可以使用 $deps 指定应在自定义样式表之前加载哪些样式表。

    【讨论】:

      【解决方案3】:

      add_action('wp_head','load_my_style_wp_enqueue_scripts'); 呢?

      使用wp_head 而不是wp_enqueue_scripts

      【讨论】:

      • 我已经尝试过使用 'wp_head',它在 'body' 而不是 'head' 中添加了样式,因此它没有被应用:add_action('wp_head','load_my_style_wp_enqueue_scripts'); &lt;head&gt; &lt;link rel="stylesheet" id="default-css" href="http://../default.css" type="text/css" media="screen,projection" /&gt; &lt;link rel="stylesheet" id="user-css" href=".../user.css" type="text/css" media="screen,projection" /&gt; &lt;/head&gt; &lt;body&gt; &lt;link rel='stylesheet' id='my_styles_css-css' href='.../my_styles.css?ver=3.1' type='text/css' media='all' /&gt; &lt;/body&gt;
      • 这很奇怪,根据wp_head参考它应该在'head'里面
      【解决方案4】:

      为什么不编辑主题?

      您可以从仪表板执行此操作

      Appearance -&gt; Editor -&gt; header.php

      最后添加你的 CSS。

      【讨论】:

      • 我不想编辑主题 (header.php),因为我有一些想要与不同网站共享的样式,我想让它独立于主题...
      猜你喜欢
      • 2021-03-26
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2018-09-17
      • 2019-02-28
      • 1970-01-01
      相关资源
      最近更新 更多