Отображение изображений библиотеки мультимедиа с пользовательской таксономией - PullRequest
0 голосов
/ 02 мая 2019

Я добавил пользовательскую таксономию «Элементы» в свою медиатеку Wordpress, чтобы я мог отмечать изображения и сортировать их по тегам.

Теперь я хочу автоматически вывести все изображения в архивном шаблоне taxonomy-elements.php (или archive-elements.php?).

Так, например, все изображения с тегом Elements 'light' будут отображаться в /elements/light.

Я также хочу запросить все теги Elements для отображения списка ссылок в любом месте сайта, которые будут ссылаться на эти страницы архива. этот список также отображает количество изображений для каждого тега.

например:

Элементы: Свет (5) Пространство (2) Красный (4) Синий (8)

Моя зарегистрированная таможенная таксономия:

// register new taxonomy which applies to attachments
function wptp_add_elements_taxonomy() {
    $labels = array(
        'name'              => 'Elements',
        'singular_name'     => 'Element',
        'search_items'      => 'Search Elements',
        'all_items'         => 'All Elements',
        'parent_item'       => 'Parent Element',
        'parent_item_colon' => 'Parent Element:',
        'edit_item'         => 'Edit Element',
        'update_item'       => 'Update Element',
        'add_new_item'      => 'Add New Element',
        'new_item_name'     => 'New Element Name',
        'menu_name'         => 'Elements',
    );

    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'query_var' => 'true',
        'rewrite' => 'true',
        'show_admin_column' => 'true',
    );

    register_taxonomy( 'elements', 'attachment', $args );
}
add_action( 'init', 'wptp_add_elements_taxonomy' );

Попытка вывода изображений из пользовательской таксономии Элементов:

function get_images_from_media_library($elements) {
    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' =>'image',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
        'orderby' => 'rand',
        'tax_query' => array(
            array(
            'taxonomy' => 'elements',
            'field' => 'slug',
            'terms' => $elements
            )
          )
        );
  $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($elements) {
  $imgs = get_images_from_media_library($elements);
  foreach($imgs as $img) {
     $html .= '<img src="' . $img . '" alt="">';
  }
  return $html;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...