Ricevi tutte le immagini nella Galleria multimediale?


28

C'è un modo per recuperare gli URL di TUTTE le immagini nella galleria multimediale?

Penso che questo sarebbe un modo semplice per un sito Web di avere una pagina Immagini che estrae tutte le immagini dalla galleria multimediale, ammesso che sia necessario solo in determinati scenari.

Non ho bisogno di istruzioni su come creare una pagina Immagini, ma solo su come estrarre tutti gli URL delle immagini. Grazie!


Intendi tutte le immagini nell'intera libreria multimediale (vale a dire, a livello di sito)?
ZaMoose,

Risposte:


50
$query_images_args = array(
    'post_type'      => 'attachment',
    'post_mime_type' => 'image',
    'post_status'    => 'inherit',
    'posts_per_page' => - 1,
);

$query_images = new WP_Query( $query_images_args );

$images = array();
foreach ( $query_images->posts as $image ) {
    $images[] = wp_get_attachment_url( $image->ID );
}

Ora sono presenti tutti gli URL delle immagini $images;


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

2
ovviamente i nostri metodi sono simili ... e azizur ha ragione, aggiungendo 'post_mime_type' a entrambe le query restringerà i tipi restituiti. una cosa da considerare: spesso il guid contiene l'URL completo dell'immagine, ma non è una fonte affidabile. È statico, generato solo una volta quando viene creato il post e si basa sull'URL del sito corrente e sulla struttura della cartella multimediale. Ma quella struttura di cartelle e il dominio potrebbero cambiare ad un certo punto, e quindi il guid non è più l'URL dell'immagine reale, solo un record di quello che era quando è stato creato ...
somatic

1
Questa risposta è ERRATA . Non ottiene immagini dalla Libreria multimediale. Ottiene le immagini utilizzate all'interno dei post. Le immagini non utilizzate non sono state trovate!
Christian,

@Christian - è sbagliato? O dovrei chiedere 'ancora' di sbagliato? Mi rendo conto che sto commentando quasi 2 anni dopo, ma l'ho provato su WP 3.6 e sto ricevendo immagini che ho appena aggiunto alla libreria multimediale senza aggiungerle a nessun post: /
Chris Kempen

Potrebbe essere una domanda stupida, ma come potrei ora ottenere le diverse dimensioni dell'immagine?
Frederik Witte,

17
$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);
}
// do something with $list here;

Interroga il db per tutti gli elementi della libreria multimediale (non solo quelli allegati ai post), prendi il loro url, scaricali tutti $listnell'array.


6
<?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' );
    }
?>

Questo estrae tutti gli allegati per un post / pagina. Allega più immagini a un post e verrà elencato


5

ok hai usato questo codice per mostrare TUTTE le immagini nella libreria multimediale!

$args = array(
    'post_type' => 'attachment',
    'post_status' => 'published',
    'posts_per_page' =>25,
    'post_parent' => 210, // Post-> ID;
    '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);// extraigo la _posturl del attachmnet      
        $img = wp_get_attachment_url($attachment->ID);
        $title = get_the_title($attachment->post_parent);//extraigo titulo
        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>";
    }   
}

e se conosci il metodo per mostrare l'impaginazione, rispondi.



1

Questa è solo una versione più breve di questa risposta usando 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 );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.