user
  • 0
Гуру

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

  • 0

Я создал пользовательский тип сообщения «Портфолио» также для этого типа сообщения. Я создал категории портфолио со следующим кодом.

functions.php — ниже приведен код пользовательского типа записи, который я определил на странице functions.php.

 function demo_register_post_type() {
            register_post_type('Portfolio', array(
                'labels' => array(
                    'name' => __('Portfolio'),
                    'singular_name' => __('Portfolio'),
                    'add_new' => 'Add New Portfolio',
                    'edit_item' => 'Edit Portfolio',
                    'new_item' => 'New Portfolio',
                    'view_item' => 'View Portfolio',
                    'search_items' => 'Search Portfolio',
                    'not_found' => 'No Portfolio found',
                    'not_found_in_trash' => 'No Portfolio 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' => __('Portfolio Categories')));  // portfolio categories

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

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

Спасибо.

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

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

      • 0
  2. Как насчет использования get_terms() ?

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

    $terms = get_terms('portfolio-category');
    
    foreach ( $terms as $term ) {
       echo $term->name.'<br />';
    }
    
    • 0
  3. чтобы получить сообщения вашего пользовательского типа сообщений, вам нужно запросить post_type, и вы можете сделать это следующим образом:

    <?php query_posts(array( 'post_type' => 'Portfolio' )); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
     <div class="post">
    
     <!-- Display the Title as a link to the Post's permalink. -->
     <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
    
     <!-- Display the date (November 16th, 2009 format) and a link to other posts by this posts author. -->
     <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>
    
      <div class="entry">
        <?php the_content(); ?>
      </div>
    
      <p class="postmetadata">Posted in <?php the_category(', '); ?></p>
     </div> <!-- closes the first div box -->
    
     <?php endwhile; else: ?>
     <p>Sorry, no posts matched your criteria.</p>
     <?php endif; ?>
    

    Теперь, если вы хотите получить публикацию портфолио определенного термина в вашей пользовательской таксономии, добавьте аргумент таксономии в массив query_posts следующим образом:

    <?php query_posts(array( 'post_type' => 'Portfolio','portfolio-category' => 'category-name' )); ?>
    

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

    • 0
  4. Попробуйте этот код, он работает. Отблагодаришь позже.

       $term_args = array(
                    'post_type'              => 'portfolio',
                     'taxonomy'               => 'project-type',
                    'hide_empty'             => true,
                    'fields'                 => 'all'
                  );
       $term_query = new WP_Term_Query( $term_args );
    
    • 0

Оставить ответ

You must login to add an answer.