首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress >从自定义post类型获取自定义分类法

问WordPress >从自定义post类型获取自定义分类法
EN

Stack Overflow用户
提问于 2016-06-25 20:57:41
回答 2查看 12.7K关注 0票数 2
  1. 安装自定义邮政型UI wordpress插件
  2. 创建自定义post类型=“产品”
  3. 使用以下方法注册自定义分类类别(不同于类别)

1.如何显示所有自定义post类型,并在上面有一个筛选器作为筛选选项卡使用?

2.如何在自定义模板中循环自定义分类“类别”并显示链接?

HTML结构

自定义Post类型URL : /wp-admin/edit-tags.php?taxonomy=categories&post_type=products

代码语言:javascript
复制
<?php get_term( $term, $taxonomy, $output, $filter ) ?>

<?php 
$args=array(
  'name' => 'categories'
);
$output = 'products'; // or names
$taxonomies=get_taxonomies($args,$output); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    echo '<p>' . $taxonomy->name . '</p>';
  }
}  
?>

<?php 
$args = array(
  'public'   => true,
  '_builtin' => false

); 
$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies = get_taxonomies( $args, $output, $operator ); 
if ( $taxonomies ) {
  foreach ( $taxonomies  as $taxonomy ) {
    echo '<p>' . $taxonomy . '</p>';
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-26 02:24:32

您可以这样做以获得自定义分类法的所有术语:

条款/

代码语言:javascript
复制
$terms = get_terms( array(
    'taxonomy' => 'categories',
    'hide_empty' => false,
) );

foreach ( $terms as $term ) {
    $term_link = get_term_link( $term );
}

$term返回具有以下结构的数组:

代码语言:javascript
复制
array(
[0] => WP_Term Object
(
    [term_id] =>
    [name] =>
    [slug] =>
    [term_group] =>
    [term_taxonomy_id] =>
    [taxonomy] =>
    [description] =>
    [parent] =>
    [count] =>
    [filter] =>
)

$term_link将为您提供分类术语存档的permalink。

链接/

关于如何实现过滤器选项卡的另一个问题:请查看这个插件:https://wordpress.org/plugins/beautiful-taxonomy-filters/

票数 3
EN

Stack Overflow用户

发布于 2020-05-28 15:38:42

要查找与给定post类型关联的分类法,请使用WordPress get_object_taxonomies()函数,如下所示:

代码语言:javascript
复制
$taxonomies = get_object_taxonomies('post', 'objects');

$taxonomies将是WP_Taxonomy对象的数组。省略第二个参数,以获得一系列分类法鼻涕虫。

若要通过自定义分类法进行查询,请创建一个新的WP_Query,如下所示:

代码语言:javascript
复制
$args = [
    'posts_per_page' => -1,
    'tax_query' => [
        [
            'taxonomy' => 'categories',
            'field' => 'slug',
            'terms' => ['your-term'],
        ],
    ],
];
$filterQuery = new WP_Query($args);

虽然可以使用post_types使用register_post_type来声明分类法关联,但这种关联是可选的,而且非常弱。在内部,WordPress采取相反的方式,将post_types分配给分类法。

每个分类法都有一个object_type属性,它是它所知道的post_types的一个片段数组。深入研究register_post_type源代码,我们可以看到它为taxonomies参数属性中的每一项调用register_taxonomy_for_object_type,然后简单地向分类法的object_type数组中添加一个片段。这是使用post_type的分类法属性的唯一一次。我更喜欢在注册分类法时声明post_types,因为它更接近于WordPress的工作方式,并且误解了这种关联在过去给我带来了很多痛苦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38032911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档