如何在外部目录中替换WordPress中的HTML?

时间:2019-06-23 02:21:02

标签: php html regex wordpress replace

我想插入barba.js包装器以在主标签周围启用barba。

当前代码如下。

<main>
    <article>
        ........
    </article>
</main>

我想要的是下面的样子。

<div id="barba-wrapper">
    <div class="barba-container">
        <main>
            <article>
                ........
            </article>
        </main>
    </div>
</div>

如果主标签位于'the_content'过滤器内,则我可以像下面这样编码。

add_filter('the_content', function($content) {
    $content = str_replace('<div id="barba-wrapper"><div 
    class="barba-container"><main>', '<main>', $content);
    $content = str_replace('</main>', '</main></div></div>', $content);
    return $content;
});

但是,<main>不在the_content过滤器中,以上功能无法正常工作。

反正有替换它吗?对此有任何警告吗?

1 个答案:

答案 0 :(得分:3)

我的猜测是,该表达式类似于:

(<main>(.*?)<\/main>)

可以在这里工作。

测试

$re = '/(<main>(.*?)<\/main>)/s';
$str = '

<main>

some content we wish goes here

</main>';
$subst = '<div id="barba-wrapper"><div class="barba-container">$1</div></div>';
$result = preg_replace($re, $subst, $str);

echo $result;

我们的代码可能基于它:

$re = '/(<main>(.*?)<\/main>)/s';
$subst = '<div id="barba-wrapper"><div class="barba-container">$1</div></div>';
$result = preg_replace($re, $subst, $content);

echo $result;

For additional explanation, please see this link.