将自定义分类显示为下拉列表

时间:2018-09-05 作者:Mais_Cule

我想将自定义分类法列表显示为下拉列表。

“我在这里找到了解决办法,”亚历克苏夫回答道

Display a custom taxonomy as a dropdown on the edit posts page

但问题是,当我使用选定的分类法发布帖子时,它会自动创建另一个分类法。

我不能对他的回答发表评论,因为我没有50%的声誉。

这是我的密码

function realty_type() {
    $args = array(
        \'show_ui\'                    => true,
        \'meta_box_cb\'                => \'drop_cat\',
    );
    register_taxonomy( \'realty_type\', array( \'my-CPT\' ), $args );

    }

    // Hook into the \'init\' action
    add_action( \'init\', \'realty_type\', 0 );


    function drop_cat( $post, $box ) {
    $defaults = array(\'taxonomy\' => \'category\');
    if ( !isset($box[\'args\']) || !is_array($box[\'args\']) )
        $args = array();
    else
        $args = $box[\'args\'];
    extract( wp_parse_args($args, $defaults), EXTR_SKIP );
    $tax = get_taxonomy($taxonomy);
    ?>
    <div id="taxonomy-<?php echo $taxonomy; ?>" class="acf-taxonomy-field categorydiv">

            <?php 
            $name = ( $taxonomy == \'category\' ) ? \'post_category\' : \'tax_input[\' . $taxonomy . \']\';
            echo "<input type=\'hidden\' name=\'{$name}[]\' value=\'0\' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
            ?>
            <? $term_obj = wp_get_object_terms($post->ID, $taxonomy ); //_log($term_obj[0]->term_id)?>
            <ul id="<?php echo $taxonomy; ?>checklist" data-wp-lists="list:<?php echo $taxonomy?>" class="categorychecklist form-no-clear">
                <?php //wp_terms_checklist($post->ID, array( \'taxonomy\' => $taxonomy) ) ?>
            </ul>

            <?php wp_dropdown_categories( array( \'taxonomy\' => $taxonomy, \'hide_empty\' => 0, \'name\' => "{$name}[]", \'selected\' => $term_obj[0]->term_id, \'orderby\' => \'name\', \'hierarchical\' => 0, \'show_option_none\' => \'&mdash;\' ) ); ?>

    </div>
    <?php
    }

2 个回复
最合适的回答,由SO网友:Mais_Cule 整理而成

经过反复尝试,我终于找到了解决方案。

在注册分类参数中,我只需设置\'hierarchical\' => true 使其停止递增分类法并继续自动添加分类法。

我不知道为什么在查看文件后会出现问题,如果有人知道原因,请解释。

function realty_type() {

    $args = array(
        \'show_ui\'                    => true,
        \'meta_box_cb\'                => \'drop_cat\',
        \'hierarchical\' => true
    );

    register_taxonomy( \'realty_type\', array( \'YOUR_POST_TYPE\' ), $args );    
    }

    // Hook into the \'init\' action
    add_action( \'init\', \'realty_type\', 0 );

SO网友:dhirenpatel22

下面是我用来将自定义分类法显示为下拉列表而不是复选框的最简单解决方案。

1/使用第三方WordPress插件“ACF”创建分类“关系”字段类型,并将其显示为下拉列表,如下面的屏幕截图所示。

https://wordpress.org/plugins/advanced-custom-fields/

enter image description here

enter image description here

要显示选定的分类法,可以参考ACF文档中的关系分类法字段类型。

https://www.advancedcustomfields.com/resources/taxonomy/

2/注册自定义分类法时,只需将“meta\\u box\\u cb”添加为“false”,即可隐藏分类法复选框。

希望这有帮助。。!!

结束