web-dev-qa-db-ja.com

WordPress目次以外でHTMLを置き換える方法は?

Mainbaの周りにbarbaを有効にするためにbarba.jsラッパーを挿入したいと思います。

現在のコードは以下のようなものです。

<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フィルター内にないため、上記の関数は機能しません。

とにかくそれを置き換えることはありますか?これに関する警告はありますか?

2
Kohei Murakami

私の推測では、次のような表現です。

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

詳細については、このリンクを参照してください。

4
Emma