web-dev-qa-db-fra.com

Insérer après le deuxième paragraphe sans balise <P>?

J'utilise un code comme celui présenté ci-dessous pour insérer des annonces après le premier paragraphe.

Le problème est que ce code nécessite que le contenu soit affiché dans les balises de paragraphe et je voudrais utiliser ce code pour insérer une DIV.
Lorsque je remplace simplement les balises par des balises div, le code ne fonctionne plus.

Comment puis-je supprimer les balises de paragraphe du code tout en permettant au code de rester fonctionnel?

<?php
$paragraphAfter= 1; //display after the first paragraph
$content = apply_filters('the_content', get_the_content());
$content = explode("<p>", $content);
for ($i = 0; $i <count($content); $i++ ) {
if ($i == $paragraphAfter) { ?>

CONTENT GOES HERE

<?php }
echo $content[$i] . "</p>";
} ?>
1
AndrettiMilas

Je dois souligner que je pense que cela va être très instable et que vous n'obtiendrez pas toujours les résultats souhaités, mais dans les cas simples, cela devrait fonctionner.

$content = apply_filters('the_content', get_the_content());
$content = explode("</p>", $content, 2);
// var_dump($content); // debug
echo $content[0].'</p>';
echo '<div>Extra Content</div>';
if (!empty($content[1])) {
  echo $content[1];
}
3
s_ha_dum

Celui-ci est similaire à celui affiché ci-dessus, mais il y a une boucle supplémentaire pour afficher tous les paragraphes après le contenu.

<?php $content = wpautop( get_the_content() );
$content = explode("</p>", $content);
echo wpautop( $content[0] ).'</p>'; ?>

<p>Special content or page breakpoint</p>

<?php                               
$i = 0;
foreach ($content as $paragraph => $value) {
    if ( $i > 0 ) { echo wpautop( $content[$i] ); }
    $i++;
} ?>

wpautop( get_the_content() ) passe les articles formatés à scinder en balises de paragraphe avec explode('</p>', $content) et foreach pour boucler tous les paragraphes après le pli.

0
Liam Hogan