Estoy creando un tema que mostrará extractos en la página de inicio para potencialmente docenas de publicaciones. No tengo extractos manuales en todas mis publicaciones, por lo que $post->post_excerpt
está vacío para muchas publicaciones. En el caso de que no haya un extracto manual, me gustaría usar la función incorporada get_the_excerpt (), pero no está disponible fuera del ciclo.
Al rastrear la función, parece que usa wp_trim_excerpt de wp-includes / formatting.php para crear extractos sobre la marcha. Lo estoy llamando en mi código como wp_trim_excerpt( $item->post_content )
, pero simplemente está devolviendo el contenido completo. ¿Estoy haciendo algo mal?
Sé que puedo crear mi propia función para crear un extracto, pero me gusta usar las funciones integradas siempre que sea posible, manteniendo mi código compatible con otros posibles complementos / filtros.
http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php
$myvar = apply_filters( 'the_excerpt', $myvar );
Respuestas:
Desde WP 3.3.0,
wp_trim_words()
es útil si puede obtener el contenido para el que desea generar un extracto. Espero que sea útil para alguien y ahorre la creación de su propia función de conteo de palabras.http://codex.wordpress.org/Function_Reference/wp_trim_words
fuente
wp_trim_excerpt()
tiene un poco de mecánica curiosa: si se le pasa algo, entonces no hace nada.Aquí hay una lógica básica detrás de esto:
get_the_excerpt()
verifica el extracto manual;wp_trim_excerpt()
repica si no hay un extracto manual y lo hace con contenido o avance.Ambos están estrechamente vinculados a variables globales y, por lo tanto, a Loop.
Fuera del bucle, es mejor sacar el código
wp_trim_excerpt()
y escribir su propia función de recorte.fuente
Actualizar:
Aquí hay una derivada de wp_trim_excerpt () que usé. Funciona perfectamente. Derivado de Wordpress versión 3.0.4
fuente
Aquí está mi opinión sobre un "trim_excerpt" que toma el objeto de publicación o una ID de publicación como parámetro.
Obviamente basado en lo que hay en el núcleo. No sé por qué esto (y get_the_author ()) no tienen equivalentes sin bucle.
fuente
+1 a Rast. Es muy extraño que no exista get_the_excerpt ($ post-> ID), cuando debería ser bastante obvio que debería. De todos modos, aquí está wp_trim_excerpt () en wordpress versión 3.0.4:
http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/formatting.php
Puede ver en la línea 1826 que está vinculado a la variable global $ post a través de get_the_contents. Y sí, no tengo idea de qué estaban pensando. Pero a partir de aquí, reemplace get_the_content con $ text en su propio my_excerpt, y debería comportarse de manera similar.
fuente
La función get_the_content () devolvería contenido completo si $ more! = 0. Debe configurar la variable global $ more a 0 para asegurarse de que el extracto return return de la función get_the_content ().
Función wp_trim_excerpt () modificada:
fuente
Usando las respuestas de otros anteriores, aquí hay una respuesta más simple que parece funcionar bien:
Lo estoy usando en las
<meta>
etiquetas en una función para definir las descripciones de OpenGraph. Entonces solo agrego:fuente