Как получить все метки (теги) пользовательского типа записи по ID
Простой вопрос: как получить все метки (теги) пользовательского типа записи по ID? post_type=product.
Я пробовал использовать http://codex.wordpress.org/Function_Reference/wp_get_post_tags в своем цикле записей, но print_r ничего не возвращает.
Поэтому я попробовал этот вариант:
// Получаем все термины таксономии 'product_tag' для текущего поста
$term_list = wp_get_post_terms($post->ID, 'product_tag', array("fields" => "all"));
// Выводим массив с терминами
print_r($term_list);
И это работает - я получаю метки в print_r($term_list);
Спасибо

Подход через цикл: обычно файл archive-{custom_post}.php.
ПЕРВОЕ:
custom_post_plural Обозначает группу записей определенного типа.
Пример custom_post_plural: products (товары)
custom_post_singular Обозначает отдельный тип записи.
Пример custom_post_singular: product (товар)
ВТОРОЕ:
Переменная $args_custom_post_plural содержит параметры для WP_Query.
Переменная $custom_post_plural - это выполнение запроса.
Я использовал переменную $custom_post_plural_output для итерации содержимого WP_Object, конкретно с термином posts, делая содержимое "дружественным к массиву".
Как видите, я частично использовал инструкции Ahmad для вложенной итерации.
$args_custom_post_plural=array(
'post_type' => 'custom_post_singular',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'order_by' =>'id',
'order' => 'ASC'
);
$custom_post_plural = new WP_Query($args_custom_post_plural);
$custom_post_plural_output = $custom_post_plural->posts;
for ($i=0; $i < count($custom_post_plural_output); $i++) {
$tags = wp_get_post_tags($custom_post_plural_output[$i]);
$buffer_tags ='';
foreach ( $tags as $tag ) {
$buffer_tags .= $tag->name . ',';
}
}
echo $buffer_tags;
ЗАКЛЮЧЕНИЕ:
Кстати: если вы хотите использовать это в файле single-{custom_post}.php, можете использовать следующий код:
$tags = wp_get_post_tags($post->ID);
foreach ( $tags as $tag ) {
$buffer_tags .= $tag->name . ',';
}
echo $buffer_tags;
Поскольку у вас должна быть связанная запись для отображения чего-либо.
Удачного кодинга.
P.S. @cjbj Почему, черт возьми, вы удалили мою правку, в ней что-то не так или что? Ужасное управление здесь, и очень злонамеренное, так как я не могу ответить на комментарий из-за количества моих репутационных очков.

Если вам нужно получить теги по ID записи, вы можете использовать следующую функцию. Это будет работать везде, так как метод основан на запросах к базе данных.
function sc_tf_get_tags_as_array($post_id){
global $wpdb;
$tbl_terms = $wpdb->prefix . "terms";
$tbl_term_relationships = $wpdb->prefix . "term_relationships";
$sql = "SELECT name FROM $tbl_terms WHERE term_id in (SELECT term_taxonomy_id FROM $tbl_term_relationships WHERE object_id='$post_id');";
$results = $wpdb->get_results($sql);
if($results){
foreach($results as $row){
$tags_list[] = $row->name;
}
}
return $tags_list;
}

wp_get_post_tags работает только для записей (posts), а не для других типов записей. Если посмотреть в файл /wp-includes/post.php, можно увидеть, что эта функция вызывает wp_get_post_terms с параметром $taxonomy, установленным в 'post_tag':
function wp_get_post_tags( $post_id = 0, $args = array() ) {
return wp_get_post_terms( $post_id, 'post_tag', $args );
}
Для меток товаров (product tags) или других таксономий можно использовать функцию get_the_terms():
$tags = get_the_terms( $prod_id, 'product_tag' );
$tags_names = array();
if ( ! empty( $tags ) ) {
foreach ( $tags as $tag ) {
$tags_names[] = $tag->name;
}
}

global $post;
$tags = wp_get_post_tags( $post->ID );
if ( $tags ) {
foreach ( $tags as $tag ) {
$tag_arr .= $tag->slug . ',';
}
$args = array(
'tag' => $tag_arr,
'post_per_page' => 10,
'post__not_in' => array( $post->ID ),
'post_type' =>'post_type_name'
);
$related_posts = get_posts( $args );
if ( $related_posts ) {
foreach ( $related_posts as $post ) : setup_postdata( $post ); ?>
<div class="swiper-slide">
<a class="hover-effect image-holder" href="<?php the_permalink(); ?>">
<?php the_post_thumbnail(); ?>
<i class="icon-circle icon-circle--thin fa fa-arrow-right">­</i>
</a>
</div>
<?php endforeach;
}
}
wp_reset_postdata();

Ответы должны быть больше, чем просто фрагмент кода. Пожалуйста, внесите правку и объясните, почему это сработает.
