Como criar um modelo de página para listar todas as galerias?

3

Estou tentando codificar um tema no qual terei uma página de galeria universal. Basicamente como:

enlace

No entanto, estou em uma perda para o que eu usaria para chamar todas as galerias. Eu preciso que as galerias sejam tipos de posts personalizados (então eu tenho domain.com/gallery/title-of-gallery/), mas as galerias também precisam ser inseridas em posts via [gallery] (ou algo parecido) . Além disso, as galerias precisam ter algum tipo de categoria atribuída a elas (como Reviews ou Previews).

Eu também preciso inserir várias galerias em uma postagem para revisões (onde várias galerias podem ser necessárias).

Alguém tem alguma maneira de conseguir isso?

    
por jdaio 24.11.2012 / 02:28

1 resposta

1

A questão subjacente aqui é Como faço para consultar todas as postagens com galerias de imagens? (uma vez que você tenha essa consulta, criar uma página de modelo personalizada para percorrê-las é bastante trivial). / p>

Um método seria:

  1. Consulta personalizada de attachment postagens com mime_type de image
  2. Faça um loop por eles e adicione $post->post_parent a uma matriz
  3. Consulta personalizada de postagens, transmitindo a matriz acima de IDs de postagem como post__in
  4. Faça um loop através deles e exiba o que você quiser para cada

Talvez seja assim:

<?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();
?>

Observe que isso atrai todos postagens com até mesmo um único anexo de imagem. Você pode, talvez, ficar chocado ao fazer o loop através de anexos de imagem e fazer 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;
    }
}
    
por Chip Bennett 24.11.2012 / 02:56