我想在我的自定义post_type中获得发布的所有类别, 并在边栏中将其显示为列表。我怎样才能做到这一点?
另外, 基于我当前所在的类别网站, 我不想使用默认模板category.php而不是我想使用archive-myposttype.php来基于类别使用我自己的布局。
所有类别都是默认的帖子类别, 而不是自定义分类法。
我有两个custom_post_types(posttype1, posttype2), 但是没有自定义分类法, 因此很难筛选和显示仅分配给自定义帖子类型帖子的类别。
请帮忙。谢谢。
#1
对于第一个问题, 你必须使用原始sql:
<?php
$query = 'SELECT DISTINCT term_id FROM {$wpdb->prefix}term_taxonomy JOIN {$wpdb->prefix}term_relationships ON {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id JOIN {$wpdb->prefix}posts on {$wpdb->prefix}term_relationships.object_id = {$wpdb->prefix}posts.ID AND wp_3_posts.post_type ="custom_post" WHERE taxonomy = "category"';
$term_ids = $wpdb->get_col($query, 0);
$categories = get_terms(array("taxonomy" => "category", "object_ids" => $term_ids));
?>
参考在这里:https://codex.wordpress.org/Database_Description
对于第二个问题, 你可以使用上面的代码查找这是否是你要定位的类别, 然后在category.php文件中加载所需的自定义模板。
#2
当你说要以列表形式显示类别时, 我想你不想为列出的每个类别添加链接。如果是这样, 则可以使用” get_the_category()”函数轻松获取帖子的类别。
对于第二个问题, 我不确定你是否要基于类别或帖子类型创建自定义模板, 因为类别可以同时存在于两种帖子类型中, 所以我看不到如何实现此目的。
但是, 如果你想显示基于类别标签的自定义模板, 则可以轻松创建文件并使用以下类别将其命名为category- {category-slug} .php。因此, 对于名为”照片”的类别, 文件名将为” category-photos.php”。
评论前必须登录!
注册