Ottenere Tutte le Immagini dalla Libreria Media?
Esiste un modo per recuperare gli URL di TUTTE le immagini nella libreria media?
Penso che questo sarebbe un modo semplice per avere una pagina Immagini sul sito web che preleva tutte le immagini dalla libreria media, anche se sarebbe necessario solo in determinati scenari.
Non ho bisogno di istruzioni su come creare una pagina Immagini, solo su come estrarre tutti gli URL delle immagini. Grazie!

$query_images_args = array(
'post_type' => 'attachment', // Tipo di post
'post_mime_type' => 'image', // Solo file immagine
'post_status' => 'inherit', // Stato del post
'posts_per_page' => -1, // Mostra tutti i risultati
);
$query_images = new WP_Query( $query_images_args );
$images = array();
foreach ( $query_images->posts as $image ) {
$images[] = wp_get_attachment_url( $image->ID ); // Ottieni URL dell'immagine
}
Tutti gli URL delle immagini sono ora nell'array $images
;

um.. sembra che @somatic mi abbia preceduto. A differenza della sua soluzione sopra, la mia otterrà solo le immagini.

ovviamente i nostri metodi sono simili... e azizur ha ragione, aggiungendo il 'post_mime_type' a qualsiasi query si restringeranno i tipi restituiti.
una cosa da considerare: il guid spesso contiene l'url completo dell'immagine, ma non è una fonte affidabile. È statico, generato solo una volta quando il post viene creato, e si basa sull'url corrente del sito e sulla struttura delle cartelle dei media. Ma quella struttura delle cartelle e il dominio potrebbero cambiare in qualche momento, e allora il guid non sarà più l'URL effettivo dell'immagine, ma solo una registrazione di quello che era quando è stato creato...

Questa risposta è SBAGLIATA. Non ottiene le immagini dalla Libreria Media. Ottiene le immagini utilizzate all'interno dei post. Le immagini inutilizzate non vengono trovate!

@Christian - è sbagliato? O dovrei chiedere 'ancora' sbagliato? Mi rendo conto che sto commentando quasi 2 anni dopo, ma ho provato questo su WP 3.6 e sto ricevendo immagini che ho appena aggiunto alla libreria media senza aggiungerle ad alcun post :/

Potrebbe essere una domanda stupida, ma come potrei ora ottenere le diverse dimensioni delle immagini?

@FrederikWitte puoi combinare get_intermediate_image_sizes e wp_get_attachment_image_src per ottenere tutti gli URL.

Per aggiungere contesto - questa risposta è CORRETTA. WordPress memorizza i dati dei caricamenti nella tabella wp_posts
come un post type personalizzato attachment
ogni volta che carichi qualcosa, indipendentemente dal fatto che venga utilizzato da qualche parte o meno.

Solo per curiosità, qual è lo scopo di post_status
? Il mio codice funziona solo se imposto post_status
a inherit
. Tuttavia, l'allegato che sto cercando (un file pdf nel mio caso) non è stato caricato in nessuna pagina. Da cosa sta ereditando allora? E perché non posso semplicemente ignorare il post_status?

Non funziona per me... Uso questo codice funzionante:
Come mostrare tutte le immagini del Media WordPress in una pagina 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);
}
// fai qualcosa con $list qui;
Interroga il database per tutti gli elementi della libreria multimediale (non solo quelli allegati ai post), ottieni i loro URL e inseriscili tutti nell'array $list
.

<?php
// Ottiene tutti gli allegati di tipo immagine per il post/pagina corrente
$attachments = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' =>'image') );
// Cicla attraverso ogni allegato trovato
foreach ( $attachments as $attachment_id => $attachment ) {
// Mostra l'immagine con dimensione 'medium'
echo wp_get_attachment_image( $attachment_id, 'medium' );
}
?>
Questo codice recupera tutti gli allegati di un post/pagina.
Allega più immagini a un post e verranno elencate qui.

Ho usato questo codice per mostrare TUTTE le immagini nella Media Library!
$args = array(
'post_type' => 'attachment',
'post_status' => 'published',
'posts_per_page' => 25,
'post_parent' => 210, // ID del Post
'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); // Estraggo l'URL dell'attachment
$img = wp_get_attachment_url($attachment->ID);
$title = get_the_title($attachment->post_parent); // Estraggo il titolo
echo '<a href="'.$url.'"><img title="'.$title.'" src="'.get_bloginfo('template_url').'/timthumb.php?src='.$img.'&w=350&h=500&zc=3" alt="'.$title.'"></a>';
echo "</div>";
}
}
E se conosci un metodo per mostrare la paginazione, per favore rispondi.
Per aggiungere la paginazione, puoi usare la funzione paginate_links()
di WordPress. Ecco un esempio:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'attachment',
'post_status' => 'published',
'posts_per_page' => 25,
'paged' => $paged,
'post_parent' => 210,
);
$attachments = new WP_Query($args);
if ($attachments->have_posts()) {
while ($attachments->have_posts()) {
$attachments->the_post();
// Il tuo codice per mostrare gli attachment qui
}
echo '<div class="pagination">';
echo paginate_links(array(
'total' => $attachments->max_num_pages,
'current' => max(1, $paged),
'prev_text' => __('« Precedente'),
'next_text' => __('Successiva »'),
));
echo '</div>';
wp_reset_postdata();
}

Questa è solo una versione più breve di questa risposta che utilizza get_posts()
e 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 );

Sembra che non sia stato aggiornato da un po' di tempo, ma il plugin Media Library Gallery potrebbe essere un buon esempio da cui iniziare a guardare.
