本篇文章更新時間:2019/02/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


標題雖然這樣打,但其實不一定文章分類,只要是「分類」問題都可以加點變化取得。另外就是很想打「最佳解法」,但考量學海無涯,還是不要說死好了,如果有更好方法,歡迎留言給我! 哈哈

這需求是來自「我想要在某個分類下做 XXX 」或是「我不想要在某個分類下有 xxx」。

如果去 Google 答案,只會發現大部分人都只有教「找上一層」,而不是「找最上層」分類,這樣就會發生在有多層分類的狀況下或多分類的選擇下無法精準判斷現在的最上層分類(通常也是根據最上層分類來做限制)。

WordPress 僅有實作取得上層的方法 get_the_category ,這篇文章就是要用它進化一下,如下:

// 取得當前物件編號
$post_id = get_queried_object_id();
// 取出物件分類
$category = get_the_category($post_id);
// 建立容器存放所有最上層分類 Slug
$category_slug = array();
// 個別取出
foreach ($category as $key => $cat) {
    // 判斷是有有上一層的分類,如果沒有,本身就是最上層
    if ($cat->category_parent == 0) {
        $category_slug[] = $cat->slug;
    } else {
        $p_cat = 0;
        // 如果有,就用遍歷方式詢問,問到最上一層為止
        $catid = $cat->category_parent;
        while ($catid) {
            $sub_cat = get_category($cat->category_parent);
            $catid = $sub_cat->category_parent;
            // 確認沒有上一層分類後,紀錄當前分類 Slug並跳開遍歷
            if ($catid == 0) {
                $p_cat = $sub_cat->slug;
            }
        }
        // 儲存遍歷結果
        $category_slug[] = $p_cat;
    }
}

最後 $category_slug 陣列中就會存放好目前這個物件所屬的全部最上層分類 Slug ,後面判斷要做什麼就沒問題拉!

當然中間如果只是要鎖定某個子分類也不是難事,關鍵就在那個 While 迴圈的處理作法來從當前分類往上追根。

程式碼僅是片段,如不了解,請勿直接亂貼在系統中哦XD


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon