簡體   English   中英

Category_slug類別兒童wordpress

[英]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; , 意思是:

從類別數組中獲取第一個類別子彈名稱

對於每個帖子,它是:

  1. $categories[0] = Decouverte$categories[1] = Video因為D < V
  2. $categories[0] = Actualite$categories[1] = Decouverte因為A < D
  3. $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM