来自另一个分类的自定义分类父级

时间:2012-05-09 作者:Elliott

我已经四处寻找了一下,但什么都没有找到(也许我搜索得不够好?)但我试图在从另一个分类法加载的分类法上设置父分类法。

例如,我有汽车品牌和汽车模型,当添加一个新模型时,我想选择它的父级(汽车品牌),而不是它本身的另一个父级。

make不能有任何父级,但可以有无限的子级,模型不能有任何子级,并且父级必须有make。

这可能吗?最好没有插件。

/* Makes */
$labels = array(
\'name\' => _x( \'Makes\', \'taxonomy general name\' ),
    \'singular_name\' => _x( \'Make\', \'taxonomy singular name\' ),
    \'search_items\' =>  __( \'Search Makes\' ),
    \'all_items\' => __( \'All Makes\' ),
    \'parent_item\' => __( \'Parent Make\' ),
    \'parent_item_colon\' => __( \'Parent Make:\' ),
    \'edit_item\' => __( \'Edit Make\' ),
    \'update_item\' => __( \'Update Make\' ),
    \'add_new_item\' => __( \'Add New Make\' ),
    \'new_item_name\' => __( \'New Make\' ),
);  
register_taxonomy(\'makes\', \'car\', array(\'hierarchical\' => false, \'labels\' => $labels, \'query_var\' => false, \'rewrite\' => false, \'with_front\' => false));

/* Models */
$labels = array(
\'name\' => _x( \'Models\', \'taxonomy general name\' ),
    \'singular_name\' => _x( \'Model\', \'taxonomy singular name\' ),
    \'search_items\' =>  __( \'Search Models\' ),
    \'all_items\' => __( \'All Models\' ),
    \'parent_item\' => __( \'Parent Model\' ),
    \'parent_item_colon\' => __( \'Parent Model:\' ),
    \'edit_item\' => __( \'Edit Model\' ),
    \'update_item\' => __( \'Update Model\' ),
    \'add_new_item\' => __( \'Add New Model\' ),
    \'new_item_name\' => __( \'New Model\' )
);
register_taxonomy(\'models\', \'car\', array(\'hierarchical\' => true, \'labels\' => $labels, \'query_var\' => false, \'rewrite\' => false, \'with_front\' => false));
这个问题有点关联:Show WordPress Custom Taxonomy Items Based On a Selected Item From Another Custom Taxonomy 然而,我假设父/子元素来自一个分类法?在我的例子中,它们需要是两个独立的分类法。

4 个回复
SO网友:Gonzo

我正在搜索同一个问题的答案,并在SE上找到了一个问题,其中包含以下答案:https://stackoverflow.com/a/40868654

在2013年发布的WordPress 3.7中,添加了一个允许操纵参数的过滤器,用于获取父下拉列表中的术语列表。2014年底,该过滤器还应用于编辑术语表。

所以,挂到taxonomy_parent_dropdown_args 过滤器允许更改提供父项的分类。诸如此类:

<?php
add_filter( \'taxonomy_parent_dropdown_args\', \'alter_parent_taxonomy\', 10, 2 );

function alter_parent_taxonomy( $args, $taxonomy ) {

    if ( \'models\' != $taxonomy ) return $args; // no change

    $args[\'taxonomy\'] = \'makes\';
    $args[\'depth\'] = 1;

    return $args;
}
?>
我还没有尝试过这个,因为我还在为这个项目做我的初步研究。

SO网友:SEOPeter

我不确定,但是看看register_taxonomy_for_object_type - 它甚至连接了分类法。

如果没有帮助,您唯一的解决方案就是将自定义分类法和custom post type

SO网友:Michael Ecklund

我知道你说没有插件,但我能建议你使用一个高度可配置的插件来处理自定义字段/组、自定义帖子类型和自定义分类吗?

非常好,简单,易于使用的插件。没有硬核广告。不会让你的wordpress网站陷入困境。该插件也在积极开发和更新。

下载Types - 自定义字段和自定义帖子类型管理

我几乎在每次wordpress安装中都使用这个插件。你所做的应该很棒。

SO网友:Steve Buzonas

这是我经常做的事。WordPress目前不是为它而设计的。

不幸的是,我不知道在没有插件的情况下有什么方法可以做到这一点(无论如何,正确地完成,使用选项是一个丑陋的选择)。我在一个插件中有一个标准的分类法类,它为我完成了繁重的工作。它将自定义tax元表添加到数据库中,并提供一个抽象的自定义分类类。

taxonomy类处理元数据注册表并自动创建元框。它还有一些内置的元参数,例如父项。我只对简单的分类法(父项是相同的税)和内置项使用Hierarchy属性。

更新:

首先,我想我的帖子类型有不同的帖子对象父对象,但方法相似。

回顾我过去在分类法方面的一些工作,在使用分类法类创建框架插件之前,我所做的是在使用${taxonomyname}_edit_form_fields 钩您需要向edited_${taxonomyname} 钩子也可以将您的父数据保存到某个地方。您可以将两者的Hierarchy标记为false,并将父id存储在wordpress通常存储它的位置。

结束

相关推荐