Я добавил пользовательскую таксономию «Элементы» в свою медиатеку 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;
}