Je rencontre un problème étrange où content_arr['extended']
ou content_arr['main']
supprime les balises de paragraphe dans la sortie.
Toute aide, ou un aperçu de quelque chose que je cherche à résoudre, serait grandement apprécié.
semble quand j’ajoute ce qui suit en utilisant wpautop
à la sortie, cela résout le problème. J'aimerais savoir de quelqu'un de plus intelligent que moi pourquoi cela résout le problème. pourquoi, lorsque nous utilisons simplement the_content
, les balises p sont incluses, mais lorsque nous utilisons get_extended
, les balises p sont-elles supprimées?
$content_arr = get_extended ( $post->post_content );
if( strpos( get_the_content(), '<span id="more-' ) == true ) {
echo wpautop($content_arr['main']);
echo '<div class="morecontent">'. wpautop($content_arr['extended']).'</div>';
}
else {
the_content();
}
$post->post_content
n'a pas de balises de paragraphe par défaut. Généralement, ils sont ajoutés lors de l'affichage à l'aide de the_content()
car wpautop
est l'un des filtres appliqués lors de l'utilisation de cette fonction. Ceci est également vrai pour do_shortcode
et quelques autres fonctions.
Lors de l'affichage de contenu étendu sur la page, vous devez transmettre chaque partie aux fonctions wpautop
et do_shortcode
etc., ou appliquer le filtre the_content
à la place.
<?php $parts = get_extended( $post->post_content ); ?>
<div class="post_content">
<?php echo wpautop( do_shortcode( $parts['main'] ) ); // Not entirely sure of the best order. ?>
<?php if ( ! empty( $parts['extended'] ) ) : ?>
<!-- Example Bootstrap toggle link. -->
<a href="#read-more" data-toggle="collapse" data-target="#read-more">
<?php _e( 'Read More' ); ?>
</a>
<div id="read-more">
<?php echo apply_filters( 'the_content', $parts['extended'] ); ?>
</div>
<?php endif; ?>
</div>