content_arr['extended']
またはcontent_arr['main']
が出力の段落タグを削除するという奇妙な問題に遭遇しています。
これを解決しようとしているどんな助け、または私が見ていることに対する何かへの洞察は大いに感謝されるでしょう。
私は出力にwpautop
を使用して以下を追加するとそれが問題を解決するようです。私はこれがなぜそれを修正するのか私よりも賢い人から知りたいのですが。 the_content
を使用したときにpタグが含まれるのに対し、get_extended
を使用したときにpタグが削除されるのはなぜですか。
$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
にはデフォルトで段落タグがありません。 wpautop
はこの関数を使用するときに適用されるフィルタの1つなので、通常はthe_content()
を使用して表示されるときに追加されます。これはdo_shortcode
と他のいくつかの関数にも当てはまります。
拡張コンテンツをページに表示するときは、各部分を関数wpautop
およびdo_shortcode
などに渡すか、代わりにフィルタthe_content
を適用する必要があります。
<?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>