在類別.php中,我將如何測試具有父類別的類別?WordPress的 - 獲取當前類別父母
如果父類別是A,子類別是B,並且用戶加載了類別B的URL,我希望能夠測試它是否具有父A,並在它運行代碼時運行代碼。
我已經找到了get_category_parents標籤,但它似乎返回一個鏈接列表,而不是一個數組:
get_category_parents($cat, TRUE, ', '));
即使我得到了數組,我不知道PHP函數是什麼測試它(PHP的noob)。
謝謝!
在類別.php中,我將如何測試具有父類別的類別?WordPress的 - 獲取當前類別父母
如果父類別是A,子類別是B,並且用戶加載了類別B的URL,我希望能夠測試它是否具有父A,並在它運行代碼時運行代碼。
我已經找到了get_category_parents標籤,但它似乎返回一個鏈接列表,而不是一個數組:
get_category_parents($cat, TRUE, ', '));
即使我得到了數組,我不知道PHP函數是什麼測試它(PHP的noob)。
謝謝!
可以使用cat_is_ancestor_of
功能檢查,如果一個類是另一個類的子項。對於檢查例如,如果目前的類別是一個名爲「博客」類別的孩子:
cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat'))
首先,你必須得到當前類別的ID:
$category_id = get_query_var('cat');
然後你就可以做一個數據庫查詢,看看它有一個家長或不:
$parent = $wpdb->get_var("SELECT parent FROM ".$wpdb->prefix."term_taxonomy WHERE term_id = $category_id");
如果它有一個,$父母將包含一級以上父母的ID,自然它的值應該大於0,因此您可以檢查如下所示:
<?php if ($parent > 0) : ?>
// do something
<?php endif; ?>
但是,您可以使用$ parent;
$parent_link = get_category_link($parent);
$parent_name = get_cat_name($parent);
// etc.
如果你想看到有更多高水平的父母的,你可以用父母的身份證做同樣的事情(DB查詢),甚至寫一個遞歸函數,去到頂層。正如我在源代碼中看到的,內置的get_category_parents()函數就是這樣做的。
HTH
退房的參考頁get_category_parents
,你所要求的鏈接時,你的第二個參數設置爲TRUE
。
你應該做的事:
get_category_parents($cat, FALSE, ', '));
我也建議不要使用空格作爲分隔符,因爲你可能需要在以後修剪那些空間。
在'category.php'(或任何單個類別模板)內,您可以使用全局變量$ cat來檢索當前類別的ID。 所以你要檢查'cat_is_ancestor_of(ID,$ cat);' 使用ID通常是更好的方法,因爲重命名名稱/ slug/whatever時它們不會改變。 – 2016-03-14 16:16:57