我想插入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
过滤器中,以上功能无法正常工作。
反正有替换它吗?对此有任何警告吗?
答案 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;