web-dev-qa-db-fra.com

the_excerpt et les codes courts

J'utilise the_excerpt sur ma page d'index. J'utilise également un shortcode dropcap au début de chacun de mes messages. Sur la page d’index, les publications n’afficheront pas la lettre entourée du shortcode dropcap. Si mon message commence avec le mot "Chien", la page d'index affiche "og". Comment puis-je faire fonctionner les codes courts lors de l'utilisation de the_excerpt?

Petit code

    function drcap ($atts, $content = null) {
    return '<div class="dropcap">' . do_shortcode($content) . '</div>';
    }

    add_shortcode('dropcap', 'drcap');
6
Colton Allen

Collez ceci dans le fichier functions.php de votre thème.

add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');
10
Bainternet

Dans l'extrait généré automatiquement, shortcodes sera supprimé par Wordpress :

Un extrait généré automatiquement aura également tous les codes courts et les balises supprimés. Il est réduit à une limite de Word et la longueur par défaut est de 55 mots.

Quoi qu'il en soit, si vous utilisez le champ extrait manuel pour votre message, cela fonctionne.

2
H6.

Voici une solution pour inclure la sortie de code court dans les extraits générés automatiquement par Wordpress:

add_filter('the_excerpt', 'do_shortcode');
remove_filter('get_the_excerpt', 'wp_trim_excerpt', 10);
add_filter('get_the_excerpt', 'my_custom_wp_trim_excerpt', 99, 1);
function my_custom_wp_trim_excerpt($text) {
    if(''==$text) {
        $text= preg_replace('/\s/', ' ', wp_strip_all_tags(get_the_content('')));
        $text= explode(' ', $text, 56);
        array_pop($text);
        $text= implode(' ', $text);
    }
    return $text;
}

Cette implémentation suppose une longueur de mot de 55.

J'espère que ça aide quelqu'un.

1
Programmer Dan

Ajoutez également ces 2 lignes à votre fichier functions.php pour obtenir des résultats complets:

add_filter('get_the_excerpt', 'shortcode_unautop');
add_filter('get_the_excerpt', 'do_shortcode');
0
tammy