J'essaie de coder un thème pour lequel je vais avoir une page de galerie universelle. Fondamentalement comme:
http://www.engadget.com/galleries/
Cependant, je ne sais pas ce que j'appellerais toutes les galeries. J'ai besoin que les galeries soient des types de publication personnalisés (donc j'ai domain.com/gallery/title-of-gallery/), mais les galeries doivent également pouvoir être insérées dans des publications via [galerie] (ou quelque chose comme ça) . De plus, les galeries doivent avoir une sorte de catégorie (par exemple, des critiques ou des aperçus).
Je dois également être capable d'insérer plusieurs galeries dans un seul article pour les revues (où plusieurs galeries peuvent être nécessaires).
Quelqu'un at-il un moyen de parvenir à cela?
La question sous-jacente est la suivante: Comment interroger tous les messages contenant des galeries d’images? (puisque, une fois que vous avez une telle requête, créer une page de modèle personnalisée pour les parcourir en boucle est assez simple).
Une méthode serait:
attachment
publications avec un mime_type
de image
$post->post_parent
à un tableaupost__in
Peut-être comme ça:
<?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();
?>
Notez que cela tire all posts avec même une pièce jointe d’image. Vous pourriez peut-être avoir du chic en parcourant les images jointes et faire quelque chose comme:
// 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;
}
}