web-dev-qa-db-fra.com

the_excerpt filtre avec un extrait vide

Comment ajuster l'extrait de post quand l'extrait lui-même est vide/vide? J'ai regardé et le code pour le filtre the_excerpt teste si vide et si l'extrait est vide, renvoie avant que apply_filters soit appelé, ce qui est probablement logique dans la plupart des cas. Je veux définir un extrait "par défaut" si possible.

https://core.trac.wordpress.org/browser/tags/4.7/src/wp-includes/post-template.php#L380

Je suppose qu'il existe un autre moyen de modifier l'extrait, mais je ne l'ai pas encore trouvé. Je vous remercie!

À la demande de Vinod Dalvi, j'ajoute quelques détails. J'utilise ceci sur un thème enfant de vingt-six ans (v1.2) mais je viens de le tester en utilisant uniquement le thème parent sur une installation WordPress essentiellement vierge. J'utilise le code suivant:

add_filter( 'the_excerpt', function( $excerpt ) {
    die( 'the_excerpt filter was called' );
} );

En utilisant le code ci-dessus, je ne vois toujours le filtre être appelé que lorsque le champ extrait n'est pas vide et, comme l'indique le code lié ci-dessus, il apparaît qu'il existe un test de vide et un retourbeforele filtre est appliqué.

J'ai trouvé mon problème. Le thème vingt-six (v1.2) utilise la fonction twentysixteen_excerpt qui appelle la fonction has_excerpt pour tester l'extrait avant d'appeler la fonction the_excerpt qui déclenche le filtre the_excerpt. Le test de vide ne concerne que le filtre get_the_excerpt que j'utilisais à l'origine, d'où une partie au moins de ma confusion. Donc, la réponse de Vinod Dalvi est correcte selon le thème que vous utilisez.

Étant donné que la question initiale ne se situait pas dans le contexte du thème des vingt-six ans et même si la réponse de Vinod est correcte (la plupart du temps), j'ai ressenti le besoin d'ajouter que si vous souhaitez utiliser ce thème pour le thème des vingt-six ans, vous devez outrepasser le template-parts/content-single.php. modèle dans votre thème enfant et supprimez twentysixteen_excerpt (L16) au profit de the_excerpt() (fonction).

1
JSP

Si vous parlez d'un extrait défini manuellement dans le champ extrait de post, vous pouvez utiliser le code suivant dans le fichier functions.php de votre thème ou plug-in enfant pour afficher un extrait par défaut si aucun extrait ne le définit.

function display_default_excerpt( $excerpt ) {

    if ( has_excerpt() ) {
        return $excerpt;
    } else {
        return __( 'There is no excerpt so displaying default excerpt.' );
    }
}
add_filter( 'the_excerpt', 'display_default_excerpt' );
1
Vinod Dalvi