Quebrado? WP_Query e "anexo" como um tipo de postagem

14

Eu tenho uma galeria anexada a uma página. Nessa página, estou executando a seguinte consulta:

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

Eu experimentei algumas maneiras e, por algum motivo, não consigo fazer com que os anexos retornem. Estou faltando algo óbvio aqui?

Atualizar *

Obrigado ao Wok por me apontar na direção certa.

Acontece que eu estava usando "status" em vez de "post_status". O codex usou "status" como exemplo em sua explicação no contexto do tipo de postagem "anexo". Eu atualizei o codex para referenciar "post_status". O código correto é o seguinte:

$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 result
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "all". 
    'orderby' => 'rand', // Order the attachments randomly  
    )
);  
    
por Jonathan Wold 20.04.2011 / 00:37

4 respostas

13

Estes são os parâmetros de consulta que eu uso ... funciona para mim quando faço um loop pelos resultados

array(
                'post_parent' => $post->ID,
                'post_status' => 'inherit',
                'post_type'=> 'attachment',
                'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'                  
            );
    
por Wok 20.04.2011 / 02:57
10

Adicione em $args , é importante.

'post_status' => 'any'

Não: 'post_status' => null

Isso é importante porque os anexos não têm post_status , portanto, o valor padrão para post_status , published , não encontrará anexos.

    
por Pham 19.09.2013 / 06:10
0

Olhando para a consulta que gera, parece ser um tipo de erro. 'status' = > 'inherit' é interpretado como o status do pai, quando a entrada no banco de dados do anexo é literalmente 'herdada'.

Uma alternativa é usar get_children no lugar de WP_Query.

    
por Milo 20.04.2011 / 01:13
0

Eu consegui exibir todas as imagens que são anexos a uma postagem usando este código.

<?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   }
    } ?>

E para fazer eco da URL da imagem em tamanho original original, você pode vincular essa imagem a

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

Espero que esta seja uma abordagem para o que você está tentando fazer.

    
por Chad Von Lind 20.04.2011 / 02:16