[英]Category_slug of category children wordpress
我有一个“ Decouverte”女巫类别,它有三个子类别:“actualité”,“vidéo”和“ coup de coeur”。
当我按照帖子的子类别对帖子进行排序时,除“视频”类别外,其他所有内容都有效; category_slug显示“ decouverte”。
子类别“视频”显示在最后,也许是为什么它不起作用?
我的代码:
$categories = get_the_category();
$category_slug = $categories[0]->slug;
echo $category_slug;
if ( $category_slug == 'actualite' ) { ?>
<div class="picto_home icone_actualite"></div><?php
}
elseif ( $category_slug == 'video' ) { ?>
<div class="picto_home icone_video"></div><?php
}
elseif ( $category_slug == 'coupdecoeur' ) { ?>
<div class="picto_home icone_coupdecoeur"></div><?php
}
else { echo "Doesn't work"; } ?>
和网站: http : //www.overso.me/它在右侧
这是因为您对所有帖子都应用了两个类别。
每个帖子中的类别均按字母顺序排序。
在您的情况下,您将$category_slug = $categories[0]->slug;
, 意思是:
从类别数组中获取第一个类别子弹名称
对于每个帖子,它是:
$categories[0] = Decouverte
, $categories[1] = Video
因为D
< V
$categories[0] = Actualite
, $categories[1] = Decouverte
因为A
< D
$categories[0] = Coup de coeur
, $categories[1] = Decouverte
因为C
< D
好的,这是我为您解决问题的方法。
在检查$categories[0]->slug
,先检查一下$categories[0]
对象是否为PARENT类别。 您可以通过检查以下内容来做到这一点:
$categories = get_the_category();
// Remove parent category object from array if it's on first place
if($categories[0]->parent == 0){
unset($categories[0]);
$categories = array_values($categories);
}
如您所见,如果$categories[0]
是父类别( if($categories[0]->parent == 0)
),则从数组$categories
- unset($categories[0])
删除此结果。
现在,您可以通过调用$categories = array_values($categories)
将此数组的索引重置为从0
开始。
从现在开始,您可以轻松地调用$categories[0]->slug
,因为肯定没有父类别。
$categories = get_the_category();
// Remove parent category object from array if it's on first place
if($categories[0]->parent == 0){
unset($categories[0]);
$categories = array_values($categories);
}
$category_slug = $categories[0]->slug;
if ( $category_slug == 'child-1' ) {
echo "1111";
}
elseif ( $category_slug == 'child-2' ) {
echo "2222";
}
elseif ( $category_slug == 'child-3' ) {
echo "3333";
}
else { echo "Doesn't work"; }
当然,如果语句逻辑对您的数据进行更改。
好的,这是我写的一些通用解决方案。
如果您只需要获取任何帖子的子类别,应用于该帖子的任意数量的类别,并且无论父类别位于类别数组中的哪个位置,都应尝试此操作。
首先,将此函数添加到您的functions.php文件(或您的插件文件)中。
function du_get_post_subcategories( $post_id ){
$categories = get_the_category( $post_id );
$i = 0;
foreach ($categories as $category) {
if($category->parent == 0){
unset($categories[$i]);
}
$i++;
}
$categories = array_values($categories);
return $categories;
}
然后在循环中您可以调用
$subcategories = du_get_post_subcategories( $post->ID );
如果您有帖子ID,也可以在循环外部调用它
$subcategories = du_get_post_subcategories( $your_post_id );
此函数将以与get_the_category()函数相同的格式返回所有子类别。
如果您仅提供一个父类别的数组。 函数将返回一个空数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.