WP_Query defect? WP_Query și "attachment" ca tip de postare

20 apr. 2011, 01:37:56
Vizualizări: 26.7K
Voturi: 24

Am o galerie atașată unei pagini. Pe acea pagină, rulez următoarea interogare:

$events_gallery = new WP_Query( // Începem o nouă interogare pentru videoclipurile noastre
array(
    'post_parent' => $post->ID, // Obține date din postarea curentă
    'post_type' => 'attachment', // Aduce doar atașamente
    'post_mime_type' => 'image', // Aduce doar atașamentele care sunt imagini
    'posts_per_page' => '3', // Arată primele trei rezultate
    'status' => 'inherit', // Moștenește statusul postării părinte
    'orderby' => 'rand', // Ordonează atașamentele aleatoriu
    )
);

Am experimentat destul de multe modalități și, din anumite motive, nu pot obține atașamentele să fie returnate. Am omis ceva evident?

Actualizare*

Mulțumesc lui Wok pentru că m-a îndrumat în direcția corectă.

Se pare că folosisem "status" în loc de "post_status". Codexul folosise "status" ca exemplu în explicația contextuală a tipului de postare "attachment". Am actualizat codexul pentru a face referire la "post_status" în schimb. Codul corect este următorul:

$events_gallery = new WP_Query( // Începem o nouă interogare pentru videoclipurile noastre
array(
    'post_parent' => $post->ID, // Obține date din postarea curentă
    'post_type' => 'attachment', // Aduce doar atașamente
    'post_mime_type' => 'image', // Aduce doar atașamentele care sunt imagini
    'posts_per_page' => '3', // Arată primele trei rezultate
    'post_status' => 'inherit', // Atașamentele au implicit "inherit" în loc de published. Folosește "inherit" sau "any"
    'orderby' => 'rand', // Ordonează atașamentele aleatoriu
    )
);
2
Comentarii

Mă întreb care este diferența dintre setarea post_status la 'null' față de 'inherit'

Wok Wok
20 apr. 2011 20:29:53

Tocmai mi-ai economisit multă durere cu 'post_status' => 'inherit' Mulțumesc!

Pat Pat
3 mai 2011 19:19:28
Toate răspunsurile la întrebare 4
2
22

Adaugă în $args, este important.

'post_status' => 'any'

Nu face: 'post_status' => null

Aceasta este importantă deoarece atașamentele nu au un post_status, astfel că valoarea implicită pentru post_status, published, nu va găsi niciun atașament.

19 sept. 2013 07:10:08
Comentarii

Da, cum se face că funcționează? Nu am reușit să afișez atașamentul pe pagina mea de arhivă până nu am adăugat asta.

Claire Claire
26 apr. 2015 11:56:01

Las doar un comentariu ca să-mi amintesc că, din nou, am găsit acest răspuns pe SO pentru că am uitat asta, din nou. :facepalm:

dossy dossy
31 mar. 2025 02:31:00
0
19

Aceștia sunt parametrii de interogare pe care îi folosesc... funcționează pentru mine când parcurg rezultatele

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

Pentru mai multe detalii, consultați documentația oficială pentru parametrii de stare ai WP_Query

20 apr. 2011 03:57:06
0

Privind la interogarea pe care o generează, se pare că este un fel de bug. 'status' => 'inherit' este interpretat ca statusul părintelui, când intrarea în baza de date pentru atașament este literalmente 'inherit'.

O alternativă este să folosești get_children în loc de WP_Query.

20 apr. 2011 02:13:15
2

Am reușit să afișez toate imaginile atașate unui articol folosind acest cod.

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

Și pentru a afișa URL-ul imaginii originale în dimensiune completă, puteți face un link către aceasta folosind:

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

Sper că aceasta este o abordare potrivită pentru ceea ce încercați să realizați.

20 apr. 2011 03:16:38
Comentarii

Funcționează paginarea cu asta? Și poți să arăți restul codului tău de output? Sunt în mijlocul recodării galeriei unui theme pentru a pagina efectiv atașamentele de pe pagină. Mulțumesc!

User User
21 apr. 2011 01:31:23

Dacă încarc 4 imagini într-un post și adaug asta în div-ul principal de conținut din single.php, va afișa pur și simplu 4 tag-uri de imagine. Src= al fiecăreia va duce la dimensiunea originală mare a imaginii.

Paginarea nu funcționează cu asta, deoarece afișează toate imaginile atașate postului.

Chad Von Lind Chad Von Lind
21 apr. 2011 01:45:37