Usar the_excerpt() en una página
He estado intentando utilizar la función de extracto de PHP para llamar desde su publicación de blog más reciente para publicar en una página de destino principal sin éxito. ¿Alguna idea?
<div id="home_news" class="prefix_9 grid_3">
<div id="newsbox" style="display: block;">
<div id="news">
<h2>Bienvenido</h2>
<div id="news_content">Bienvenido a... .vuelve pronto para ver una nueva selección de pinturas al óleo, últimas impresiones y tarjetas de felicitación</a>.
<?php
$my_query = new WP_Query('category_name=blog&posts_per_page=1');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->505;
the_excerpt();
endwhile; ?>
</div>
</div>
</div>
</div>
the_excerpt()
no funcionará en una página de destino. Debe usarse dentro del bucle de publicaciones para que funcione.
Dentro del bucle, WordPress llena una variable global $post
con información sobre la publicación actual. Luego, varias etiquetas de plantilla hacen referencia a esa variable global y muestran contenido.
Basado en tus ediciones anteriores...
Tienes el bucle casi estructurado correctamente. Pero en su lugar, necesitarás:
- Crear tu propia consulta de página para obtener la última publicación
- Mostrar la publicación
- Restaurar la consulta original
El código a continuación debería hacer lo que necesitas:
<div id="home_news" class="prefix_9 grid_3">
<div id="newsbox" style="display: block;">
<div id="news">
<h2>Bienvenido</h2>
<div id="news_content">Bienvenido a... .vuelve pronto para ver una nueva selección de pinturas al óleo, últimas impresiones y tarjetas de felicitación</a>.
<?php
// Crear una nueva consulta y obtener la última publicación de la categoría "blog"
$my_query = new WP_Query( 'category_name=blog&posts_per_page=1' );
// Si tenemos una publicación, llenar las variables globales necesarias y ejecutar el bucle
if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post();
// Mostrar el extracto de la publicación en la página
the_excerpt();
endwhile; endif;
// Restablecer los datos del bucle principal para que las variables globales tengan los valores correctos
wp_reset_postdata();
?>
</div>
</div>
</div>
</div>

Gracias por tu respuesta. ¿Es posible agregar el bucle dentro de una página? He estado probando con ello... Sin éxito todavía.

Sí. Echa un vistazo a los ejemplos de bucles múltiples en el Codex.

Edite mi pregunta porque no pude hacer que el formato markdown apareciera en mi comentario. ¿Se necesita especificar post->ID? ¿Es ID una variable global con nombre?

Después de llamar a the_post()
, se llena una variable global $post
que tiene un miembro ID
.

get_the_ID()
devuelve el ID numérico del post actual cuando se usa dentro del loop.

He añadido el valor numérico. Sin éxito. ¿Alguna otra idea? ¿Alguna recomendación sobre cómo solucionar el problema?

Mira mis ediciones. Dentro del loop (donde tengo the_excerpt()
) puedes ejecutar cualquiera de las etiquetas de plantilla estándar que necesites. Si necesitas el ID numérico, ejecuta get_the_ID()
para devolverlo o the_ID()
para hacer echo
. Si necesitas el título, usa get_the_title()
como siempre.

Teóricamente, el código anterior debería validarse y funcionar. Tengo una categoría titulada 'blog'. Tengo un poco de miedo de estropear alguna de las ediciones. He dejado el código tal cual y lo he introducido en la página, pero aún no se renderiza. ¿Hay algo más que necesite hacer?

Mirando tu sitio, parece que el PHP no se está analizando... así que mi pregunta es, ¿dónde estás colocando este código?

OK, por eso no funciona. El código PHP se elimina en el editor HTML/Visual de WordPress. Necesitas agregar este código directamente a la plantilla de página utilizada por la página de destino o instalar un plugin de ejecución PHP en WordPress para que el código PHP en línea se ejecute.

Entendido. Casi lo tengo. Excepto que ahora estoy encontrando otro error... ¿Alguna idea? http://www.chazsouthard.com/art/

Error tipográfico en mi código (ahora corregido arriba). Debería ser wp_reset_postdata()

Ahora está funcionando, pero entra en conflicto con el CSS. ¿Hay alguna manera de limitar la cantidad de caracteres en el extracto? Creo que eso es lo que está desajustando el código.

Lee sobre Controlar la longitud del extracto usando filtros.

Finalmente lo resolví. Gracias por permanecer conmigo durante la confusión. ¿Hay alguna manera de publicar correctamente una miniatura dentro del extracto?

Aunque esto no estaba claro en el post original al principio, creo que podría ser una buena solución. Simplemente crea un shortcode para colocar el extracto en el cuerpo. (Esta es una mala idea si quieres esto en cada página. Es una buena idea si lo quieres ocasionalmente en algunas páginas dentro del cuerpo).
Aquí está el código para colocar en tu functions.php:
function the_excerpt_shortcode() {
return get_the_excerpt();
}
add_shortcode( 'the_excerpt', 'the_excerpt_shortcode' );
Una vez que tengas esto, simplemente coloca esto en el cuerpo de tu página:
[the_excerpt]
Y estarás listo para usarlo.
Si estás usando Twenty Ten, Twenty Eleven o algún otro tema que utilice el filtro excerpt_more, puede que necesites modificar ese shortcode para eliminar el enlace automático "Continuar leyendo...", pero para muchos temas esto no es necesario. Considera esto como un punto de partida.
