分类法存在--但没有出现

时间:2014-07-03 作者:BrainBUG

在函数中。我创建了一些带有分类法的CPT。

add_action(\'init\', \'register_ap_jobverzeichnis\');
function register_ap_jobverzeichnis() {
  global $jobdata;

  $ap_jobver_rewrite = $jobdata[\'ap_jobver_rewrite\'];
  if(empty($ap_jobver_rewrite)) { 
    $ap_jobver_rewrite = \'jobboerse\'; 
  }

  $joblabels = array(
    \'name\'               => __(\'Jobverzeichnis\',\'frameworkjob\'),
    \'singular_name\'      => __(\'Jobverzeichnis\',\'frameworkjob\'),
    \'add_new\'            => __(\'Neuer Job\',\'frameworkjob\'),
    \'add_new_item\'       => __(\'Neuen Job hinzufügen\',\'frameworkjob\'),
    \'edit_item\'          => __(\'Job bearbeiten\',\'frameworkjob\'),
    \'new_item\'           => __(\'Neuer Job\',\'frameworkjob\'),
    \'view_item\'          => __(\'Job ansehen\',\'frameworkjob\'),
    \'search_items\'       => __(\'Job suchen\',\'frameworkjob\'),
    \'not_found\'          =>  __(\'Keine Jobs gefunden\',\'frameworkjob\'),
    \'not_found_in_trash\' => __(\'Keine Jobs im Papierkorb\',\'frameworkjob\'),
    \'parent_item_colon\'  => \'\',
    \'menu_name\'          => \'Jobverzeichnis\'
  );

  $jobargs = array(
    \'labels\' => $joblabels,
    \'hierarchical\' => false,
    \'description\' => \'Stellenangebote\',
    \'public\' => true,
    \'show_ui\' => true,
    \'show_in_menu\' => true,
    \'exclude_from_search\' => false,
    \'publicly_queryable\' => true,
    \'rewrite\' => array(\'slug\' => $ap_jobver_rewrite),
    \'menu_icon\' => get_template_directory_uri() . \'/jobverzeichnis/job.png\',
    \'query_var\' => true,
    \'capability_type\' => \'post\',
    \'menu_position\' => 12,
    \'taxonomies\' => array(\'jobfelder\'),
    \'supports\' => array(
      \'title\',
      \'editor\',
      \'excerpt\',
      \'thumbnail\',
      \'page-attributes\'
    )
  );

  $jobtaxlabels = array(
    \'name\'                       => __(\'Tätigkeitsfelder\', \'frameworkjob\'),
    \'singular_name\'              => __(\'Tätigkeitsfelder\', \'frameworkjob\'),
    \'search_items\'               => __(\'Tätigkeitsfelder suchen\', \'frameworkjob\'),
    \'popular_items\'              => __(\'Häufige Tätigkeitsfelder\', \'frameworkjob\'),
    \'all_items\'                  => __(\'Alle Tätigkeitsfelder\', \'frameworkjob\'),
    \'parent_item\'                => __(\'Eltern-Tätigkeitsfeld\', \'frameworkjob\'),
    \'parent_item_colon\'          => __(\'Eltern-Tätigkeitsfeld:\', \'frameworkjob\'),
    \'edit_item\'                  => __(\'Tätigkeitsfeld bearbeiten\', \'frameworkjob\'),
    \'update_item\'                => __(\'Tätigkeitsfeld aktualisieren\', \'frameworkjob\'),
    \'add_new_item\'               => __(\'Tätigkeitsfeld hinzufügen\', \'frameworkjob\'),
    \'new_item_name\'              => __(\'Neue Tätigkeitsfeld\', \'frameworkjob\'),
    \'separate_items_with_commas\' => __(\'Tätigkeitsfelder mit Kommas trennen\', \'frameworkjob\'),
    \'add_or_remove_items\'        => __(\'Tätigkeitsfeld hinzu/ entfernen\', \'frameworkjob\'),
    \'choose_from_most_used\'      => __(\'Choose from the most used Project types\', \'frameworkjob\'),
    \'menu_name\'                  => __(\'Tätigkeitsfelder\', \'frameworkjob\')
  );


  register_post_type(\'jobboerse\',$jobargs);

  register_taxonomy(\'jobfelder\', array(\'jobboerse\'),
    array(
      \'hierarchical\' => true,
      \'labels\' => $jobtaxlabels,
      \'show_ui\' => true,
      \'query_var\' => true,
      \'rewrite\' => array(
        \'slug\' => \'jobfelder\',
        \'hierarchical\' => true
      )
    )
  );
}
然后在一个有自己模板的页面中,我想输出分类法

$customPostTaxonomies = get_object_taxonomies(\'jobfelder\');
if(count($customPostTaxonomies) > 0) {
  foreach($customPostTaxonomies as $tax) {
    $args = array(\'orderby\' => \'name\', \'show_count\' => 1, \'pad_counts\' => 0, \'hierarchical\' => 1, \'taxonomy\' => $tax, \'title_li\' => \'\');
    wp_list_categories($args);
  }
}
但我没有得到任何输出。

谢谢你的帮助。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

我认为你的问题在于get_object_taxonomies( $object, $output ). 如果你看一下法典$object 参数应为

帖子类型或帖子对象的名称(帖子中的行)

正如您当前的代码所示,您使用的是分类名称,而不是post类型。如果您打印$customPostTaxonomies 具有

print_r( $customPostTaxonomies);
你得到Array(), 这就是为什么没有输出。

当你改变的时候get_object_taxonomies(\'jobfelder\');get_object_taxonomies(\'jobboerse\');, 您的代码工作并输出与自定义帖子类型“jobboerse”相关的分类名称

EDIT

感谢@cfx

在为自定义帖子类型注册自定义分类法时,与其说抱歉,不如说安全。使用register_taxonomy_for_object_type() right after the function (emphasis added) 将它们互连。

结束

相关推荐