Нет необходимости преобразовывать объект в массив, вы можете отлично работать с объектом без особых хлопот. Что любопытно (по крайней мере для меня), так это то, что вы получаете что-то вроде этого:
Array
(
[0] => stdClass Object
(
[term_id] => 7
[name] => Magister comunicaciones aplicadas
[slug] => magister-comunicaciones-aplicadas
[term_group] => 0
[term_taxonomy_id] => 7
[taxonomy] => linea-de-estudio
[description] =>
[parent] => 0
[count] => 4
)
[1] => stdClass Object
(
[term_id] => 8
[name] => Engagement marketing
[slug] => engagement-marketing
[term_group] => 0
[term_taxonomy_id] => 8
[taxonomy] => linea-de-estudio
[description] =>
[parent] => 0
[count] => 5
)
)
По сути, это массив объектов, так что вы должны обращаться с ними таким образом. Например, если я хочу имя первого:
$myterms = get_terms('taxonomy-name', 'orderby=none&hide_empty');
echo $myterms[0]->name;
Если вам нужно перебрать элементы, вы все равно можете использовать foreach();
.
foreach ($myterms as $term) { ?>
<li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php
} ?>
Таким образом, вы можете публиковать статьи из своей таксономии.
Для пользовательских типов записей вам нужно создать цикл, подобный следующему:
$args = array(
'post_type' => 'post-type-name',
'taxonomy' => 'term'
//for example
//'resources' => 'videos'
);
// assigning variables to the loop
global $wp_query;
$wp_query = new WP_Query($args);
// starting loop
while ($wp_query->have_posts()) : $wp_query->the_post();
the_title();
blabla....
endwhile;
Затем вы можете создать несколько циклов по одному для каждой таксономии / термина:).
Если вы хотите получить еще больше фантазий (не хотите повторяться сто раз), вы можете включить второй цикл в первый и назначить переменные таксономии (ресурсы, то есть) и термины, которые она имеет (видео ) (из вашего примера только последний). Идея состоит в том, что у вас будет обычный (типичный) цикл wordpress, ограниченный пользовательским типом записи и каждый из терминов.
foreach ($myterms as $term) : ?>
<li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php
$term_name = $term->slug;
$args = array(
'post_type' => 'post-type-name',
'taxonomy' => "$term_name"
);
// assigning variables to the loop
global $wp_query;
$wp_query = new WP_Query($args);
// starting loop posting only
while ($wp_query->have_posts()) : $wp_query->the_post();
the_title();
blabla....
endwhile;
endforeach; ?>
Очевидно, что вы можете сделать и обратное, создать нормальный цикл для пользовательского типа с одним шаблоном (похоже, у вас есть только один), и внутри он содержит все пользовательские термины.
Не очень элегантно, но это лучший способ, которым я могу придумать: P. Надеюсь, что кто-то может это понять, звучит сбивчиво с толку.
Может быть, это возможно с какой-нибудь функцией обратного вызова?.