Отображение категорий из пользовательского типа записей
Я создал пользовательский тип записей 'Portfolio', а также под этим типом записей я создал категории Portfolio со следующим кодом
functions.php - ниже приведен код для пользовательского типа записей, который я определил на странице functions.php
function demo_register_post_type() {
register_post_type('Portfolio', array(
'labels' => array(
'name' => __('Portfolio'),
'singular_name' => __('Portfolio'),
'add_new' => 'Добавить новое портфолио',
'edit_item' => 'Редактировать портфолио',
'new_item' => 'Новое портфолио',
'view_item' => 'Просмотреть портфолио',
'search_items' => 'Искать портфолио',
'not_found' => 'Портфолио не найдено',
'not_found_in_trash' => 'В корзине портфолио не найдено',
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => true,
'query_var' => true
),
'menu_position' => 6,
'public' => true,
'supports' => array(
'title','editor','author','thumbnail','excerpt','comments','page-attributes'
),
'rewrite' => array( 'slug' => 'portfolio', 'with_front' => false ),
'taxonomy' => array('category', 'post_tag')
));
register_taxonomy( 'portfolio-category', 'Portfolio', array ('hierarchical' => true, 'label' => __('Категории портфолио'))); // категории портфолио
Теперь я хочу получить все категории из этого типа записей и отобразить записи из категорий на странице?
Пожалуйста, подскажите, как я могу это сделать?
Спасибо.

Как насчёт использования get_terms()?
Быстрый пример:
$terms = get_terms('portfolio-category'); // Получаем все термины таксономии 'portfolio-category'
foreach ( $terms as $term ) { // Перебираем термины в цикле
echo $term->name.'<br />'; // Выводим название каждого термина с переносом строки
}

Чтобы получить записи вашего пользовательского типа записи, вам нужно запросить post_type, и вы можете сделать это следующим образом:
<?php query_posts(array( 'post_type' => 'Portfolio' )); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
<!-- Отображаем заголовок как ссылку на постоянную ссылку записи. -->
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Постоянная ссылка на <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Отображаем дату (в формате 16 ноября, 2009) и ссылку на другие записи этого автора. -->
<small><?php the_time('j F, Y') ?> от <?php the_author_posts_link() ?></small>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata">Опубликовано в <?php the_category(', '); ?></p>
</div> <!-- закрываем первый div -->
<?php endwhile; else: ?>
<p>Извините, нет записей, соответствующих вашим критериям.</p>
<?php endif; ?>
Теперь, если вы хотите получить записи типа Portfolio с определенным термином из вашей пользовательской таксономии, добавьте аргумент таксономии в массив query_posts следующим образом:
<?php query_posts(array( 'post_type' => 'Portfolio','portfolio-category' => 'category-name' )); ?>
Надеюсь, это поможет.
