Как заменить HTML в WordPress вне содержимого? - PullRequest
2 голосов
/ 23 июня 2019

Я хотел бы вставить упаковщик 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 Ответ

3 голосов
/ 23 июня 2019

Я предполагаю, что здесь может работать выражение, подобное:

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

.

TEST

$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;

Дополнительные сведения см. По этой ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...