使用正则表达式和 add_filter() 替换 html 标签

Replacing html tags using regex and add_filter()

我想用 <h1> 标签替换 <h2 class="fusion-post-title"> 标签。

我已经在 regex101.com 上测试了正则表达式并且捕获组在那里。

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

function replace_content($content){

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

    return $content;
}

add_filter('the_content','replace_content');

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

  1. 您可以在主题中搜索 fusion-post-title 并查看出现了哪些功能,以及是否有您可以使用的过滤器或选项。不幸的是,由于这是一个高级主题,我没有最新的副本可供查看,否则我会为您指明正确的方向。

  2. 您可以直接编辑主题模板:我建议对 child 主题执行此操作, 而不是直接编辑主题文件。有关设置 child 主题的更多信息,您应该 refer to the codex.

假设您选择选项 2:一旦您设置了 child 主题(即您已经设置了 functions.phpstyles.css),您可以将parent主题中的相关模板复制到child主题中,然后根据需要进行编辑。如果您查看 Avada 的 single.php,您会注意到类似于以下内容的内容:

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

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

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

对需要模板的地方重复此操作。