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

18

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 várias maneiras e, por algum motivo, não consigo obter anexos para retornar. Estou perdendo algo óbvio aqui?

Atualizar*

Agradeço ao Wok por me indicar a direção certa.

Acontece que eu estava usando "status" em vez de "post_status". O codex usou "status" como exemplo na explicação em contexto do tipo de postagem "anexo". 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 three results
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "any".
    'orderby' => 'rand', // Order the attachments randomly  
    )
);  
Jonathan Wold
fonte
Pergunto-me qual é a diferença entre post_status sendo definido como 'nulo' vs 'herdar''
Wok
Você acabou de me poupar muita dor com 'post_status' => 'inherit' Obrigado!
Pat

Respostas:

14

Estes são os parâmetros de consulta que eu uso ... funciona para mim quando eu percorre os resultados

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

Adicionar em $args , é importante.

'post_status' => 'any'

Não: 'post_status' => null

Isto é importante porque os anexos não tiver um post_status, então o valor padrão para post_status, published, encontrará sem anexos.

Pham
fonte
Faça um esforço para explicar a resposta, em vez de apenas postar uma ou duas linhas de código.
S_ha_dum 19/09/2013
Sim, como é que isso funciona? Não pude fazer com que meu anexo fosse exibido na minha página de arquivo morto até que eu o adicionasse.
26415 Claire
0

Observando a consulta que gera, ela parece ser um tipo de bug. 'status' => 'herdar' é interpretado como o status do pai, quando a entrada no banco de dados do anexo é literalmente 'herdar'.

Uma alternativa é usar get_children no lugar de WP_Query.

Milo
fonte
0

Consegui exibir todas as imagens anexadas a uma postagem usando esse 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 ecoar o URL da imagem original, você pode vincular essa imagem a

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

Espero que essa seja uma abordagem do que você está tentando fazer.

Chad Von Lind
fonte
A paginação funciona com isso? E você pode mostrar o restante do seu código de saída? Estou no meio da recodificação de uma galeria de temas para realmente paginar os anexos que estão na página. Obrigado!
Se eu enviar 4 imagens para uma postagem e adicioná-las à entrada principal de conteúdo div em single.php, ele cuspirá apenas 4 tags de imagem. O src = de cada um levará ao tamanho original da imagem grande. A paginação não funciona com isso, pois cospe toda e qualquer imagem anexada à postagem.
amigos estão dizendo sobre chad von