尝试使用GET_CATEGORIES列出自定义分类的术语

时间:2013-08-14 作者:Poisontonomes

我正在使用这段代码尝试列出一个自定义分类法的术语,以便在元框选择框中使用,但在我实现它时,它没有显示任何内容(尽管使用默认的“类别”分类法)

$partners = array();
$partners_obj = get_categories(array(\'taxonomy\' => \'partner-cat\'));
$partners[\'\'] = \'-\';
foreach ($partners_obj as $partner) {
    $partners[$partner->cat_ID] = $partner->cat_name;;
}
正如您所看到的,我的自定义分类法是“partner cat”,并且在该分类法的两个单独术语中有一个自定义帖子类型中的帖子。

任何帮助都将不胜感激。

5 个回复
SO网友:Kumar

get_categories()
获取“categories”类型的分类http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/category.php#L0, 要获取自定义分类法,应使用get\\u terms(),如下所示http://codex.wordpress.org/Function_Reference/get_terms

$terms = get_terms( \'partner-cat\', \'orderby=count&hide_empty=0\' );
$count = count($terms);
if ( $count > 0 ){
 echo "<ul>";
 foreach ( $terms as $term ) {
   echo "<li>" . $term->name . "</li>";

 }
 echo "</ul>";
}
请确保指定为分类法注册的正确slug,并在配置文件中将WP\\u DEBUG更改为true,以检查是否存在进一步的错误,因为您可能在注册分类法之前获取分类法,因此在这种情况下不会得到任何结果,您将得到错误。

您可以粘贴用于注册分类的代码吗?

SO网友:RRikesh

分类术语是否为空?默认情况下,它们不会显示。您可以尝试使用:

$partners_obj = get_terms( \'partner-cat\', array(\'hide_empty\' => false) );
请注意get_categories() 使用get_term() 获取您的条件。

你的foreach 也不太好。您应该访问term_idname 相反

foreach ($partners_obj as $partner) {
    $partners[$partner->term_id] = $partner->name;
}
完整代码:

$partners = array();

$partners_obj =  get_terms( \'taxo-name-here\', array(\'hide_empty\' => false) );
echo \'<pre>\' . print_r( $partners_obj, true ) . \'</pre>\';
echo \'<hr>\';
$partners[\'\'] = \'-\';
foreach ($partners_obj as $partner) {
    $partners[$partner->term_id] = $partner->name;;
}

echo \'<pre>\' . print_r( $partners, true ) . \'</pre>\';

SO网友:Mile Milosheski

如果您使用的是自定义帖子类型CPT,并且我假设您已经为该自定义帖子类型创建了自定义分类法,那么可以这样说:

您有CPType命名产品和CPTaxonomy命名产品类别

如果您试图将CPTaxonomy显示到循环中的产品页面中,我建议您根据WP codex使用此功能:

http://codex.wordpress.org/Function_Reference/get_terms

获取两个命名产品的CPType的CPTaxonomy的代码应如下所示:

$categories = get_terms( \'products\', \'orderby=count&hide_empty=0\' );
然后使用以下代码显示分类:

<?php foreach($categories as $category):
 print $category->slug;print $category->name; 
?>

SO网友:Travis van der Font

The Wordpress way:

$categories = (array) get_terms(\'partner-cat\', array(\'hide_empty\' => false));
foreach (array_keys($categories) as $k)
{
    _make_cat_compat($categories[$k]);
}
这是使用Wordpress在函数中使用的直接实现get_categories() 位于wp\\U includes \\类别内。php

SO网友:Narinder kumar
            <?php
                $args = array(
                    \'type\' =>\'\',//optional
                    \'number\' => \'\',
                    \'hide_empty\' => 0,
                    \'taxonomy\'  => \'product_cat\' //your custom taxonomy name
                ); 
                $categories = get_categories($args); 
                //echo "<pre>";   print_r($categories);
                foreach($categories as $cat){
                    $catid = $cat->term_id;                 
                    $thumbnail_id = get_woocommerce_term_meta($catid, \'thumbnail_id\', true );
                    $image = wp_get_attachment_url( $thumbnail_id );
                    $catname = $cat->name;
                    $catpage = $cat->slug;
                ?>
结束

相关推荐

Grouping categories by genre

我的wordpress视频博客有几个类别。假设该类别可以分为几个类别,例如动作、恐怖、神秘,另一个类别属于动作、恐怖、浪漫如何将类别分为不同的类型?因为在最基本的结构中,我们将帖子分类。现在我想把类别分成不同的类别然后可以通过url(例如)在流派中显示类别http://www.domain.com/genre/actions 它将列出其中的所有类别。下面是一个具有此功能的示例站点http://www.anime44.com/anime-genre/Fantasy