web-dev-qa-db-fra.com

the_excerpt () ou get_the_excerpt avec échappement de shortcode

J'ai quelques articles qui ont un shortcode dropcap enroulé autour du premier caractère comme ceci:

[dropcap]T[/dropcap]his is a dropcap. 

Le remplacement de ce shortcode donne:

<span class="dropcap">T</span>his is a dropcap.

Cependant, lorsque j'appelle the_excerpt () ou get_the_excerpt () sur ces publications, son retour:

"his is a dropcap".

J'en ai besoin pour retourner "This is a dropcap" comme s'il n'y avait pas de shortcode.

3
N2Mystic

Vous pouvez faire en sorte que WordPress exécute votre code court dans l'extrait en s'accrochant au filtre get_the_excerpt et en écrasant la fonction wp_trim_excerpt par défaut, chargée de supprimer les balises de code court de l'extrait pointées par Puce:

add_filter('get_the_excerpt', 'do_my_shortcode_in_excerpt');
function do_my_shortcode_in_excerpt($excerpt) {
    return do_shortcode(wp_trim_words(get_the_content(), 55));
}

Ceci est appliqué aux sorties the_excerpt() et get_the_excerpt(). Si vous souhaitez l'appliquer uniquement à la sortie the_excerpt(), accrochez-vous au filtre the_excerpt:

add_filter('the_excerpt', 'do_my_shortcode_in_excerpt');
function do_my_shortcode_in_excerpt($excerpt) {
    return do_shortcode(wp_trim_words(get_the_content(), 55));
}
3
Ahmad M

La fonction the_excerpt() n'analyse pas les codes courts. WordPress supprime en réalité l'intégralité du shortcode de l'extrait. Puisque le "T" est encapsulé dans un shortcode, il n’est pas généré par the_excerpt().

La solution la plus simple consiste probablement à créer un extrait personnalisé, via la méta-boîte Message de l'extrait sur l'écran Modifier le message, pour les messages dans lesquels vous utilisez le shortcode Dropcap.

La meilleure solution est probablement de supprimer un shortcode qui existe uniquement pour faire quelque chose qui peut être fait de manière fiable en utilisant rien de plus que des règles CSS.

2
Chip Bennett