the_excerpt y shortcodes

18 feb 2012, 07:41:21
Vistas: 17.7K
Votos: 7

Estoy usando the_excerpt en mi página de índice. También estoy usando un shortcode de letra capital al inicio de cada una de mis publicaciones. En la página de índice, las publicaciones no muestran la letra con el shortcode alrededor. Si mi publicación comienza con la palabra "Perro", la página de índice muestra "erro". ¿Cómo hago que los shortcodes funcionen cuando uso the_excerpt?

Shortcode

function drcap ($atts, $content = null) {
    // Función que crea una letra capital con formato
    return '<div class="dropcap">' . do_shortcode($content) . '</div>';
}

// Registrar el shortcode 'dropcap'
add_shortcode('dropcap', 'drcap');
0
Todas las respuestas a la pregunta 4
0
12

Pega esto en el archivo functions.php de tu tema

add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');
18 feb 2012 09:13:59
0

En los extractos generados automáticamente, los shortcodes serán eliminados por WordPress:

Un extracto generado automáticamente también eliminará todos los shortcodes y etiquetas. Se recorta hasta un límite de palabras y la longitud predeterminada es de 55 palabras.

Sin embargo, si utilizas el campo de extracto manual para tu publicación, sí funciona.

24 abr 2015 23:59:59
1

Aquí tienes una solución para incluir la salida de shortcodes en los extractos generados automáticamente por 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;
}

Esta implementación asume una longitud de 55 palabras.

Espero que le sea útil a alguien.

24 sept 2015 21:24:59
Comentarios

Muchas gracias. La solución aceptada no funciona para mí—y tal vez simplemente no funcione para WordPress "moderno" (2016+). Esto hace lo que necesito, sin embargo.

Andy Giesler Andy Giesler
16 mar 2016 21:33:26
0

Además, añade estas 2 líneas a tu archivo functions.php para obtener resultados completos y detallados:

add_filter('get_the_excerpt', 'shortcode_unautop');
add_filter('get_the_excerpt', 'do_shortcode');
4 mar 2015 16:13:47