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/ * */