使用regex和add_filter()替换html标记

时间:2016-12-12 20:38:20

标签: php wordpress regex-negation

我想将<h2 class="fusion-post-title">标记替换为<h1>标记。

我在regex101.com上测试了正则表达式,捕获组就在那里。

这是正确的方法吗?也许Wordpress没有触发我的add_filter()

function replace_content($content){

    $content = preg_replace('#<h2 class="fusion-post-title"(.*?)>(.*?)<\/h2>#si', '<h1 class="fusion-post-title"${1}>${2}</h1>', $content);

    return $content;
}

add_filter('the_content','replace_content');

1 个答案:

答案 0 :(得分:0)

标题不是内容的一部分,因此您的过滤器无法正常工作。我上次检查主题融合主题时,他们用于生成标题的功能没有应用您可以挂钩的过滤器,但他们确实建议有更改主题的主题选项使用的标签。看到你有几个选择:

  1. 您可以搜索fusion-post-title主题并查看出现的功能,以及是否可以使用任何过滤器或选项。不幸的是,由于它是一个优质的主题,我没有最近的副本可以检查,否则我会指出你正确的方向。

  2. 您可以直接修改主题模板:我建议您直接使用主题文件而不是主题文件。有关设置子主题的更多信息,您应该refer to the codex.

  3. 假设您使用选项2:一旦您设置了您的孩子主题(即您已获得functions.phpstyles.css),您就可以将相关模板从主题复制到主题,然后根据需要进行编辑。如果您看一下Avada的single.php,您会注意到类似的内容:

    <?php echo avada_render_post_title( $post->ID, false, '', '2' ); ?>
    

    最后一个参数 - 2 - 是要使用的标题级别(即h2)。只需将其更改为1即可。或者用你自己的标记完全替换它:

    <h1 class="post_title"><?php the_title();?></h1>
    

    重复此操作,需要任何模板。