Cum obții toate imaginile din Galeria Media?
Există vreo modalitate de a obține URL-urile TUTUROR imaginilor din galeria media?
Cred că aceasta ar fi o modalitate simplă pentru ca un site web să aibă o pagină de Imagini care să extragă toate imaginile din galeria media, desigur acest lucru ar fi necesar doar în anumite scenarii.
Nu am nevoie de instrucțiuni despre cum să creez o pagină de Imagini, doar cum să extrag toate URL-urile imaginilor. Mulțumesc!

$query_images_args = array(
'post_type' => 'attachment', // Tipul postării - atașament
'post_mime_type' => 'image', // Tipul MIME - doar imagini
'post_status' => 'inherit', // Statusul postării - moștenit
'posts_per_page' => - 1, // Numărul de postări pe pagină - toate
);
$query_images = new WP_Query( $query_images_args );
$images = array();
foreach ( $query_images->posts as $image ) {
$images[] = wp_get_attachment_url( $image->ID ); // Obține URL-ul atașamentului
}
Toate URL-urile imaginilor sunt acum în variabila $images
;

um.. se pare că @somatic m-a întrecut. Spre deosebire de soluția lui de mai sus, a mea va obține doar imagini.

evident, metodele noastre sunt similare... și azizur are dreptate, adăugarea 'post_mime_type' la orice interogare va restrânge tipurile returnate.
un lucru de luat în considerare: guid-ul adesea conține URL-ul complet către imagine, dar nu este o sursă de încredere. Este static, generat o singură dată la crearea postării și este construit pe URL-ul curent al site-ului și structura dosarului media. Dar acea structură de dosare și domeniul ar putea să se schimbe la un moment dat, iar atunci guid-ul nu mai este URL-ul real al imaginii, ci doar o înregistrare a ceea ce a fost la creare...

Acest răspuns este GREȘIT. Nu obține imagini din Biblioteca Media. Obține imaginile folosite în postări. Imaginile nefolosite nu sunt găsite!

@Christian - este greșit? Sau ar trebui să întreb 'încă' greșit? Îmi dau seama că comentez după aproape 2 ani, dar am încercat asta pe WP 3.6 și primesc imagini pe care tocmai le-am adăugat în biblioteca media fără să le atașez la nicio postare :/

Poate fi o întrebare stupidă, dar cum aș putea obține acum diferitele dimensiuni ale imaginilor?

@FrederikWitte poți combina get_intermediate_image_sizes și wp_get_attachment_image_src pentru a obține toate URL-urile.

Un context adițional - acest răspuns este COREKT. WordPress stochează datele încărcate în tabelul wp_posts
ca un tip de postare personalizat attachment
de fiecare dată când încarci ceva, indiferent dacă este folosit undeva sau nu.

Sunt doar curios, care este scopul lui post_status
? Codul meu funcționează doar dacă setez post_status
la inherit
. Totuși, fișierul atașat pe care îl caut (în cazul meu un fișier pdf) nu a fost încărcat pe nicio pagină. De la ce moștenește atunci? Și de ce nu pot pur și simplu să ignor post_status?

Nu funcționează pentru mine... Folosesc acest cod care merge:
Cum să afișezi toate imaginile din Media WordPress pe o pagină https://www.arnlweb.com/forums/web-development/how-to-get-all-images-in-a-wordpress-page-from-media-gallery/

$media_query = new WP_Query(
array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => -1,
)
);
$list = array();
foreach ($media_query->posts as $post) {
$list[] = wp_get_attachment_url($post->ID);
}
// fă ceva cu array-ul $list aici;
Interoghează baza de date pentru toate elementele din biblioteca media (nu doar cele atașate postărilor), obține URL-urile lor și le pune pe toate în array-ul $list
.

<?php
$attachments = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' =>'image') );
foreach ( $attachments as $attachment_id => $attachment ) {
echo wp_get_attachment_image( $attachment_id, 'medium' );
}
?>
Acest cod obține toate atașamentele pentru un articol/pagină. Atașați mai multe imagini la un articol și acestea vor fi listate.

Am folosit acest cod pentru a afișa TOATE imaginile din Biblioteca Media!
$args = array(
'post_type' => 'attachment',
'post_status' => 'published',
'posts_per_page' => 25,
'post_parent' => 210, // ID-ul postului părinte
'numberposts' => null,
);
$attachments = get_posts($args);
$post_count = count($attachments);
if ($attachments) {
foreach ($attachments as $attachment) {
echo "<div class=\"post photo col3\">";
$url = get_attachment_link($attachment->ID); // Extrag URL-ul atașamentului
$img = wp_get_attachment_url($attachment->ID);
$title = get_the_title($attachment->post_parent); // Extrag titlul
echo '<a href="'.$url.'"><img title="'.$title.'" src="'.get_bloginfo('template_url').'/timthumb.php?src='.$img.'&w=350&h=500&zc=3"></a>';
echo "</div>";
}
}
Și dacă știi o metodă pentru a afișa paginare, te rog răspunde.

Acesta este doar o versiune mai scurtă a acestui răspuns folosind get_posts()
și array_map()
.
$image_ids = get_posts(
array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'posts_per_page' => - 1,
'fields' => 'ids',
) );
$images = array_map( "wp_get_attachment_url", $image_ids );

Se pare că nu a fost actualizat de ceva timp, dar plugin-ul Media Library Gallery ar putea fi un bun exemplu de la care să începeți cercetarea.
