web-dev-qa-db-fra.com

extrait - n'utilisez pas le contenu principal s'il est vide

essayer d'empêcher get_the_excerpt () de passer par défaut à the_content () s'il est vide.

cela fonctionne un peu - bien, il semble renvoyer 'xxx', alors je pense que has_excerpt () ne fonctionne pas?

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

quel est le meilleur moyen de contrôler cela?

meilleur, Dc

1
v3nt

WordPress définit un filtre par défaut pour get_the_excerpt : wp_trim_excerpt(). C’est cette fonction qui générera un extrait du contenu "si nécessaire" . Si vous ne voulez pas ce comportement, vous pouvez simplement décrocher le filtre:

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

Maintenant, get_the_excerpt() retournera simplement le contenu du champ de base de données post_excerpt. Si vous voulez retourner quelque chose quand il est vide, il vous suffit de cocher cette case:

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

Il n'est pas nécessaire d'appeler get_the_excerpt() - il peut même introduire une récursion sans fin car il applique à nouveau votre filtre!

3
Jan Fabry