Tengo un código que llama get_the_title()
y funciona, pero get_the_excerpt()
regreso vacío. ¿Cómo puedo hacer que funcione?
Este código está dentro de un complemento llamado "protocolo WP Facebook Open Graph". Aquí está la parte que quiero cambiar:
if (is_singular('post')) {
if (has_excerpt($post->ID)) {
echo "\t<meta property='og:description' content='".esc_attr(strip_tags(get_the_excerpt($post->ID)))."' />\n";
}else{
echo "\t<meta property='og:description' content='". [?] ."' />\n";
}
}else{
echo "\t<meta property='og:description' content='".get_bloginfo('description')."' />\n";
}
Aquí, has_excerpt
siempre falla y get_the_excerpt($post->ID)
ya no funciona (en desuso).
Entonces, ¿cómo puedo mostrar el extracto allí?
ps: también estoy usando el complemento "Extracto avanzado"
my_excerpt($post->post_content, get_the_excerpt())
y usando lamy_excerpt()
función de wordpress.stackexchange.com/questions/6961/…the_post()
(también funciona en la plantilla de publicación única) antes de llamarget_the_excerpt()
, configurará los datos necesarios para usted.Respuestas:
Encontré esta pregunta al mirar cómo hacer esto sin el objeto de publicación.
Mi investigación adicional reveló esta técnica ingeniosa:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
fuente
$post
variable global.$post_id
esté configurado (¿cuál es el valor de$post_id
? Y$post_id
es una identificación de publicación válida y legítima.)Como parece que ya tiene el objeto de publicación para el que necesita el extracto, puede forzar a que las cosas funcionen:
La
setup_postdata()
función globalizará el$post
objeto y lo hará disponible para la función de bucle antiguo normal. Cuando estás dentro del ciclo, llamasthe_post()
y configura las cosas para ti ... fuera del ciclo, debes forzarlo manualmente.fuente
$post
variable global , de lo contrario funciona comothe_title()
si no funcionara correctamente".global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();
setup_postdata($post);
FTW !!!!Prueba esto:
Cree una nueva función en functions.php y luego llámela desde cualquier lugar.
Aquí hay una publicación que describe el código.
fuente
Ahora puedes simplemente usar la
get_the_excerpt( $postID )
función. Desde: WordPress 4.5.0 introdujo el$post
parámetro.fuente
wp_trim_excerpt
filtro devolverá el extracto de la publicación actual.lo conseguí usando
my_excerpt($post->post_content, get_the_excerpt())
y usando lamy_excerpt()
función de Usar wp_trim_excerpt para obtener the_excerpt () fuera del ciclofuente
En caso de que no tenga el objeto de publicación, aquí hay una función corta como la de Withers.
fuente
Esto es para cuando quieras usar
get_the_excerpt()
fuera del ciclo:fuente
Si desea generar el extracto automáticamente del contenido en una línea, puede usar una
wp_trim_words
función como esta:fuente
fuente