自定义帖子类型类别及其帖子列表

时间:2019-05-06 17:11:37

标签: wordpress categories posts

我一直在寻找这个,这里的代码似乎都不适合我。我有一个名为“产品”的自定义帖子类型,并且在每个帖子中都有特定的子类别。

例如“产品”中的内容是:

  • Hi Fi Compoments -放大器

  • 家庭影院 -影音接收器 -立体声接收器 -系统

  • 便携式音频 -数字音频播放器

我想做的是将第一个子类别以及具有该等级帖子列表的下一个等级称为。例如

家庭影院 -AVRecievers -AV接收器帖子列表 -立体声系统 -立体声系统帖子列表 -系统 -系统帖子列表

我发现的代码遇到了两个问题: 1.无论出于何种原因,当我定义产品的自定义帖子类型时,它都会提取wordpress数据库中的每个类别。

  1. 当它确实仅提取特定的产品类别时,它们都是乱序的,不再处于任何父结构中。

我有职位类型及其注册的信息,并且可以在其他地方正常工作。我还包括了来自functions.php的帖子类型reg。

任何帮助将不胜感激。

register_post_type( 'Products',
    // CPT Options
        array(
            'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'Product' )
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array( 'title', 'editor', 'thumbnail' ),
            'taxonomies'=> array('category'),
            'rewrite' => array('slug' => 'product'),
        )
    );
}

这里有一个示例代码,我尝试从中显示子类别,但是没有父子关系,并且没有拉动类别,例如“产品”中没有“新闻”,也没有帖子。

 <?php
       $args = array(
       'type'                     => 'products',
       'child_of'                 => 0,
       'parent'                   => '',
       'orderby'                  => 'name',
       'order'                    => 'ASC',
       'hide_empty'               => 1,
       'hierarchical'             => 1,
       'pad_counts'               => false );
       $categories = get_categories($args);
       echo '<ul>';

       foreach ($categories as $category) {
         $url = get_term_link($category);?>
          <li><a href="<?php echo $url;?>"><?php echo $category->name; ?></a></li>
         <?php
       }
       echo '</ul>';
   ?>

2 个答案:

答案 0 :(得分:0)

您要寻找的是get_terms()。这使您可以配置要检索其术语的分类法。

$terms = get_terms( array(
  'taxonomy' => 'Products',
  'hide_empty' => true,
) );

返回的Term对象将包含父项信息,并为您提供查询每个术语中的帖子所需的ID和子项。

完整资源:https://developer.wordpress.org/reference/functions/get_terms/

答案 1 :(得分:0)

  register_post_type( 'Products',
    // CPT Options
        array(
            'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'Product' )
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array( 'title', 'editor', 'thumbnail' ),

            'rewrite' => array('slug' => 'product'),
        )
    );
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );


function my_taxonomies_product() {
  $labels = array(
    'name'              => _x( 'Product Categories', 'taxonomy general name' ),
    'singular_name'     => _x( 'Product Category', 'taxonomy singular name' ),
    'search_items'      => __( 'Search Product Categories' ),
    'all_items'         => __( 'All Product Categories' ),
    'parent_item'       => __( 'Parent Product Category' ),
    'parent_item_colon' => __( 'Parent Product Category:' ),
    'edit_item'         => __( 'Edit Product Category' ), 
    'update_item'       => __( 'Update Product Category' ),
    'add_new_item'      => __( 'Add New Product Category' ),
    'new_item_name'     => __( 'New Product Category' ),
    'menu_name'         => __( 'Product Categories' ),

  );
  $args = array(
    'labels' => $labels,
    'hierarchical' => true,
  );
  register_taxonomy( 'product_category', 'products', $args );
}
add_action( 'init', 'my_taxonomies_product', 0 );

一旦我将自定义分类标准定义为“猫”,这便对我有所帮助,现在我可以区分这两种类型的帖子。