web-dev-qa-db-fra.com

Pourquoi content_arr ['extended'] supprime les balises de paragraphe?

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é.

1
Zach Smith

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();
            }
1
Zach Smith

$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>
0
Shaun Cockerill