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; 
}

如果在模板中调用该函数,此函数会返回自定义分类法列表以及找到的单词。但是我想将函数值分配给 in 中的变量functions.php,并且它什么也不返回。

4

3 回答 3

0

如果您的分类实际上是使用插件创建的,而不是使用您的 functions.php 中的代码创建它们,则 get_terms 的结果将是空的,直到分类已启动,这在插件级别启动更好,很可能使用“init”钩子,所以你必须在钩子之后钩子你的函数并只在你的主题模板文件中使用它(而不是在functions.php中),基本上你会做类似的事情:

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

然后你会正常调用它:$cats = get_people_cats('person_category');

希望这能解决你的问题(我知道当我遇到它时我花了大约一个小时来解决这个问题)。

于 2013-08-02T08:56:58.353 回答
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 --您可能希望根据您使用数组的方式来反转它。

于 2013-08-02T02:12:21.937 回答
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');
于 2013-08-02T00:28:46.413 回答