¿Mostrar enlaces en extractos?

3

Tengo un problema con the_excerpt y no puedo encontrar la respuesta en ningún lado ... Simplemente quiero permitir que se pueda hacer clic en los enlaces cuando se muestran a través de the_excerpt! Tiene que haber una función para esto, en lugar de confiar en un complemento. Pero no puedo encontrarlo y los complementos de extractos avanzados son tan complejos que no puedo encontrar el pequeño fragmento de código que hace que esto funcione.

    
pregunta AndrettiMilas 07.09.2011 - 20:16

4 respuestas

8

Puedes usar el script que encontré aquí: enlace

Lo modifiqué para mostrar enlaces en el extracto, y eliminé algunas de las otras funciones:

<?php
function keep_my_links($text) {
  global $post;
if ( '' == $text ) {
    $text = get_the_content('');
    $text = apply_filters('the_content', $text);
    $text = str_replace('\]\]\>', ']]&gt;', $text);
    $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
    $text = strip_tags($text, '<a>');
  }
  return $text;
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'keep_my_links');
?>

La parte que lo arregla es $text = strip_tags($text, '<a>'); . junto con remove_filter('get_the_excerpt', 'wp_trim_excerpt');

    
respondido por el Jeremy Jared 07.09.2011 - 21:51
1

Puede usar el siguiente complemento para permitir enlaces y otras etiquetas html en los extractos

Plugin: Mostrar enlaces en extractos de wordpress

No tengo ninguna afiliación con respecto al complemento

    
respondido por el user3162185 26.05.2014 - 08:18
1

El código básicamente permite que una lista de etiquetas HTML separadas por comas funcione en tus extractos que normalmente son eliminados por WordPress. Probado en Génesis y trabaja.

 add_filter( 'get_the_content_limit_allowedtags', 'get_the_content_limit_custom_allowedtags' );

function get_the_content_limit_custom_allowedtags() {
// Add custom tags to this string
return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>'; 
}

Fuente enlace

    
respondido por el Brad Dalton 23.02.2014 - 15:02
0

WordPress elimina las etiquetas en wp_trim_words() , que es llamado por get_the_excerpt() ; así que tenemos que filtrar 'wp_trim_words', básicamente copiando esa función con un cambio: reemplazar wp_strip_all_tags() con strip_tags() .

No queremos que se modifiquen otras funciones que ejecutan wp_trim_words , así que agregamos nuestro filtro mientras se ejecuta get_the_excerpt() y lo eliminamos cuando hayamos terminado.

// Allow links in excerpts
function sg_trim_words( $text, $num_words, $more, $original_text ) {
    $text = strip_tags( $original_text, '' );
    // @See wp_trim_words in wp-includes/formatting.php
    if ( strpos( _x( 'words', 'Word count type. Do not translate!' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
        $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
        preg_match_all( '/./u', $text, $words_array );
        $words_array = array_slice( $words_array[0], 0, $num_words + 1 );
        $sep = '';
    } else {
        $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
        $sep = ' ';
    }
    if ( count( $words_array ) > $num_words ) {
        array_pop( $words_array );
        $text = implode( $sep, $words_array );
        $text = $text . $more;
    } else {
        $text = implode( $sep, $words_array );
    }
    // Remove self so we don't affect other functions that use wp_trim_words
    remove_filter( 'wp_trim_words', 'sg_trim_words' );
    return $text;
}
// Be sneaky: add our wp_trim_words filter during excerpt_more filter, which is called immediately prior
function sg_add_trim_words_filter( $excerpt_length ) {
    add_filter( 'wp_trim_words', 'sg_trim_words', 10, 4 );
    return $excerpt_length;
}
add_filter( 'excerpt_more', 'sg_add_trim_words_filter', 1 );

Escribí esta idea después de revisar otros métodos sugeridos, porque creo que esta es una solución más específica. La esencia se actualizará en el futuro.

    
respondido por el Greg Perham 07.06.2018 - 03:10

Lea otras preguntas en las etiquetas