问题很简单
想象一下,我有一篇名为“单帖”的帖子,它位于“sub cat”类别内,它是“parent cat”的子类,而“parent cat”是“super cat”的子类。我需要做的是按照以下顺序显示帖子页面中的所有相关类别:
super-cat > parent-cat > sub-cat > Single Post
问题很简单
想象一下,我有一篇名为“单帖”的帖子,它位于“sub cat”类别内,它是“parent cat”的子类,而“parent cat”是“super cat”的子类。我需要做的是按照以下顺序显示帖子页面中的所有相关类别:
super-cat > parent-cat > sub-cat > Single Post
<?php
the_category( \' > \', \'multiple\', $post->ID);
echo \' > \';
the_title();
?>
当帖子只属于一个类别时,这一点是正确的。但是如果它在多个类别中,或者如果还选择了类别父项(在您的情况下,如果帖子也在超级猫和父猫中),那么它会显示这些类别两次<所以这可能不会对你有帮助。我怀疑breadcrumb type plugins 也许已经解决了这个问题。
您需要首先对类别进行排序。
// get categories of post in sorted order
$categories = sortCategories(get_the_category());
foreach($categories AS $category) {
echo $category->name; // Plot category name
}
echo get_the_title(); // Plot post name
function sortCategories($categories) { // Sorting the category
usort($categories, "cmpCategories");
return $categories;
}
function cmpCategories($category_1,$category_2) { // Sort function
foreach(get_categories(array("parent" => $category_1->cat_ID)) AS $sub) {
if($category_2->cat_ID == $sub->cat_ID) return -1;
}
return 1;
}
我希望这有帮助。这应该可以做到:
$cats = get_the_category(); //retrieve cats for post
foreach ($cats as $cat) { //go thru to find child one - means cat which has specified parent id
if ($cat->category_parent != 0) {
$child = $cat->term_taxonomy_id;
}
}
echo get_category_parents( $child, TRUE, \' > \' );
首先,我们得到特定帖子的类别,然后找到最后一个子项,然后使用get\\u category\\u parents,我们得到其父项的整个树。。。以下是我的工作解决方案:
$categories = get_the_category();
$ordering = array();
foreach( $categories as $index => $cat) {
$ordering[$cat->parent] = $index;
}
$ordered_string = "";
$i = 0;
while( $ordering[$i] !== null ){
$ordered_string .= \'<li class="item-cat"><a href="\'.get_category_link( $categories[$ordering[$i]]->term_id ).\'">\'.$categories[$ordering[$i]]->name.\'</li>\';
$i = $categories[$ordering[$i]]->term_id;
}
echo $ordered_string;
它回显为面包屑准备的字符串,只需稍加修改,您就可以将类别排序为数组。对我来说,这是一个老问题,但在谷歌上排名第一。我无法快速找到面包屑分类,它支持多个类别,所以我创建了一个并将其包装在ul
为便于造型:
// breadcrumb categorization
$cats = wp_get_post_categories( get_the_ID() ); //post id
foreach($cats as $c) {
$ancestors = array_merge( array_reverse( get_ancestors( $c, \'category\' ) ), [$c] );
echo \'<ul class="post-categories">\';
foreach($ancestors as $id){
echo \'<li><a href="\' . esc_url( get_category_link( $id) ) . \'">\' . get_cat_name( $id ) . \'</a></li>\';
}
echo \'</ul>\';
}
使用“Members”或“Capability Manager”之类的插件,我看不到这样的插件manage_tags 能力。难道不应该有这样一个吗manage_categories?编辑:我想我知道了。manage\\u术语适用于所有分类法。没有一个专门用于标记,但如果我愿意,我可以创建一个。这可以让我设置一个只能编辑类别而不能编辑标记的角色,反之亦然。注:我的评分下降了。如果你对我的评价很低,请说明原因。谢谢