¿Cómo hacer una plantilla de página para enumerar todas las galerías?

3

Estoy tratando de codificar un tema donde tendré una página de galería universal. Básicamente como:

enlace

Sin embargo, no sé qué usaría para llamar a todas las galerías. Necesito que las galerías sean tipos de publicaciones personalizadas (por lo que tengo domain.com/gallery/title-of-gallery/), pero las galerías también tienen que poder insertarse en las publicaciones a través de [gallery] (o algo así) . Además, las galerías deben tener algún tipo de categoría asignada a ellas (como Revisiones o Vistas previas).

También necesito poder insertar varias galerías en una publicación para las revisiones (donde se pueden necesitar varias galerías).

¿Alguien tiene alguna manera de poder lograr esto?

    
pregunta jdaio 24.11.2012 - 02:28

1 respuesta

1

La pregunta subyacente aquí es ¿Cómo puedo consultar todas las publicaciones con galerías de imágenes? (ya que, una vez que tienes una consulta de este tipo, crear una página de plantilla personalizada para recorrerlas es bastante trivial). / p>

Un método sería:

  1. Consulta personalizada de attachment publicaciones con mime_type de image
  2. Recorrerlos y agregar $post->post_parent a una matriz
  3. Consulta personalizada de publicaciones, pasando la matriz anterior de ID de publicación como post__in
  4. Recórrelos y haga lo que quiera para cada uno

Quizás así:

<?php
// Custom query args for image attachments
$image_attachments_query_args = array(
    'post_type' => 'attachment',
    'mime_type' => 'image'
);
// Query image attachments
$image_attachments = new WP_Query( $image_attachments_query_args );

// Loop through them and get parent post IDs
$gallery_post_ids = array();

foreach ( $image_attachments as $image_attachment ) {
    $gallery_post_ids[] = $image_attachment->post_parent;
}

// Custom query args for gallery posts
$gallery_posts_query_args = array(
    'post__in' => $gallery_post_ids
);

// Query gallery posts
$gallery_posts = new WP_Query( $gallery_posts_query_args );

// Loop through gallery posts

if ( $gallery_posts->have_posts() ) : while ( $gallery_posts->have_posts() ) : $gallery_posts->the_post();
    // Loop output goes here
endwhile; endif;
wp_reset_postdata();
?>

Tenga en cuenta que esto hace que todos se publiquen incluso con una sola imagen adjunta. Tal vez podría ser elegante cuando recorra los archivos adjuntos de la imagen y haga algo como:

// Placeholder array for IDs
$temp_post_ids();

// Final array for gallery post IDs
$gallery_post_ids = array();

// Loop through them and get parent post IDs
foreach ( $image_attachments as $image_attachment ) {
    // Add ID to the placeholder array
    $temp_post_ids[] = $image_attachment->post_parent;
    // If this post ID has multiple image attachments,
    // add it to the gallery posts query;
    // This will prevent posts with only a single
    // attached image from being queried in the next step
    if ( in_array( $image_attachment->post_parent, $temp_post_ids ) ) {
        $gallery_post_ids[] = $image_attachment->post_parent;
    }
}
    
respondido por el Chip Bennett 24.11.2012 - 02:56

Lea otras preguntas en las etiquetas