抜粋を取得するための標準的な方法は、the_excerpt()
またはget_the_excerpt()
テンプレートタグを使用することです。 「抜粋」フィールドの実際の内容だけを取得しようとしています。
抜粋がある場合は、(要約したり[...]を追加したりせずに)完全に表示したいと思います。抜粋がない場合は、何も表示したくありません。
Wordpressでこれを行う簡単な方法はありますか?
このようなもの:
$real_excerpt = ???
if ( $real_excerpt ) {
echo $real_excerpt;
} // shouldn't show anything if there isn't a custom excerpt
グローバルな$post
変数を使わないのはなぜですか?その投稿に対応するdb行にある内容のオブジェクトが含まれています。使い方は次のとおりです。
global $post; // If for some reason it's readily accessible, invoke it
if($post->post_excerpt != '') {
echo($post->post_excerpt);
}
または
$my_post = get_post($post_id);
if($my_post->post_excerpt != '') {
echo($my_post->post_excerpt);
}
非常に単純ですが、うまく動かない場合はお知らせください。
the_excerpt()
the_excerpt()
のソースを見ると、次の関数定義があります。
function the_excerpt() {
echo apply_filters('the_excerpt', get_the_excerpt());
}
これは、get_the_excerpt()
がプレーンでフィルタなしのコンテンツを保持していることを意味します。
get_the_excerpt()
get_the_excerpt()
のソースを見てみると、次のことがわかります。
function get_the_excerpt( $deprecated = '' ) {
if ( !empty( $deprecated ) )
_deprecated_argument( __FUNCTION__, '2.3' );
global $post;
$output = $post->post_excerpt;
if ( post_password_required($post) ) {
$output = __('There is no excerpt because this is a protected post.');
return $output;
}
return apply_filters('get_the_excerpt', $output);
}
get_the_excerpt()
にフィルタが追加されています。
wp_trim_excerpt()
somethingに添付されているすべてのコアフィルターは、 ~/wp-includes/default-filters.php
内にあります。
そこには(WPバージョン3.4の場合)、以下のフィルタがあります: 行#147のwp_trim_excerpt()
。
wp_trim_excerpt()
関数は、内側から見ると次のようになります。
function wp_trim_excerpt($text = '') {
$raw_excerpt = $text;
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
単純にフィルタを削除することで、これらの各機能をすべての不要なフィルタと一緒に使用できます。しかしこれはまた、他のすべての要素からそれらを削除することを意味します。
プレーンな->excerpt
を呼び出すと、すべての場合で抜粋が得られます - 何もない場合を除く。つまり、 この回答で説明したようにscripts
タグとCDATA
タグを挿入することができます _ですが、パスワードの確認後のチェックも必要です。