2013-08-01 11 views
0
function get_people_cats($taxonomy) { 

    $output = ''; 
    $terms = get_terms($taxonomy); 
    $count = count($terms); 
    if ($count > 0): 
     foreach ($terms as $term): 
      $output .= "'". $term->name ."'". '=>'; 
      $output .= "'". $term->term_id."',"; 
     endforeach; 
    endif; 
    return $output; 
} 

此函數返回自定義分類列表,如果函數在模板中調用,則返回哪個單詞。但我想將函數值分配給functions.php中的變量,並且它什麼都不返回。函數在wordpress functions.php中輸出空值,但在從另一頁調用時起作用

回答

0

試試這個,在我functions.php文件正常工作在本地站點:

function get_people_cats($taxonomy) { 

    $output = ''; 
    $terms = get_terms($taxonomy); 
    $count = count($terms); 
    if ($count > 0): 
     foreach ($terms as $term): 
      $output .= $term->name.'=>'.$term->term_id; 
     endforeach; 
    endif; 
    return $output; 
} 

echo get_people_cats('category'); 
+0

感謝它適用於標準類別,但是當我輸入一個自定義分類作爲函數參數時,它返回這個:'array(「」=>「」,「」=>「」)' –

+0

它不需要演講者圍繞關鍵和價值觀? –

+0

在下面發佈了一個後續答案,以便代碼格式化爲 – wunderdojo

0

如果你沒有得到條款回這可能是由於該分類被註冊在哪裏。如果它正在init鉤子中註冊,那麼在分類實際註冊之前,您可能會嘗試將它們打印出來。

您可以通過以下測試:

function get_people_cats($taxonomy) { 
    $output = ''; 
    $terms = get_terms('category'); 
    $count = count($terms); 
    if ($count > 0): 
     foreach ($terms as $term): 
      $output .= $term->name.'=>'.$term->term_id; 
     endforeach; 
    endif; 
    return $output; 
} 

function echo_cats() { 
    echo get_people_cats('taxonomy_name', array('hide_empty' => 0)); 
} 

add_action('wp_footer', 'echo_cats'); 

掛接到wp_footer它不會被調用,直到有可能註冊分類任何插件後良好。

//更新//

明白了。要創建一個數組,只是這樣做:

$terms = get_terms($taxonomy, array('hide_empty' => false)); 
if(!is_wp_error($terms)) { 
    foreach($terms as $term) { 
     $types[$term->term_id] = $term->name; 
    } 
} 
return $types; 
} 

這會給你的$term->id => $term->name --數組,你可能要扭轉取決於你如何使用數組。

+0

hmm ...我複製了代碼,添加了參數,它根本不輸出任何內容。 感謝您的幫助! –

+0

您在get_people_cats()中換出了taxonomy_name作爲您的自定義分類的名稱?我使用自定義分類(專業)在本地進行了測試,它沒有任何問題。請記住,它將打印在頁面的最底部 - 哦,並且您必須在模板中使用wp_footer()。 – wunderdojo

+0

是的,我可以在底部看到它,但似乎我無法將它作爲下面代碼中的值傳遞給變量。 '陣列( \t \t '類型' \t \t \t> '下拉', \t \t '保持器' \t \t => '的div', \t \t '類' \t \t => '', \t \t '標題' \t \t => __( '插入Cetegory ID'), \t \t 'PARAM_NAME' \t => 'CATEGORY_ID',//必須相同實際短碼的參數名稱\t \t \t \t '值' \t \t => $ myArrayHere, \t \t '描述' \t => __( '輸入類別ID'), \t)' –

0

如果您的分類法實際上是使用插件創建的,而不是使用您的functions.php中的代碼創建它們,get_terms的結果將是空的,直到分類法已啓動,這更好地啓用插件級別啓動,最有可能使用「初始化」掛鉤,所以你會後勾勾你的函數只有在你的主題模板文件使用它(而不是在functions.php中)basicly你做這樣的事情:

add_action('init', 'get_people_cats', 9999); 

然後你會稱它爲normaly:$cats = get_people_cats('person_category');

希望這可以解決您的問題(我知道它花了我一個小時左右當我遇到它時解決這個問題)。

相關問題