【问题标题】:wordpress function: using str_replace to strip css in headwordpress 函数:使用 str_replace 去除 head 中的 css
【发布时间】:2011-08-12 23:46:05
【问题描述】:

我目前正在尝试删除/评论 wordpress 头部中的标记。

这是我的功能。

function strip_style() { ?>
    <?php

    $commented_style = str_replace("<link rel="stylesheet" type="text/css" href="http://localhost/wp-content/themes/headway-208/style.css" />", "<!-- <link rel="stylesheet" type="text/css" href="http://localhost/wp-content/themes/headway-208/style.css" /> -->", $rawstring);

    echo commented_style;

    ?>
<?php
}

add_action('wp_head', 'strip_style', 1);

我也不能使用wp_enqueue_stylewp_deregister_style,因为我要删除的行是用父主题硬编码的。

基本上我想禁用默认 css (styles.css) 的加载,这样我就可以使用自己的样式而不覆盖默认样式。

请告知我使用 str_replace() 的方法是否好。你能推荐一个替代方案吗?

谢谢!

【问题讨论】:

  • 我认为,如果您只是创建一个在必要时覆盖主样式表的新样式表,您的时间会更好。
  • 嗯.. 我会接受你的观点。但我试图避免这条路线,因为我不想最终拥有这样的样式表。
  • body.custom {....} .custom p {...} .custom a {...},我觉得这很混乱。所以如果服务器端只有一个选项可以打开特定的 css,我会更喜欢那个。
  • 是的,但是 Web 开发通常很混乱 :-)

标签: php wordpress wordpress-theming


【解决方案1】:

只需将 header.php 文件复制到您的子主题中并编辑掉您不想出现的内容。 如果您在子主题和父主题中都有 header.php,则将使用子主题中的那个。这对所有文件都很重要。如果您想编辑任何父主题文件,只需将其复制到子主题中并在那里进行编辑。

就 css 而言,首先父主题 style.css 将被链接,其下方为子主题 style.css,因此子主题中具有相同特性的每个规则都将覆盖父主题规则,不需要任何曼波- 巨型肮脏魔法。

【讨论】:

    【解决方案2】:

    也许我没有完全理解,但是你为什么不直接复制现有的主题文件夹,重命名它并通过擦除 style.css 来制作你自己的主题,然后重新开始?

    无论如何,如果您必须执行 str_replace(),那么您的代码都是错误的。首先,你的 PHP 标签到处都是,你不能嵌套它们。其次,您的字符串将无法正确解析,因为您在双引号字符串中使用了双引号。固定和简化:

    <?php
    
    function strip_style() {
        $link = '<link rel="stylesheet" type="text/css" href="http://localhost/wp-content/themes/headway-208/style.css" />';
        echo str_replace($link, '<!-- ' . $link . '-->', $rawstring);
    
        // But where does $rawstring come from?
    }
    
    ?>
    

    .

    <?php
    
        add_action('wp_head', 'strip_style', 1);
    
    ?>
    

    【讨论】:

    • 嗨,BadHorsie,谢谢!我正在创建一个基于 headwaythemes 的子主题。默认情况下,headway 为您提供网站的基本样式(style.css)。 Headway 建议为您的自定义样式添加一个“.custom”类。所以它看起来像这样。 body.custom {...} 或 .custom p {...}。对我来说,我觉得它很脏,如果可能的话,我将在服务器端禁用该 css。我现在可以在一个干净的状态中使用我的自定义 css 并且没有前置类。
    • “$rawstring”也是我的困惑和问题。我怎么得到它?
    猜你喜欢
    • 1970-01-01
    • 2013-02-28
    • 2017-01-01
    • 2023-03-24
    • 2013-05-09
    • 2014-06-17
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多