Приветствую!
Уважаемые, помогите разобраться, не получается вывести метки wordpress.
Перечислю все по порядку, возможно кто-то знает где ошибка.
Так добавляю поддержку меток для кастомного типа записей:
add_action( 'init', 'mbds_products_custom_post_types' );
function mbds_products_custom_post_types() {
$labels = array(
'name' => _x( 'Продукция', 'post type general name' ),
'singular_name' => _x( 'Продукция', 'post type singular name' ),
'menu_name' => _x( 'Продукция', 'admin menu' ),
'name_admin_bar' => _x( 'Продукция', 'add new on admin bar' ),
'add_new' => _x( 'Добавить продукт', 'mbds_products' ),
'add_new_item' => __( 'Добавить новый продукт' ),
'new_item' => __( 'Новый продукт' ),
'edit_item' => __( 'Редактировать продукт' ),
'view_item' => __( 'Показать продукт' ),
'all_items' => __( 'Вся продукция' ),
'search_items' => __( 'Найти продукт' ),
'not_found' => __( 'Продукция не найдена' ),
'not_found_in_trash' => __( 'Нет продукции в корзине' )
);
$args = array(
'labels' => $labels,
'description' => __( 'Описание.' ),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 8,
'menu_icon' => 'dashicons-portfolio',
'supports' => array( 'title', 'thumbnail', 'page-attributes', 'editor' ),
//'rewrite' => array( 'slug' => 'products')
);
$tag_labels = array(
'name' => _x( 'Теги', 'taxonomy general name' ),
'singular_name' => _x( 'Тег', 'taxonomy singular name' ),
'search_items' => __( 'Найти теги' ),
'popular_items' => __( 'Популярные теги' ),
'all_items' => __( 'Все теги' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Редактировать тег' ),
'update_item' => __( 'Обновить тег' ),
'add_new_item' => __( 'Добавить новый тег' ),
'new_item_name' => __( 'Имя нового тега' ),
'separate_items_with_commas' => __( 'Разделить теги запятыми' ),
'add_or_remove_items' => __( 'Добавить или удалить теги' ),
'choose_from_most_used' => __( 'Выбрать из популярных тегов' ),
'menu_name' => __( 'Теги' ),
);
register_taxonomy('mbds_products_tag',
array('mbds_products'),
array(
'hierarchical' => false, //true - по типу рубрик, false - по типу меток, по умолчанию - false
'labels' => $tag_labels,
'show_ui' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
)
);
register_post_type( 'mbds_products', $args );
}
И вот поддержка меток добавлена, в админке, в редакторе записи появились метки. Пока все отлично.
Добавляю метки к записям, метки добавляются, все хорошо.
Но вот вывести их на странице ну никак вообще не получается(
Перепробовал ВСЕ функции для работы с метками - не выводятся хоть убей.
НО при явном указании таксономии - wp_tag_cloud() их видит!
wp_tag_cloud( array( 'taxonomy' => 'mbds_products_tag' ) );
wp_tag_cloud выводит метки! НО выводит ВСЕ созданные метки, а это не нужно.
Нужны метки только тех записей, которые "сейчас" выведены, которые сейчас в выборке в цикле WP_Query.
Итак, как минимум убедились что они (метки) есть, значит они работают и осталось понять почему не получается вывести нужные, а не вообще ВСЕ метки.
По другому получилось добраться до опять-таки ВСЕХ меток так:
get_terms( 'mbds_products_tag' );
get_terms( 'mbds_products_tag' ) - тоже самое, получает массив с объектами ВСЕХ меток.
Все действие происходит на странице taxonomy-catalog.php
Задача получить и вывести не ВСЕ существующие метки, а только те, которые добавлены к записям в выборке.
taxonomy-catalog.php работает так, структура такая:
На странице родительского каталога (Кухни) - выводятся все его записи и записи всех дочерних его каталогов (т.е. вообще все кухни).
На странице вложенного (дочернего) каталога (Угловые кухни) - выводятся только его записи, т.е. только угловые кухни.
И здесь же нужно получить метки, метки только угловых кухонь, которые сейчас "показаны" в выборке.
Сама выборка:
$category_obj = get_queried_object();
$term = $category_obj->slug;
$args = array(
'post_type' => 'mbds_products',
'tax_query' => array(
array(
'taxonomy' => 'catalog',
'field' => 'slug',
'terms' => $term
)
)
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) : $query->the_post();
// тут нужно получить метки, но не получается
$posttags = get_the_tags();
var_dump($posttags); // выводит boolean false
wp_reset_postdata();
endwhile;
wp_reset_query();
Надеюсь это длинное описание кто-то поймет и возможно что-то подскажет.
Нужно получить метки только тех товаров, которые есть в выборке.
Спасибо!
Если ваш совет решит проблему - готов посильно поблагодарить за ваш бесценный опыт