[英]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.