【问题标题】:How to display the taxonomy of the Custom Post Type?如何显示自定义帖子类型的分类?
【发布时间】:2021-03-09 14:44:10
【问题描述】:

我们在这里注册 Spotlights CPT 和 CPT 的分类

<?php
    /*
     * Register Spotlight CPT
     */
    add_action( 'init', 'register_spotlights', 0 );
    
    function register_spotlights() {
    
        $spotlight_labels = array(
            'name'                => _x( 'Spotlights', 'Post Type General Name', '' ),
            'singular_name'       => _x( 'Spotlight', 'Post Type Singular Name', '' ),
            'menu_name'           => __( 'Spotlights', '' ),
            'parent_item_colon'   => __( 'Parent Item:' ),
            'all_items'           => __( 'All Spotlights', '' ),
            'view_item'           => __( 'View Spotlight', '' ),
            'add_new_item'        => __( 'Add New', '' ),
            'add_new'             => __( 'Add New', '' ),
            'edit_item'           => __( 'Edit Spotlight', '' ),
            'update_item'         => __( 'Update Spotlight', '' ),
            'search_items'        => __( 'Search Spotlight', '' ),
            'not_found'           => __( 'Not found', '' ),
            'not_found_in_trash'  => __( 'Not found in Trash', '' ),
        );
        $spotlight_args = array(
            'label'               => __( 'Spotlight', '' ),
            'description'         => __( 'Holds spotlights', '' ),
            'labels'              => $spotlight_labels,
            'supports'            => array( 'title', 'thumbnail', 'custom-fields'), 
            'hierarchical'        => false,
            'public'              => true,
            'show_ui'             => true,
            'show_in_menu'        => true,
            'show_in_nav_menus'   => true,
            'show_in_admin_bar'   => true,
            'menu_position'       => 6,
            'menu_icon'           => 'dashicons-admin-post',
            'can_export'          => true,
            'has_archive'         => false,
            'exclude_from_search' => false,
            'publicly_queryable'  => true,
            'capability_type'     => 'page',
            'rewrite'             => array( 'slug' => 'spotlight', 'with_front' => false),
        );
        register_taxonomy(
            'category-spotlight',
            'spotlight',
            array(
                'hierarchical' => true,
                'labels' => array(
                    'name' => 'Category',
                    'singular_name' => 'Category'
                ),
                'show_ui' => true,
                'show_admin_column' => true,
                'public' => false,
                'query_var' => false,
                'show_in_rest' => true,
                'rewrite' => false
            )
        );
        register_post_type( 'spotlight', $spotlight_args);
    }

这里是我们添加CPT的循环,我们如何在这里显示分类类别?

<?php
    $args = array(
        'post_type' => 'spotlight',
        'orderby' => 'date',
        'order' => 'DESC',
        'posts_per_page' => 2
    );
  
    $query = new WP_Query( $args ); 
    $taxonomy = 'category-spotlight';
    $terms = get_terms($taxonomy); // Get all terms of a taxonomy
   
    if ($query->have_posts()): ?>
        <?php while ($query->have_posts()): $query->the_post(); ?>
            <div class="category"><?php echo $terms->name; ?></div>
            <h3 class="small"><?php the_title(); ?></h2>
        <?php endwhile; ?>
    <?php endif; ?>

我想显示如下内容: 标题1 类别1

标题2 类别2

目前显示每个帖子的标题,但不显示每个帖子的分类。 如何在每个标题下显示分类法?

【问题讨论】:

    标签: wordpress taxonomy-terms


    【解决方案1】:

    根据documentationget_terms 将返回一个数组 WP_Term 对象或WP_Error。在您的代码中,您有$terms-&gt;name。您需要让它选择找到的第一个术语,在这种情况下您需要$terms[0]-&gt;name,或者您需要添加一些逻辑来获得您想要显示的正确术语。

    此外,您加载的术语不一定与帖子相关。如果您想加载用于帖子的术语,您需要调用get_the_terms($post, $taxonomy) 以获取与相关帖子相关的分类术语。再次,它将是数组的返回类型,因此请确保提取正确的值。

    【讨论】:

      【解决方案2】:

      用这个替换你的代码。我希望这对你有用。

      <?php 
      if ($query->have_posts()): ?>
          <?php while ($query->have_posts()): $query->the_post(); ?>
              <div class="category"><?php echo $terms->name; ?></div>
              <h3 class="small"><?php the_title(); ?></h2>
              <?php 
                  $category_spotlight = get_the_terms( get_the_ID() , 'category-spotlight' );
                  foreach( $category_spotlight as $category_spot ) {
                      echo $category_spot->name;
                  }
              ?>
          <?php endwhile; ?>
      <?php endif; ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多