web-dev-qa-db-fra.com

Ajouter un identifiant incrémentiel à chaque paragraphe du contenu

Je dois parcourir chaque paragraphe du contenu et ajouter un identifiant à chaque paragraphe avec une valeur incrémentielle.

function incrementparagraphs( $content ) {
    for ($i = 0; $i <count($content); $i++) {
        return str_replace( "<p>", "<p data-section-id=" . $i . ">", $content );
    }
}
add_filter( 'the_content', 'incrementparagraphs', 10, 1 );
3
davidcondrey

Si je comprends bien votre question, vous pouvez essayer ce qui suit:

add_filter( 'the_content', 'incrementparagraphs', 10, 1 );

function incrementparagraphs( $content ) 
{
     return preg_replace_callback(
         '|<p>|',
         function ( $matches )
         {
             static $i = 0;
             return sprintf( '<p data-section-id="%d">', $i++ );
         },
         $content
     );
}

pour remplacer chaque balise <p> par <p data-section-id="1">, l'attribut data-section-id contenant le nombre incrémentiel de la balise p actuelle.

Exemple:

Avant:

<p>aaa</p>
<p>bbb</p>
<p>ccc</p>

Après:

<p data-section-id="0">aaa</p>
<p data-section-id="1">bbb</p>
<p data-section-id="2">ccc</p>

Plus sur preg_replace_callbackici .

1
birgire