首先,我不知道你指的自定義後類型傳遞給the_terms()
。我覺得get_the_terms()
會給你以後的靈活性。
如:
<?php
$taxList = array("location", "venue");
foreach ($taxList as $tax) {
$terms = get_the_terms($post->ID, $tax);
if ($terms && ! is_wp_error($terms)) {
echo "<br/>{$tax}: ";
$separator = "";
foreach ($terms as $term) {
echo "{$separator}{$term->name}";
$separator ", ";
}
}
}
?>
NB這是打出來,在iPad上,所以可能包含語法或邏輯錯誤,因爲我不能測試...但認爲這個想法應該是足夠健全的幫助!
更新: OP建議的是,上述代碼被顯示在每一行,這表明從get_the_terms()
結果不是通過在第二參數指定的分類學過濾所有分類術語。
我想知道這可能是因爲分類名稱是區分大小寫的,所以我是如何規定他們$taxList
陣列中可能是不正確的,但根據docco,如果是這樣的話,那麼get_the_terms()
應該返回false
在這種情況下,什麼都不會輸出。
所以 - 看來,這是由我們來篩選結果如下:
<?php
$taxList = array("location", "venue");
foreach ($taxList as $tax) {
$terms = get_the_terms($post->ID, $tax);
if ($terms && ! is_wp_error($terms)) {
echo "<br/>{$tax}: ";
$separator = "";
foreach ($terms as $term) {
if (strtolower($term->taxonomy) == strtolower($tax)) {// <-- New (redundant!?) filter.
echo "{$separator}{$term->name}";
$separator ", ";
}
}
}
}
?>
更新:的進一步改變可能是自動的回暖在當前使用的分類後,以避免輸入錯誤等,通過更新所述第一行這樣:
$taxList = get_object_taxonomies('uk_events');
然後進一步,這個代碼可以被用於所有的交類型(例如來回m將模板中的一個呼叫轉換爲functions.php中此代碼的函數),將'uk_events'
替換爲$post->post_type
。
感謝您的答覆,該代碼將分類放在兩行上,因爲我想要的,但它也顯示在每一行上的所有分類法,所以我得到:位置:示例位置,示例場地 – 2013-04-28 14:35:53
@MattHelden這很奇怪,根據到[get_the_terms()']的代碼(http://codex.wordpress.org/Function_Reference/get_the_terms),結果應該被第二個參數指定的特定分類法過濾掉(即,我們正在傳遞'$ tax' )。我們可以自己過濾,雖然...會更新答案。 – Sepster 2013-04-29 10:53:27
@MattHelden你能否確認'$ post',因此'$ post-> ID'包含你認爲它的作用?我想知道'get_the_terms()'是否意外地行爲,因爲它的_first_參數是不正確的?做一個'回聲「
ID:{$ post-> ID}
」;'此代碼之前立即檢查? – Sepster 2013-04-30 02:51:04