Como convertir un campo de texto get_field() de ACF en un excerpt() wordpress 2019

Author : Jhon

Publicado : 21 septiembre, 2019

Si utilizamos un texto dentro de un campo personalizado como el Custom Advanced Field nos podríamos preguntar como hacer para resumir por ejemplo un texto de 200 palabras a solo 20 o 30 palabras, para ello utilizaremos la siguiente función :


  function custom_field_excerpt($campo) {

        global $post;
        $text = get_field($campo); //aqui el nombre del campo de tu ACF
        if ( '' != $text ) {

            $text = strip_shortcodes( $text );
            $text = apply_filters('the_content', $text);
            $text = str_replace(']]>', ']]>', $text);
            $excerpt_length = 40; // 40 words
            $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
            $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );

        }
        return apply_filters('the_excerpt', $text);
    }

Esta función hará posible que lo consigamos, ahora para mostrar lo que queremos solo debemos llamar a la función donde lo necesitemos con un echo delante así :

echo custom_field_excerpt('texto');


 /**
     * custom_field_excerpt($campo); esta funcion sirve para convertir el texto de un wisiwing de ACF a excerpt
     * strip_shortcodes(); Elimina todas las etiquetas de shortcode del contenido dado.
     * 
     * apply_filters ( cadena  $ etiqueta , valor mixto  $  ); se pasan dos valores
     * cadena = aqui pondremos el enlace de filtro, 'the_content'
     * valor mixto = El valor a filtrar, $text 
     * 
     * str_replace(); Remplaza los caracteres de una cadena por otros
     * ej : Replace the characters "world" in the string "Hello world!" with "Peter": echo str_replace("world","Peter","Hello world!");
     * https://www.w3schools.com/php/func_string_str_replace.asp
     * 
     * $excerpt_length = 40
     * Se establece la cantidad de palabras
     * 
     * $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
     * aqui estoy indicando que al final del excerpt se pongan ... puntos suspensivos
     * 
     * $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
     * Función: wp_trim_words ( string  $ text , int  $ num_words  =  55 , string  $ more  =  null  )
     * Recorta el texto a un cierto número de palabras.
     * https://developer.wordpress.org/reference/functions/wp_trim_words/
     * 
     */