我希望在自定义post_type中为帖子添加所有类别,并将其显示为侧栏中的列表。我怎么能这样做?
此外,基于我所在的当前类别网站,我不想使用默认模板category.php而不是我想使用archive-myposttype.php来使用我自己的基于类别的布局。
所有类别都是默认的帖子类别,而不是自定义分类。
我有两个custom_post_types(posttype1,posttype2)但没有自定义分类,因此很难过滤并仅显示分配给自定义帖子类型帖子的类别。
请帮忙。感谢。
答案 0 :(得分:0)
对于第一个问题,你必须使用原始的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文件中加载您想要的自定义模板。
答案 1 :(得分:0)
当您说要将类别显示为列表时,我想您不希望为列出的每个类别添加链接。如果是这样,那么您可以使用'get_the_category()'函数轻松获取帖子的类别。
对于你的第二个问题,我不确定你是否想要基于类别或帖子类型的自定义模板,因为一个类别可以出现在两种帖子类型中,所以我看不出你如何能够实现这一点。 / p>
但是,如果要根据类别slug显示自定义模板,则可以轻松创建文件并将其命名为category- {category-slug} .php。因此,对于名为“照片”的类别,文件名将为“category-photos.php”。