Вывод всех TERMs из постов на странице архива
Есть страницы CATEGORY - на ней выводятся записи (50-100 на страницу), нужно из этих записей собрать все теги и кастомные теги , ну и потом вывести.
Подскажите есть ли готовый код, или как обычно ручками и foreach?
Решение оказалось максимально простым
/* SHOW ALL TERMS FOR SELECT POSTS (Kolshix)
* array_slice( $var, 0 , 20 ) - ids limits
* wp_list_pluck( $var , 'ID' ) - get only IDs from array
* shuffle( $var ) - order random , default 'name' latin then cyrillic
*/
global $wp_query;
$arch_post_ids = array_slice( wp_list_pluck( $wp_query->posts, 'ID' ), 0, 20);
$pax_terms = wp_get_object_terms( $arch_post_ids , array( 'paxtype', 'pax_actors_characters' , 'post_tag', 'pax_company' , 'pax_material') ) ;
// shuffle( $pax_terms ) ;
foreach ( $pax_terms as $paxterm) {
echo '<a class="arch-tag" href="'. get_term_link( $paxterm->term_id ) .'" rel="category tag"><span class="in-line">'. $paxterm->name .'</span></a> ';
}
Если записей много, то запрос не самый простой, вот тут пример есть как сделать, чтобы работало более менее быстро https://searchengines.guru/ru/forum/1011381#comment_15971420
Для меня чересчур круто, туговато с базой работать .
решил пока что, так на минималках
if ( is_user_logged_in() && current_user_can('manage_options') ) { ?> <style> .arch-tag:hover, .arch-tag:focus{ background: #6f5cbb; color: white; padding: 4px 5px; } .arch-tag{ font-size: 20px; background: #f3c834; color: white; border-radius: 5px; padding: 1px 5px; color: #c2382b; } </style> <?php global $wp_query; $arch_post_ids = array_slice( wp_list_pluck( $wp_query->posts, 'ID' ), 0, 10); $pax_actors_characters = wp_get_object_terms( $arch_post_ids , 'pax_actors_characters' ); foreach ( $pax_actors_characters as $character) { echo '<a class="arch-tag" href="'. get_term_link( $character->term_id ) .'" rel="category tag">'. $character->name .'</a> '; } }