Saltar al contenido

Wordpress – Permitir HTML en extracto

Solución:

GUÍA COMPLETA DE EXTRACTOS

Recientemente respondí algunas preguntas sobre extractos, así que voy a dar una explicación detallada que cubra todo lo que pueda.

PREFACIO

Parece haber un par de preguntas que surgen de esta respuesta sobre dónde debería ir el código, y la respuesta es, realmente depende de usted y de cómo lo crea conveniente. Hay un par de opciones en las que puede colocar el código (si no se indica explícitamente):

  • En functions.php de su tema o en cualquier archivo úselo como un archivo de funciones. Solo recuerde cuando haga esto, si el tema no es el suyo, todos los cambios se perderán cuando actualice su tema

  • Una mejor forma sería utilizar el código en un tema hijo. Como arriba, en el archivo functions.php o funciones relacionadas

  • Usa el código en un complemento. Esta es la forma preferida, ya que hace que el código esté disponible en todos los temas. Si cambia de tema, no tiene que preocuparse por reescribir el mismo código.

Espero que esto aclare las cosas un poco 🙂

ETIQUETAS HTML / FORMATEO

the_excerpt() en primer lugar, no acepta ningún parámetro, por lo que no se le puede pasar nada. Es un hecho que the_excerpt() recorta el contenido a 55 palabras y todas las etiquetas HTML se eliminan antes de devolver el texto. the_excerpt() se encuentra en wp-includes / post-template.php. Para permitir algunas o todas las etiquetas HTML en el extracto, se debe crear un nuevo extracto.

En primer lugar, primero debe eliminarse la función original, y luego la nueva función debe conectarse a get_the_excerpt. Tenga en cuenta que este nuevo extracto seguirá siendo invocable como the_excerpt() en archivos de plantilla, no es necesario cambiar eso. get_the_excerpt() se encuentra en wp-includes / post-template.php.

El extracto utiliza wp_trim_excerpt para devolver el texto recortado, por lo que debemos eliminar wp_trim_excerpt primero del filtro de extractos. wp_trim_excerpt() se encuentra en wp-includes / formatting.php, línea 2355. Así es como:

remove_filter('get_the_excerpt', 'wp_trim_excerpt');

Ahora puede agregar su nuevo extracto a get_the_excerpt

add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt');

Para permitir etiquetas / formato html, necesitaremos especificar qué etiquetas deberá permitir. Puede utilizar lo siguiente strip_tags declaración para lograr eso

$wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags());

El segundo argumento wpse_allowedtags() es una pequeña función que se usa para agregar las etiquetas the_excerpt() permitirá. Para obtener una lista completa de etiquetas HTML 5 válidas, consulte aquí. Aquí está la función, agregue cualquier etiqueta html a esto que necesite permitir / mantener

function wpse_allowedtags() 
// Add custom tags to this string
    return '
,

Si necesita permitir todas las etiquetas HTML, es decir, no eliminar ninguna etiqueta, el strips_tags() La función se puede omitir / eliminar por completo.

Sin embargo, un punto a tener en cuenta es que cuando se permiten etiquetas html, estas etiquetas se cuentan como palabras, por lo que su recuento de palabras para extractos con etiquetas y sin etiquetas no será el mismo. Para corregir eso, primero deberá eliminar estas etiquetas del recuento de palabras real para que solo se cuenten las palabras.

He escrito un extracto que permitirá todas las etiquetas, contará solo palabras como palabras y completará una oración después de la cantidad establecida de palabras (para que el texto no se recorte a mitad de la oración) y agregará un texto de lectura más después de la última palabra .

Aquí está el código completo

function wpse_allowedtags() 
    // Add custom tags to this string
        return '

LONGITUDES DE EXTRACTO PERSONALIZADO

A veces es necesario mostrar extractos simples de diferentes longitudes y no es viable escribir un extracto para cada publicación / función / página. Aquí hay una pequeña y agradable función que usa wp_trim_words

function wpse_custom_excerpts($limit) 
    return wp_trim_words(get_the_excerpt(), $limit, '' . ' …' . __( 'Read more  »', 'wpse' ) . '');

Lo que hace esta pequeña función es tomar get_the_excerpt, recortándolo a $limit establecido por el usuario y devolviendo el texto con un enlace leer más al final.

Puede llamar a este extracto de la siguiente manera en su plantilla

echo wpse_custom_excerpts($limit);

dónde $limit será su recuento de palabras, por lo que un extracto de 30 palabras será

echo wpse_custom_excerpts(30);

Solo una cosa para recordar aquí, si establece su límite en más de 55 palabras, solo se devolverán 55 palabras ya que el extracto tiene solo 55 palabras de longitud. Si se necesitan extractos más largos, utilice get_the_content en lugar de.

LONGITUD DEL EXTRACTO PERSONALIZADO

Si solo necesita modificar la longitud de the_excerpt(), puede utilizar la siguiente función

function wpse_excerpt_length( $length ) 
    return 20;

add_filter( 'excerpt_length', 'wpse_excerpt_length', 999 );

Recuerde, deberá establecer una prioridad mayor que 10 para que su función personalizada se ejecute después de la predeterminada.

AÑADIR LEER MÁS ENLACE

Todo el texto devuelto por el extracto tiene el odio [...] al final que no se puede hacer clic. Para agregar un texto de lectura más en el lugar de los Hellips, use esta función

 function wpse_excerpt_more( $more ) 
    return ' ' . __('Read More', 'your-text-domain') . '';

add_filter( 'excerpt_more', 'wpse_excerpt_more' );

EDITAR

Extracto del primer párrafo

Quiero mantener esto completo, así que aquí está el extracto que se recorta después del primer párrafo.

Aquí hay una función que mantiene intactas las etiquetas HTML, agrega un enlace "Leer más" al final del extracto y recorta el extracto después del primer párrafo.

if ( ! function_exists( 'wpse0001_custom_wp_trim_excerpt' ) ) : 

    function wpse0001_custom_wp_trim_excerpt($wpse0001_excerpt) 
        global $post;
        $raw_excerpt = $wpse0001_excerpt;
        if ( '' == $wpse0001_excerpt ) 

            $wpse0001_excerpt = get_the_content('');
            $wpse0001_excerpt = strip_shortcodes( $wpse0001_excerpt );
            $wpse0001_excerpt = apply_filters('the_content', $wpse0001_excerpt);
            $wpse0001_excerpt = substr( $wpse0001_excerpt, 0, strpos( $wpse0001_excerpt, '

' ) + 4 ); $wpse0001_excerpt = str_replace(']]>', ']]>', $wpse0001_excerpt); $excerpt_end = ' ' . ' » ' . sprintf(__( 'Read more about: %s  »', 'pietergoosen' ), get_the_title()) . ''; $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); //$pos = strrpos($wpse0001_excerpt, '

EDITAR 29-10-2015

Para cualquier persona que necesite una solución alternativa para no mostrar el enlace leer más después del extracto cuando el extracto es más corto que la cantidad de palabras configuradas, consulte la siguiente pregunta y respuesta.

  • Leer más etiqueta aparece en CADA publicación

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología