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.
Azizur Rahman
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...
somatic
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
@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 :/
Chris Kempen
Poate fi o întrebare stupidă, dar cum aș putea obține acum diferitele dimensiuni ale imaginilor?
Frederik Witte
@FrederikWitte poți combina get_intermediate_image_sizes și wp_get_attachment_image_src pentru a obține toate URL-urile.
Azizur Rahman
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.
Matt Royal
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?
A.Shoman
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/
Apurba Pathak
$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.