有可能获得与分类相关联的帖子类型列表吗?

时间:2011-02-10 作者:Valentin Vucea

我使用更多插件(更多类型、更多字段和更多分类法)来创建自定义分类法、帖子类型和字段。

我创建了一个包含分类法的select控件(循环$wp_taxonomies).

我需要的是显示一个与当前所选分类法关联的帖子类型列表(我将使用jQuery来实现),但我不知道如何获得这样一个帖子类型列表。谢谢

2 个回复
SO网友:kaiser

您可以使用$wp_taxonomies 已经我只是把它写了下来,所以您可能需要尝试一下,以启动并运行以下代码行,但它应该让您了解它应该如何工作(将其视为参考/伪代码):

编辑:在来自的注释之后Mike Schinkel 我更新了代码,以便更容易忽略内置分类法(请参阅:\\u builtin)。我希望Mike在这里发布他发给我的示例,这样他的(更简单的)解决方案可以标记为最终方法。。。

// equals the following $keys
$wp_taxonomies[\'category\'] == $wp_taxonomies[0];
$wp_taxonomies[\'post_tag\'] == $wp_taxonomies[1];
$wp_taxonomies[\'nav_menu\'] == $wp_taxonomies[2];
$wp_taxonomies[\'link_category\'] == $wp_taxonomies[3];

// after $key #3 you retrieve all different registered taxonomies
$all_tax = count($wp_taxonomies)-4; // gives you the amount of reg. tax.

// Here starts the actual code
$post_types = array(); // some empty array to save your post types for further procesing
$i = 0;
foreach ( $wp_taxonomies as $tax ) {
if ( !$tax->_builtin)
  $post_type_arr = $tax[$i]->object_type; // array of post types in the current taxonomy
  foreach ( $post_type_arr as $arr ) : // loop through all post types assigned to the taxonomy
    $post_types[] .= $arr; // assign them to our array of post types
  endforeach;
  $i++;
}
$post_types = array_unique($post_types); // drop doublettes out of the array
var_dump($post_types);

# expected result close to this...

# Array(
#   1 => $post_type_a,
#   2 => $post_type_b,
#   3 => $post_type_n
# );

SO网友:kaiser

这就是真正的解决方案:

function get_object_types_unique( $all_r_custom = false ) {
    $tax_object = get_taxonomies( array( \'_builtin\' => $all_r_custom ), \'objects\' );
    if ( $all_r_custom == true )
        $tax_object = array_merge( $tax_object, get_taxonomies( array( \'_builtin\' => false ), \'objects\' ) );

    $object_types = array();
    foreach ( $tax_object as $tax ) {
        $object_types = array_merge( $object_types, $tax->object_type );
    }

    $object_types = array_unique( $object_types );
    return $object_types;
}
它允许使用get_object_types_unique() 或全部,包括内置对象类型get_object_types_unique( true ). 到目前为止,这个函数没有机会只检索内置的对象类型,因为到目前为止,我看不出有什么需要。

结束

相关推荐

Saving Taxonomy Terms

我有一个有趣的问题,希望有人能尽快回答。我已经创建了自己的metabox,它基于“我的metabox代码”(下面的列表)正确地显示了我创建的“event\\u types”分类中所有术语的下拉列表。我遇到的问题是,当从下拉列表中选择不同的术语并更新帖子时,能够保存/更新与帖子相关的术语。在对各种代码位进行修补之后,我发现通过手动将term\\u ID number[用逗号分隔]输入数组区域,我得到了我想要的结果。例如,如果在保存帖子时,函数将调用此代码wp_set_post_terms( $post_id