Wszystkie obrazy w galerii multimediów?


28

Czy istnieje sposób na pobranie adresów URL WSZYSTKICH obrazów w galerii multimediów?

Myślę, że byłby to łatwy sposób, aby strona internetowa miała stronę Zdjęcia, która po prostu wyciąga wszystkie obrazy z galerii mediów, pod warunkiem, że będzie to konieczne tylko w niektórych scenariuszach.

Nie potrzebuję instrukcji, jak utworzyć stronę ze zdjęciami, tylko jak wyciągnąć wszystkie adresy URL obrazów. Dzięki!


Czy masz na myśli wszystkie obrazy w całej bibliotece Media (tj. W całej witrynie)?
ZaMoose

Odpowiedzi:


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

Wszystkie adresy URL obrazów są teraz w $images;


um .. wygląda na to, że @somatic mnie pobił. W przeciwieństwie do powyższego rozwiązania, moje otrzyma tylko obrazy.
Azizur Rahman,

2
oczywiście nasze metody są podobne ... i azizur ma rację, dodanie „post_mime_type” do dowolnego zapytania spowoduje zawężenie zwracanych typów. jedna rzecz do rozważenia: przewodnik często zawiera pełny adres URL obrazu, ale nie jest to wiarygodne źródło. Jest statyczny, generowany tylko raz podczas tworzenia postu i jest zbudowany na bieżącym adresie URL witryny i strukturze folderów multimediów. Ale że struktura folderów i domena może się zmienić w pewnym momencie, a następnie dnik nie jest rzeczywisty adres URL obrazu już tylko zapis tego, co było, kiedy to został stworzony ...
somatyczny

1
Ta odpowiedź jest NIEPRAWIDŁOWA . Nie pobiera obrazów z biblioteki multimediów. Wykorzystuje obrazy w postach. Nieużywane obrazy nie zostały znalezione!
Christian

@Christian - czy to źle? A może powinienem zapytać „nadal” źle? Zdaję sobie sprawę, że komentuję prawie 2 lata później, ale wypróbowałem to na WP 3.6 i otrzymuję obrazy, które właśnie dodałem do biblioteki multimediów, nie dodając ich do żadnych postów: /
Chris Kempen

To może być głupie pytanie, ale jak mam teraz uzyskać różne rozmiary zdjęć?
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;

Zapytaj db o wszystkie elementy biblioteki multimediów (nie tylko te dołączone do postów), pobierz ich adres URL, zrzuć je wszystkie do $listtablicy.


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

Spowoduje to pobranie wszystkich załączników do posta / strony. Dołącz więcej zdjęć do postu, a będzie on na liście


5

ok użyłem tego kodu do wyświetlenia WSZYSTKICH obrazów w bibliotece multimediów!

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

a jeśli znasz metodę paginacji programu, odpowiedz.



1

To jest tylko krótsza wersja tej odpowiedzi przy użyciu 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 );
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.