Get Categories查询在函数.php中不起作用

时间:2015-07-24 作者:Aadil Afzal

我正在尝试在函数中获取自定义帖子类型的类别。php,但它不返回任何值,当我在任何主题文件中运行此查询时,它工作正常。这是我的密码

function get_destinations(){
   $args = array(
    \'type\'                     => \'accomodation\',
    \'child_of\'                 => 0,
    \'parent\'                   => \'\',
    \'orderby\'                  => \'name\',
    \'order\'                    => \'ASC\',
    \'hide_empty\'               => 1,
    \'hierarchical\'             => 1,
    \'exclude\'                  => \'\',
    \'include\'                  => \'\',
    \'number\'                   => \'\',
    \'taxonomy\'                 => \'facilitie\',
    \'pad_counts\'               => false 

); 
 $categories = get_categories($args);$destinations = array();
              foreach ($categories as $cat) { 
                if($cat->cat_name != \'\'){
                    $destinations[$cat->cat_name] = $cat->cat_name;
                }
          }
return $destinations;
 }
我正在使用this 要添加的代码meta field, 现在我必须将类别传递给select 标记为

$my_meta2->addSelect($prefix.\'select_field_id\',get_destinations(),array(\'name\'=> \'Select Destination\'));
原始代码是这样的,它们在数组中传递值。

$my_meta->addSelect($prefix.\'select_field_id\',array(\'selectkey1\'=>\'Select Value1\',\'selectkey2\'=>\'Select Value2\'),array(\'name\'=> \'My select \', \'std\'=> array(\'selectkey2\')));
但没有得到任何价值,任何我错在哪里的想法。谢谢

4 个回复
SO网友:s_ha_dum

您正在使用第三方代码生成这些元框,我不熟悉该代码的工作方式。事实上,根据你的问题,我甚至不确定代码在哪里失败。你对问题的描述不充分。我可以指出,您的代码过于复杂。可以大大简化:

function get_destinations(){
  // Using a post type
  $args = array(
    \'type\'                     => \'book\',
    \'taxonomy\'                 => \'genre\',
  ); 
  $categories = get_terms($args); // changed to get_terms()

  if (!is_wp_error()) {
    $destinations = wp_list_pluck($categories,\'cat_name\');
    /* Convert to key=>value format
       I doubt this is actually necessary and can probably be omitted
    */
    $destinations = array_combine($destinations,$destinations);
    return $destinations;
  }
}
var_dump(get_destinations());
删除默认参数。你不需要重复这些使用get_terms() 因为它返回一个正确的WP_Error 对象,而不仅仅是其中的一部分(至少在我的安装中,我可能已经破坏了它。我会定期这样做)。无论如何,get_terms() makesmore因为您检索的不是“类别”,而是自定义分类法wp_list_pluck() 简化foreach至于核心代码,我只看到三个地方可能会失败:

帖子类型错误分类错误类型/分类中没有帖子

SO网友:Samyappa

It Will work,

$cat_args = array(
                      \'parent\'  => 0,
                      \'hide_empty\' =>0,
                      \'order\'    => \'ASC\',
                   );
    $categories = get_categories($cat_args);
    foreach($categories as $category){
       echo get_cat_name($category->term_id); 
    }
SO网友:Josh Riser

检查WordPress Codex中的参数部分get_categories.

https://codex.wordpress.org/Function_Reference/get_categories#Parameters

这个type 参数仅接受2个值(post和link),并且您正在尝试使用accomodation.

你可能想要的是get_terms.

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

因此,您将使用此get_categories.

$categories = get_terms(\'facilitie\');
对于你想要做的事情,你可能不需要任何$args 大堆

然后在你的foreach 你只想改变一下$cat->cat_name$cat->name.

SO网友:Mohamed Rihan
function get_cat_val(){

    $taxonomies = array(\'YOUR_CAT_SLUG\');

    $args = array(
        \'order\'             => \'ASC\',
        \'hide_empty\'        => false,
        \'hierarchical\'      => true 
    ); 

    $terms = get_terms($taxonomies, $args);

    print_r($terms);

}

or

global $post;
$term_class = array();

$terms = get_the_terms( $post->ID, \'YOUR CAT SLUG\' );

if ( $terms && ! is_wp_error( $terms ) ) {

    foreach ( $terms as $term ) {
        $term_class[] = $term->slug;
    }

}
结束

相关推荐

GET_CATEGORIES()返回“未分类”

在我的WPMU网站前端,所有类别都消失了,每个帖子都标有“未分类”。然而,这只是单曲。php,而不是在主页上。php。相同的错误发生在get_categories(), wp_list_categories() 和the_category().我试着用var_dump(get_categories()) 但就像WordPress一样,它只是认为应该这样。