【问题标题】:How to replace HTML in WordPress outside Contents?如何在 WordPress 内容之外替换 HTML?
【发布时间】:2019-11-05 07:35:05
【问题描述】:

我想插入 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;
});

但是,&lt;main&gt; 不在the_content 过滤器中,上述功能不起作用。

还有什么可以代替的吗?对此有什么警告吗?

【问题讨论】:

  • 嗨@Emma,抱歉信息不足。我添加了当前代码和所需的输出。

标签: php html regex wordpress replace


【解决方案1】:

我的猜测是类似于:

(<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.

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 2011-02-19
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2021-11-19
    • 2022-01-06
    相关资源
    最近更新 更多