web-dev-qa-db-fra.com

Comment remplacer HTML dans WordPress en dehors du contenu?

Je voudrais insérer un wrapper barba.js pour activer barba autour de la balise principale.

Le code actuel est comme ci-dessous.

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

Et ce que je désire est comme ci-dessous.

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

Si la balise principale est à l'intérieur du filtre 'the_content', je pourrais coder comme ci-dessous.

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;
});

Cependant, <main> n'est pas à l'intérieur the_content filtre, la fonction ci-dessus ne fonctionne pas.

Est-il possible de le remplacer? et y a-t-il un avertissement à ce sujet?

2
Kohei Murakami

Je suppose qu'une expression similaire à:

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

pourrait fonctionner ici.

TESTER

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

en fonction de ce à quoi pourrait ressembler notre code:

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

echo $result;

Pour plus d'explications, veuillez consulter ce lien.

4
Emma