我有一个类别“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/它位于右侧块
答案 0 :(得分:2)
这是因为你有两个类别适用于所有帖子。
每个帖子中的类别按字母顺序排列。
在你的情况下,你选择$category_slug = $categories[0]->slug;
,这意味着:
从类别数组中获取第一类slug名称
每篇文章都是:
$categories[0] = Decouverte
,$categories[1] = Video
因为D
&lt; V
$categories[0] = Actualite
,$categories[1] = Decouverte
因为A
&lt; D
$categories[0] = Coup de coeur
,$categories[1] = Decouverte
因为C
&lt; 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])
中移除此结果。
现在,您可以通过调用0
将此数组的索引重置为从$categories = array_values($categories)
开始。
从现在起,您可以轻松拨打$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"; }
当然会更改if语句对数据的逻辑。
好的,这是我写的一些通用解决方案。
如果您只需要为任何帖子获取子类别,对于应用于帖子的任意数量的类别,无论父类别在类别数组中的哪个位置,您都应该尝试这一点。
首先,将此函数添加到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()函数相同的格式返回所有子类别。
如果为数组提供仅一个父类别。函数将返回一个空数组。