web-dev-qa-db-ja.com

$ post-> post_contentから抜粋してください

私はフィルタを使用してプラグインの出力を修正しています、そして$ post変数が私に利用可能であるので、私はそのように投稿内容を表示することができます:

<h3><?php echo $post->post_title; ?></h3>
<?php echo apply_filters( 'the_excerpt', $post->post_excerpt ); ?>

ただし、上記は抜粋フィールドにコンテンツが入力されている場合にのみ抜粋を表示します。 「the_excerpt」または「get_the_excerpt」を使用できた場合のように、切り捨てられたバージョンのコンテンツは表示されません。私も試してみました:

<?php echo apply_filters( 'the_excerpt', $post->post_content ); ?>

しかし、それはただ投稿の全内容を取得するだけです。

そして私はこれを試しました:

<?php echo apply_filters('the_excerpt', get_post_field('post_excerpt', $post-ID)); ?>

しかし、それは何も返しません。

The_excerptまたはget_the_excerptを使用できないときに$ postから全内容から抜粋を取得する方法はありますか?

ありがとうございました!

3
LBF

ループ の場合、これは$post->post_contentからの抜粋を直接生成します。

<?php echo wp_trim_excerpt(); ?>

もっと読む _こちら_

代替ソリューション:

ループに入っていない場合 の場合は、wp_trim_excerpt関数で行ったのと同じような実装を使用できます。

$text = strip_shortcodes( $post->post_content );
$text = apply_filters( 'the_content', $text );
$text = str_replace(']]>', ']]&gt;', $text);
$excerpt_length = apply_filters( 'excerpt_length', 55 );
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[&hellip;]' );
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
echo $text;
4
Fayaz