web-dev-qa-db-ja.com

壊れた?投稿タイプとしてのWP_Queryと "attachment"

私はギャラリーをページに添付しています。そのページで、私は次のクエリを実行しています。

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'status' => 'inherit', // Inherit the status of the parent post 
    'orderby' => 'Rand', // Order the attachments randomly  
    )
);

私はかなりの数の方法で実験しました、そして、何らかの理由で、私は添付ファイルを返すことができません。ここで明らかな何かが足りないのですか。

更新*

私を正しい方向に向けてくれたWokに感謝します。

それは私が "post_status"の代わりに "status"を使っていたことがわかります。コーデックスは、「添付」投稿タイプのコンテキスト内の説明で例として「ステータス」を使用していました。代わりに "post_status"を参照するようにコーデックスを更新しました。正しいコードは次のとおりです。

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "any".
    'orderby' => 'Rand', // Order the attachments randomly  
    )
);  
16
Jonathan Wold

これらは私が使用するクエリパラメータです...私は結果をループするとき私のために働く

array(
                'post_parent' => $post->ID,
                'post_status' => 'inherit',
                'post_type'=> 'attachment',
                'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'                  
            );
13
Wok

$argsを追加してください、それは重要です。

'post_status' => 'any'

しない: 'post_status' => null

添付ファイルにはpost_statusがないため、これは重要です。したがって、post_statusのデフォルト値publishedでは、添付ファイルは見つかりません。

10
Pham

生成されたクエリを見ると、ある種のバグのように見えます。 'status' => 'inherit'は、添付ファイルのdb内のエントリが文字通り 'inherit'の場合、親のステータスとして解釈されます。

別の方法はWP_Queryの代わりにget_childrenを使うことです。

0
Milo

このコードを使用して、投稿の添付ファイルであるすべての画像を表示することができました。

<?php
$args = array( 'post_type' => 'attachment', 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image' ,'post_status' => null, 'post_parent' => $post->ID );
$attachments = get_posts($args);
    if ($attachments) {
    foreach ( $attachments as $attachment ) { ?>
      <img src="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" />
<?php   }
    } ?>

元のフルサイズ画像のURLをエコーするには、その画像をにリンクします。

<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>

うまくいけば、これはあなたがやろうとしていることへのアプローチです。

0
Chad Von Lind