web-dev-qa-db-ja.com

抜粋 - 空の場合はメインコンテンツを使用しない

空の場合、get_the_excerpt()がthe_content()にデフォルト設定しないようにします。

このような動作します - まあそれは 'xxx'を返すようですので、私はhas_excerpt()が機能していないと思いますか?

function get_link_excerpt(){
    if(has_excerpt()){
        $LinkExcerpt = get_the_excerpt();
        return $LinkExcerpt."...";
    }
    return 'no excerpt'; 
}
add_filter('get_the_excerpt', 'get_link_excerpt');

これを制御するための最良の方法は何ですか?

最高、Dc

1
v3nt

WordPress get_the_excerpt のデフォルトフィルタを設定します:wp_trim_excerpt()「必要に応じて」 という内容から抜粋を生成するのは、この関数です。あなたがこの振る舞いを望まないなら、あなたはただフィルタを外すことができます:

add_action( 'init', 'wpse17478_init' );
function wpse17478_init()
{
    remove_filter( 'get_the_excerpt', 'wp_trim_excerpt' );
}

get_the_excerpt()post_excerptデータベースフィールドの内容を返すようになりました。空のときに何かを返したい場合は、このケースをチェックするだけで済みます。

add_filter( 'get_the_excerpt', 'wpse17478_get_the_excerpt' );
function wpse17478_get_the_excerpt( $excerpt )
{
    if ( '' == $excerpt ) {
        return 'No excerpt!';
    }
    return $excerpt;
}

get_the_excerpt()を呼び出す必要はありません - それはあなたのフィルタを再び適用するのでそれは無限の再帰を導入することさえできます!

3
Jan Fabry