Obtener todas las imágenes en la Galería de medios?

28

¿Hay alguna manera de recuperar las URL de TODAS las imágenes en la galería de medios?

Creo que esta sería una manera fácil para que un sitio web tenga una página de Imágenes que simplemente extraiga todas las imágenes de la galería de medios, dado que solo sería necesario en ciertos escenarios.

No necesito instrucciones sobre cómo crear una página de Imágenes, solo cómo extraer todas las URL de las imágenes. ¡Gracias!

Jared
fuente
¿Se refiere a todas las imágenes en toda la biblioteca de medios (es decir, en todo el sitio)?
ZaMoose

Respuestas:

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 );
}

Todas las imágenes url están ahora en $images;

Azizur Rahman
fuente
um .. parece que @somatic me ha ganado. A diferencia de su solución anterior, la mía solo obtendrá imágenes.
Azizur Rahman
2
obviamente, nuestros métodos son similares ... y azizur es correcto, agregar el 'post_mime_type' a cualquiera de las consultas reducirá los tipos devueltos. Una cosa a tener en cuenta: el GUID a menudo contiene la URL completa de la imagen, pero no es una fuente confiable. Es estático, se genera solo una vez cuando se crea la publicación y se basa en la URL del sitio actual y la estructura de la carpeta de medios. Pero eso estructura de carpetas y el dominio podría cambiar en algún momento, y luego el GUID no es el URL de la imagen real más, sólo un registro de lo que era cuando fue creado ...
somática
1
Esta respuesta es incorrecta . No obtiene imágenes de la Biblioteca de medios. Obtiene imágenes utilizadas dentro de las publicaciones. ¡Las imágenes no utilizadas no se encuentran!
Christian
@ Christian - ¿está mal? ¿O debería preguntar "todavía" mal? Me doy cuenta de que estoy comentando casi 2 años después, pero probé esto en WP 3.6 y recibo imágenes que acabo de agregar a la biblioteca de medios sin agregarlas a ninguna publicación: /
Chris Kempen
Podría ser una pregunta estúpida, pero ¿cómo obtendría ahora los diferentes tamaños de imagen?
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;

Consulte la base de datos para todos los elementos de la biblioteca de medios (no solo los adjuntos a las publicaciones), tome su url, vuélvalos a la $listmatriz.

somático
fuente
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' );
    }
?>

Esto extrae todos los archivos adjuntos de una publicación / página. Adjunte más imágenes a una publicación y aparecerá en la lista

stffn
fuente
5

ok y usé este código para mostrar TODAS las imágenes en la Biblioteca de medios!

$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>";
    }   
}

y si conoce el método para mostrar paginación, responda.

Hegel
fuente
1

Esta es solo una versión más corta de esta respuesta usando get_posts()y 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 );
jgraup
fuente