Отображение категорий из пользовательского типа записей

18 февр. 2011 г., 12:59:53
Просмотры: 69.9K
Голосов: 4

Я создал пользовательский тип записей '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' => __('Категории портфолио'))); // категории портфолио

Теперь я хочу получить все категории из этого типа записей и отобразить записи из категорий на странице?

Пожалуйста, подскажите, как я могу это сделать?

Спасибо.

2
Комментарии

Зачем использовать две разные таксономии категорий? У вас зарегистрирована пользовательская таксономия portfolio-category, но дополнительно вы включаете и стандартную таксономию категорий для этого типа записи, например 'taxonomy' => array('category', 'post_tag'). Вам действительно нужны обе?

t31os t31os
18 февр. 2011 г. 14:11:46

Да, мне нужны обе категории, так как я хочу добавлять детали портфолио в категории портфолио и не хочу показывать категории портфолио в блоге или где-либо еще на сайте. Поэтому я использую две категории.

User User
23 февр. 2011 г. 09:00:49
Все ответы на вопрос 3
0

Как насчёт использования get_terms()?

Быстрый пример:

$terms = get_terms('portfolio-category'); // Получаем все термины таксономии 'portfolio-category'

foreach ( $terms as $term ) { // Перебираем термины в цикле
   echo $term->name.'<br />'; // Выводим название каждого термина с переносом строки
}
18 февр. 2011 г. 13:54:03
0

Чтобы получить записи вашего пользовательского типа записи, вам нужно запросить 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' )); ?>

Надеюсь, это поможет.

18 февр. 2011 г. 13:42:37
0

Попробуйте этот код, он работает. Поблагодарите меня позже.

   $term_args = array(
                'post_type'              => 'portfolio',
                 'taxonomy'               => 'project-type',
                'hide_empty'             => true,
                'fields'                 => 'all'
              );
   $term_query = new WP_Term_Query( $term_args );
9 февр. 2021 г. 14:42:13