2016-12-30 3 views
1

Я использую этот код здесь, чтобы получить изображения из медиабиблиотеки с использованием пользовательской таксономии. Он получает изображение url отлично, но я хочу получить идентификатор изображения и название. Как мне это сделать? Это то, что у меня есть до сих пор.Wordpress media library custom taxonomy получить изображение

function get_images_from_media_library($cat) { 
    $args = array(
     'post_type' => 'attachment', 
     'post_mime_type' =>'image', 
     'post_status' => 'inherit', 
     'posts_per_page' => 6, 
     'orderby' => 'rand', 
     'tax_query' => array(
      array(
      'taxonomy' => 'gallery-category', 
      'field' => 'slug', 
      'terms' => $cat 
      ) 
     ) 
     ); 
    $query_images = new WP_Query($args); 
    $images = array(); 
    foreach ($query_images->posts as $image) { 
    $images[]= $image->guid; 
    echo $image->ID; // Returns image ID, but I need it in display_images_from_media_library function 
    } 
    return $images; 
} 
function display_images_from_media_library($cat) { 
    $imgs = get_images_from_media_library($cat); 
    foreach($imgs as $img) { 
    $html .= '<img src="' . $img . '" alt="">'; 
    } 
    return $html; 
} 

ответ

1

get_images_from_media_library() возвращает массив адресов изображений поэтому display_images_from_media_library() никогда имеет доступ к чему-либо, кроме этих URL-адресов. Если вы хотите получить доступ к ID и заголовку, вам нужно сделать пару обновлений.

get_images_from_media_library() Внутри, это изменить:

$images = array(); 
foreach ($query_images->posts as $image) { 
    $images[]= $image->guid; 
    echo $image->ID; // Returns image ID, but I need it in display_images_from_media_library function 
} 
return $images; 

к этому:

return $query_images->posts; 

Исходный код петельные через образы и добавили их URL-адреса в новый массив. Здесь мы собираемся вернуть изображения в их оригинальной форме.

Затем нам необходимо обновить функцию, которая использует эти изображения.

Изменить это:

$html .= '<img src="' . $img . '" alt="">'; 

Для этого:

$html .= '<img src="' . $img->guid . '" alt="">'; 

В моем ответе я изменил код, который вы написали, чтобы прийти к желаемому результату. Однако я бы посоветовал вам изменить способ получения изображений в первую очередь. WP_Query - не самый эффективный способ его обработки. Вместо этого рассмотрите get_posts().

Смежные вопросы