web-dev-qa-db-ja.com

添付ファイルの画像を照会…添付ファイルがない場合 - >親ページの添付ファイルを取得しますか?

現在のページのすべての添付ファイルまたは現在投稿している投稿にクエリするためにこれを使用します。

$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) ):

これは完璧に動作し、現在の投稿またはページの画像のみを照会します。

しかし、このコードを実行してほしいということがもう1つあります。

ページに画像が添付されておらず、画像が添付されているページの「子ページ」である場合は、「親ページ」の画像をクエリします。

再び:

親ページ - >画像が添付されている子ページ - >画像が添付されていない - >親ページの画像を問い合わせる

これは$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
        );

しかし、これら2つのケースを区別する方法はわかりません。

ページに画像が添付されている場合はコードを'post_parent' => $post->IDにし、ページが子ページで画像が添付されていない場合はコードを'post_parent' => $post->post_parentにします

それについて何かアイデアはありますか?

2
mathiregister

get_childrenを使用してそれが何かを返すかどうかを確認し、そうでない場合は親添付ファイルを取得します。

//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