在编辑屏幕->保存问题上使用复选框进行非分层自定义分类

时间:2013-04-02 作者:LichtAnd

我注册了一个非层次自定义分类(“property\\u features”)。在编辑屏幕上的自定义元框中,此税的每个条款都有一个复选框。将显示所有术语,并正确检查贴在帖子上的所有术语。

到目前为止还不错。。。

。。。但当我选中其中一个未选中的框并点击save wordpress时,就会创建一个新术语。

EXAMPLE:

未选中复选框的代码保存后我想看到选中的复选框

<li id="property_features-11">
  <label class="selectit">
    <input value="11" name="tax_input[property_features][]" id="in-property_features-11" type="checkbox"> Term-Name
  </label>
</li>
生成的checkobx代码:

<li id="property_features-55" class="popular-category">
  <label class="selectit">
    <input value="55" name="tax_input[property_features][]" id="in-property_features-55" checked="checked" type="checkbox"> 11
  </label>
</li>
我用来创建复选框的代码:

function display_property_features_meta_box($post) {

    $tax_name = \'property_features\';
    $taxonomy = get_taxonomy($tax_name);
    $args     = array(
        \'descendants_and_self\'  => 0,
        \'selected_cats\'         => false,
        \'popular_cats\'          => false,
        \'walker\'                => null,
        \'taxonomy\'              => $tax_name,
    );

    ?>
    <div class="tagsdiv" id="tagsdiv-<?php echo $tax_name; ?>">


        <?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?>
        <div class="tagchecklist">

            <?php
            ?>
            <ul id="<?php echo $tax_name; ?>checklist" data-wp-lists="list:<?php echo $tax_name?>" class="tagschecklist form-no-clear">
                <?php wp_terms_checklist($post->ID, $args ) ?>
            </ul>

        </div>
        <?php endif; ?>


    </div>
    <?php
}
当我更改为

“层次结构”=>true

register_taxonomy args一切正常。

3 个回复
SO网友:Mark Kaplun

这似乎是一个核心错误,也出现在4.5版本。尽管文档另有说明,但实际上您不能使用“复选框”元框选择非层次分类法,唯一有效的选项是“标记”样式的元框。

SO网友:Adam Stybor

如果使用类别(hierarchical = true ) 那么你应该和term_id:

<input value="{{WP_Term->term_id}}"
如果您使用标签(hierarchical = false ) 那么你应该和name:

<input value="{{WP_Term->name}}"

SO网友:vancoder

当我在register\\u taxonomy args中更改为“hierarchy”=>true时,一切正常。

这意味着通常将此设置为false。如果Hierarchy设置为false,则您有标签,而不是术语,这可能是导致问题的原因。

结束

相关推荐

在editags.php中使用多个id过滤分类术语

我想使用编辑标签。具有多个术语id的php搜索函数。例如,如果我在搜索框中键入以下内容:#1245&;6832,它应该在结果表(WP\\U terms\\U List\\U table)中显示这两个术语。我尝试使用pre\\u get\\u posts操作访问正在运行的搜索查询,但这只是显示一个“空”查询:add_action(\'pre_get_posts\', \'filter_terms_by_ids\' ); function filter_terms_by_ids( $w