Получение записей из произвольной таксономии
16 окт. 2014 г., 19:31:09
Просмотры: 183K
Голосов: 43
Я не могу получить записи из произвольной таксономии (fabric_building_types
). Я получаю cat_id
и cat->name
, но не могу получить сами записи.
$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'fabric_building_types',
'pad_counts' => false
);
$categories = get_categories( $args );
foreach ( $categories as $cat ) {
// вот мой код для получения записей произвольного типа
$posts_array = get_posts(
array(
'showposts' => -1,
'post_type' => 'fabric_building',
'tax_query' => array(
array(
'taxonomy' => 'fabric_building_types',
'field' => $cat->cat_ID,
'terms' => $cat->name,
)
)
)
);
print_r( $posts_array );
}
Может кто-нибудь помочь... Заранее спасибо

Parth Kumar
677
Комментарии
Все ответы на вопрос
4
1
Ваш налоговый запрос некорректен, field
должен указывать поле, по которому производится запрос: term_id
, name
или slug
-
$posts_array = get_posts(
array(
'posts_per_page' => -1,
'post_type' => 'fabric_building',
'tax_query' => array(
array(
'taxonomy' => 'fabric_building_types',
'field' => 'term_id',
'terms' => $cat->term_id,
)
)
)
);

Milo
78.9K
16 окт. 2014 г. 20:35:08
3
Для работы с таксономиями рекомендуется использовать функцию get_terms()
.
<?php
/* Добавьте вашу таксономию. */
$taxonomies = array(
'fabric_building_types',
);
$args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'exclude' => array(),
'exclude_tree' => array(),
'include' => array(),
'number' => '',
'fields' => 'all',
'slug' => '',
'parent' => '',
'hierarchical' => true,
'child_of' => 0,
'get' => '',
'name__like' => '',
'description__like' => '',
'pad_counts' => false,
'offset' => '',
'search' => '',
'cache_domain' => 'core'
);
$terms = get_terms( $taxonomies, $args );
foreach ( $terms as $term ) {
// здесь мой код для получения записей пользовательского типа поста
$posts_array = get_posts(
array( 'showposts' => -1,
'post_type' => 'fabric_building',
'tax_query' => array(
array(
'taxonomy' => 'fabric_building_types',
'field' => 'term_id',
'terms' => $term->term_id,
)
)
)
);
print_r( $posts_array );
}
?>
Ссылка на Codex: http://codex.wordpress.org/Function_Reference/get_terms

Courtney Ivey
1.02K
16 окт. 2014 г. 20:16:17
Комментарии
Спасибо... но проблема остается той же - пустой массив.. это из-за того, что я неправильно определяю пользовательский тип записи, раз я получаю массив терминов..

16 окт. 2014 г. 20:37:40
0
global $post; $id = $post->ID;
// Получаем категории текущего поста
$cat = get_the_category($id);
// Получаем термины таксономии для текущего поста
$loc = get_the_terms($id, 'taxonomy');
// Получаем список постов с учетом категории и таксономии
$posts = get_posts(
array('post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'category' => $cat[0]->term_id,
'tax_query' => array(
array(
'taxonomy' => 'location',
'field' => 'id',
'terms' => $loc[0]->term_id,
)
)
)
);
// Выводим массив найденных постов
print_r($posts);
Это должно работать.

kdgilang
211
14 сент. 2016 г. 05:59:20
0
Получение записей, связанных с текущей таксономией
Вы можете добавить следующий код в файл taxonomy-your_tax.php
<div class="a-article-wrapper">
<?php
$terms = wp_get_post_terms( $post->ID, 'your-taxonomy');
$terms_ids = [];
foreach ( $terms as $term ) {
$terms_ids[] = $term->term_id;
}
$args = array(
'post_type' => 'your-post-type',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'your-taxonomy',
'field' => 'term_id',
'terms' => $terms_ids
)
),
);
$query = new WP_Query($args);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
?>
<div class="row">
<div class="col-md-8 a-article-row">
<div class="row">
<?php $query->the_post();?>
<div class="a-post-time">
<span class="a-current-date"><?php the_time('j F, D') ?></span>
<span class="a-current-time"><?php the_time('g:i a') ?></span>
</div>
<div class="a-article-title">
<?php the_title(); ?>
</div>
<div class="a-article-content">
<div id="excerpt"><?php the_excerpt(); ?></div>
<?php the_content(); ?>
</div>
<div class="a-article-tags">
<?php echo get_the_term_list( get_the_ID(), 'your-taxonomy', '', ',' ); ?>
</div>
</div>
</div>
</div>
<?php } } ?>
</div>

Varsha Dhadge
341
27 июн. 2018 г. 13:38:40
Похожие вопросы
1
ответов