Siento que me estoy perdiendo algo bastante obvio, aquí, pero parece que no puedo lograr que WordPress coopere.
Estoy generando etiquetas de Facebook OG con una función. Todo funciona bien, excepto el extracto.
Desde la depreciación de get_the_excerpt($post->ID)
, ¿hay otra forma de crear un extracto sin tener que crear un ciclo completamente nuevo? Me parece excesivo
Mi primer instinto fue usar apply_filters()
:
$description = apply_filters('the_excerpt', get_post($post->ID)->post_content);
Eso me da la publicación completa, completa con contenido con formato HTML. De acuerdo, debe estar equivocado. Así que probé la siguiente idea lógica:
$description = apply_filters('get_the_excerpt', get_post($post->ID)->post_content);
No dados. Ahora no hay HTML, pero sigue siendo la publicación completa (lo cual es realmente confuso).
Está bien, no hay problema. Omitamos todas las cosas elegantes y solo veamos la entrada recortada:
$description = wp_trim_excerpt(get_post($post->ID)->post_content);
Ningún cambio.
Entonces, mi pregunta es esta: ¿qué diablos está pasando? ¿Hay algo que me falta aquí?
Ingresé al núcleo de WP para encontrar cómo the_excerpt()
funciona, y parece ser idéntico a mi llamada:
/**
* Display the post excerpt.
*
* @since 0.71
* @uses apply_filters() Calls 'the_excerpt' hook on post excerpt.
*/
function the_excerpt() {
echo apply_filters('the_excerpt', get_the_excerpt());
}
Tengo algunas preguntas basadas en mis hallazgos:
- ¿Por qué el filtro no se aplica como se esperaba?
- ¿Hay alguna manera de obtener el extracto fuera del bucle sin crear un nuevo bucle?
- ¿Estoy loco?
Gracias de antemano por echar un vistazo. Estoy bastante perplejo, aquí.
get_the_excerpt()
no está en desuso, solo el parámetro adicional que solía pasarle ya no se usa.Respuestas:
Resulta que la respuesta estaba adentro
wp_trim_excerpt()
.Se define en
wp-includes/functions.php:1879
:Por lo tanto, cualquier texto pasado no se procesa; solo funciona si se llama con un parámetro vacío.
Para resolver esto, agregué un filtro rápido a mi tema que resuelve el problema:
Es algo redundante, pero me gusta más que abrir nuevos bucles cada vez que quiero generar un extracto.
fuente
get_the_title($post->ID)
disponibles. La última línea de código fue$description = wp_trim_excerpt(get_post($post->ID)->post_content);
$content = apply_filters( 'rw_trim_excerpt', $content );
y$content = rw_trim_excerpt($content);
, pero ninguno de estos funcionó (el primero no recortó el resultado y el posterior produjo un error).get_the_excerpt
manejo de imitarthe_excerpt
, por lo que se puede llamar:apply_filters('get_the_excerpt', $content);
.Tratar:
Ver:
get_post
Codex para todos los miembros de retorno disponibles.fuente
get_the_excerpt()
no imita eso, verifique la fuente, solo está accediendo a la variable miembro de la$post
cual espost_excerpt
. Ver también el enlace del códice en la respuesta.the_excerpt
: "mostrará un extracto automático que se refiere a las primeras 55 palabras del contenido de la publicación". Estoy buscando imitar ese comportamiento fuera del circuito.Puede usar mi función personalizada para filtrar el contenido (es de NARGA Framework )
Recorte automático de código corto, código HTML, eliminar [...], agregar texto "Leer más" (traducible)
fuente