web-dev-qa-db-fra.com

interroger les images de pièce jointe… si aucune pièce jointe -> obtenir les pièces jointes de la page parent?

J'utilise cette option pour interroger toutes les pièces jointes de la page en cours ou la publication sur laquelle je suis…

$query_images_args = array(
    'post_type' => 'attachment',
    'post_mime_type' =>'image',
    'post_status' => 'inherit',
    'posts_per_page' => -1,
    'post_parent' => $post->ID //$post->post_parent
);

$attachments = get_children($query_images_args);

if ( empty($attachments) ) {
    $query_images_args = array(
        'post_type' => 'attachment',
        'post_mime_type' =>'image',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
        'post_parent' => $post->post_parent
    );
}

$query_images = new WP_Query( $query_images_args );
$images = array();
foreach ( $query_images->posts as $image) {
    $images[] = wp_get_attachment_image_src( $image->ID, 'large');
}

foreach ( $images as $image) {
    if ( $image[1] >= 1024 )
        $large_images[] = $image[0];
}

if ( !empty($large_images) ):

Cela fonctionne parfaitement et interroge uniquement les images de la publication ou de la page en cours.

Cependant, j'ai une chose supplémentaire que je veux que ce morceau de code fasse:

Si une page n'a pas d'images attachées et est une "page enfant" d'une page à laquelle des images sont attachées, je souhaite interroger les images de la "page parent".

Encore:

page-parent -> a des images attachées page-enfant -> n'a pas d'images attachées -> doit interroger les images de la page parent

Cela pourrait être fait avec $post->post_parent

$query_images_args = array(
            'post_type' => 'attachment',
            'post_mime_type' =>'image',
            'post_status' => 'inherit',
            'posts_per_page' => -1,
            'post_parent' => $post->post_parent
        );

Cependant, je ne sais pas comment différencier ces deux cas.

Si une page a des images attachées, je veux que mon code soit 'post_parent' => $post->ID, si une page est une page enfant et AUCUNE image n'est attachée, je veux que le code soit 'post_parent' => $post->post_parent.

Des idées à ce sujet?

2
mathiregister

Vous pouvez utiliser get_children pour vérifier s'il renvoie quoi que ce soit, puis, s'il ne le fait pas, récupérez les pièces jointes parent.

//loop stuff

//your $query_images_args

$attachments = get_children($query_images_args);

if ( empty($attachments) ) {

//go get parent attachments 

}else{

//loop through this post's attachments

}
1
Wyck