Pregunta:
Tengo problemas con este código de widget de muestra. Quiero obtener todas las imágenes (menos la miniatura de la publicación) de una página llamada "Galería", pero por alguna razón, esto está extrayendo todas las imágenes cargadas de todo el sitio.
Además, ¿cómo haría para excluir la miniatura de la publicación de esta consulta?
query_posts('pagename=gallery');
if (have_posts()) :
echo "<ul class='recentwidget group photowidget'>";
while (have_posts()) : the_post();
$args = array(
'post_type' => 'attachment',
'numberposts' => 1,
'post_status' => null,
'post_parent' => $post->ID
);
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
echo '<li class="left imageshadow photolarge">';
echo wp_get_attachment_image( $attachment->ID, 'full' );
echo '</li>';
}
}
endwhile;
endif;
wp_reset_query();
Respuesta:
Utilice get_children
Usé este código para extraer todas las imágenes de una galería de páginas en el orden elegido. puede incluir este código en el bucle o utilizarlo de forma independiente. simplemente elija el código post_parent apropiado (vea a continuación el ejemplo de código).
Este ejemplo muestra todas las imágenes asociadas a la ID de página 1, eche un vistazo:
$images = get_children( array( 'post_parent' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) );
/* $images is now a object that contains all images (related to post id 1) and their information ordered like the gallery interface. */
if ( $images ) {
//looping through the images
foreach ( $images as $attachment_id => $attachment ) {
?>
<?php /* Outputs the image like this: <img src="" alt="" title="" width="" height="" /> */ ?>
<?php echo wp_get_attachment_image( $attachment_id, 'full' ); ?>
This is the Caption:<br/>
<?php echo $attachment->post_excerpt; ?>
This is the Description:<br/>
<?php echo $attachment->post_content; ?>
<?php
}
}
Busque la identificación de la publicación de la que desea extraer las imágenes e insértela en este argumento: 'post_parent' => 1
(reemplace el 1 con la identificación de su página)
también puedes usar:
'post_parent' => $post->ID
Si desea utilizar get_children en un bucle, y obtenga la identificación de la publicación a partir de la identificación de la publicación devuelta.
Si desea excluir la imagen seleccionada como imagen destacada, tendría una declaración if
que verifique si la URL de la imagen es igual a la URL de la imagen destacada.
¡Espero que esto ayude! 🙂