创建/更新帖子时出现与自定义分类有关的奇怪问题

时间:2018-08-12 作者:Brett

我创建了一个自定义帖子类型和一个自定义分类法,但是当我添加第一个项目并选择了一个类别/收件人时,发生了一些奇怪的事情,它自动创建了一个额外的数字类别并将选择更改为该类别。

eg;

enter image description here

我输入的收件人只有“John”和“Michael”,我选择了“John”,当页面重新加载时,它添加了“13”并选择了它,每次我更新它时,它都会添加一个新的号码,并选择这个新号码作为收件人。

似乎只有当我不选择时,它才不会添加新数字any 收件人

The code:

add_action( \'after_setup_theme\', \'blm_theme_setup\' );

function blm_theme_setup() {

    //.........

    // Add our custom post type
    add_action( \'init\', \'blm_letter_post_type\' );

   //........

}

function blm_letter_post_type() {

    register_post_type( \'letter\',
                        array(
                            \'labels\'     => array(
                                \'name\'          => __( \'Letters\' ),
                                \'singular_name\' => __( \'Letter\' ),
                                //..........
                            ),
                            \'public\'     => true,
                            \'taxonomies\' => array( \'recipient\' ),
                            \'supports\' => array(\'title\', \'editor\', \'revisions\'),
                            \'has_archive\' => true,
                            \'rewrite\' => array(\'slug\' => \'letters\'),
                            //........
                        )
    );

    // Our args for the custom taxonomy below
    $args = array(
        \'labels\'      => array(
            \'name\'          => __( \'Recipients\' ),
            \'singular_name\' => __( \'Recipient\' ),
            //.....
        ),
        \'meta_box_cb\' => \'post_categories_meta_box\',
    );

    // Register a custom taxonomy for our letter categories
    register_taxonomy( \'recipient\', \'letter\', $args );

    // Connect the post type and taxonomy together to be safe
    register_taxonomy_for_object_type( \'recipient\', \'letter\' );

}
Note: 我试图只包含相关信息以减少混乱,任何未包含的参数都是标签或不相关的参数,如描述、菜单位置和菜单图标。

Edit: 我刚刚注意到,它创建的“类别”与我选择的“类别”的术语id相匹配。所以如果term id 约翰的名字是24 我选择它,然后它会用这个数字创建一个新的“类别”,并选择它。

这里发生了什么,我该如何解决?

3 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

这是wordpress core中的一个bug,当分类法的类型(分类法)与用于显示它的元盒类型不匹配时。对于层次分类法,必须使用层次显示;对于非层次分类法,必须使用“类标记”显示。如果你必须有一个混合,你将需要编写自己的元盒。这个bug已经很老了,看起来它不会很快被解决。

SO网友:Alex P

您使用的语法不正确-请尝试以下操作:

add_action( \'after_setup_theme\', \'blm_theme_setup\' );

function blm_theme_setup() {

    // Add our custom post type
    add_action( \'init\', \'blm_letter_post_type\' );

}

function blm_letter_post_type() {

register_post_type( \'letter\',
                    array(
                        \'labels\'     => array(
                            \'name\'          => __( \'Letters\' ),
                            \'singular_name\' => __( \'Letter\' ),
                            //..........
                        ),
                        \'public\'     => true,
                        \'taxonomies\' => array( \'letter\' ),
                        //........
                    )
);

// Our args for the custom taxonomy below
$args = array(
    \'labels\'      => array(
        \'name\'          => __( \'Recipients\' ),
        \'singular_name\' => __( \'Recipient\' ),
        //.....
    ),
    \'meta_box_cb\' => \'post_categories_meta_box\',
);

register_taxonomy(\'recipient\', \'letter\',  $args);

}

SO网友:Kaperto

问题来自自定义帖子类型定义中的这一行:

                        \'taxonomies\' => array( \'letter\' ),
我没有在代码中搜索bug在哪里,但它看起来像是使用与自定义post类型创建bug类型相同的slug创建分类法。

结束