WP_Query defect? WP_Query și "attachment" ca tip de postare
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
)
);

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.

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

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.

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.

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!

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.
