Ottenere Tutte le Immagini dalla Libreria Media?

10 mar 2011, 13:32:12
Visualizzazioni: 103K
Voti: 34

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!

1
Commenti

Intendi tutte le immagini nell'intera libreria Media (cioè, in tutto il sito)?

ZaMoose ZaMoose
12 mar 2011 17:44:39
Tutte le risposte alla domanda 6
11
72
$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;

13 mar 2011 00:16:39
Commenti

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

Azizur Rahman Azizur Rahman
13 mar 2011 00:19:01

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...

somatic somatic
13 mar 2011 05:43:50

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 Christian
10 ott 2011 15:38:15

@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 :/

Chris Kempen Chris Kempen
16 ago 2013 20:19:03

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

Frederik Witte Frederik Witte
17 lug 2016 17:31:33

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

Azizur Rahman Azizur Rahman
18 lug 2016 02:19:14

siiiiiiiiiiiiiiiiii

Zach Smith Zach Smith
22 feb 2018 05:43:26

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.

Matt Royal Matt Royal
27 feb 2021 16:53:37

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?

A.Shoman A.Shoman
14 apr 2021 13:58:27

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/

Apurba Pathak Apurba Pathak
8 apr 2023 15:10:55

@ApurbaPathak, non consiglierei di installare plugin come quello suggerito nel link che hai condiviso. Questo potrebbe portare a vulnerabilità di sicurezza nella tua installazione WordPress.

Azizur Rahman Azizur Rahman
9 apr 2023 17:45:04
Mostra i restanti 6 commenti
0
18
$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.

13 mar 2011 00:01:51
0
<?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.

12 mar 2011 17:10:26
0

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();
}
27 feb 2012 17:52:12
1

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 );
20 gen 2016 22:20:56
Commenti

Questo è il modo più ottimizzato. Stai chiamando solo il campo ID, che è l'unico necessario.

Usman Ahmed Usman Ahmed
20 ott 2020 09:45:57
0

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.

12 mar 2011 23:18:05