来自前端的类别,复选框选择不起作用

时间:2012-10-06 作者:She Hulk

我正在使用插件Post from site, 它设置了一个WP前端写入程序。我更改了一些代码行,因为我需要用复选框来选择类别,而不是多选(因为它最初是在插件中)。不幸的是,它不起作用:现在,前端writer中有一个复选框,但复选框什么都不做:文章保存时没有类别。

下面是处理分类选择的代码:

public function get_taxonomy_list( $taxonomy ){
    $terms = get_terms($taxonomy, array(
        \'hide_empty\' => 0
    ));
    if (!$terms || empty($terms)) return \'\';
    //preg_match_all(\'/\\s*<input class="(\\S*)" value="(\\S*)" type="checkbox">(.*)<\\/input>\\s*/\', $terms, $matches, PREG_SET_ORDER);
    $out = apply_filters( \'pfs_taxonomy_label\', "<label for=\'terms_$taxonomy\'>Seleziona i corsi</label>", $taxonomy );
    foreach ($terms as $term){
        if (is_taxonomy_hierarchical($taxonomy))
            $out .= "<input class=\'{$term->term_taxonomy_id}\' type=\'checkbox\' value=\'{$term->term_taxonomy_id}\' name=\'{$term->term_taxonomy_id}\' /> {$term->name}<br />";
        else
            $out .= "<input class=\'{$term->term_taxonomy_id}\' type=\'checkbox\' value=\'{$term->name}\' name=\'{$term->name}\' /> {$term->name}";
    }
    $out .= "<br />\\n";
    return apply_filters("pfs_{$taxonomy}_list",$out);
}
下面是保存帖子和分类法的代码(我没有更改):

$postarr[\'tax_input\'] = (array_key_exists(\'terms\',$pfs_data)) ? $pfs_data[\'terms\'] : array();
$post_id = wp_insert_post($postarr);

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

您更改了复选框的名称属性值。您应该使用相同的名称值:术语[$分类][]

这将修复代码:

if (is_taxonomy_hierarchical($taxonomy))
        //$out .= "<input class=\'{$term->term_taxonomy_id}\' type=\'checkbox\' value=\'{$term->term_taxonomy_id}\' name=\'{$term->term_taxonomy_id}\' /> {$term->name}<br />";
        $out .= "<input class=\'{$term->term_taxonomy_id}\' type=\'checkbox\' value=\'{$term->term_taxonomy_id}\' name=\'terms[{$taxonomy}][]\' /> {$term->name}<br />";
    else
        // $out .= "<input class=\'{$term->term_taxonomy_id}\' type=\'checkbox\' value=\'{$term->name}\' name=\'{$term->name}\' /> {$term->name}";
        $out .= "<input class=\'{$term->term_taxonomy_id}\' type=\'checkbox\' value=\'{$term->name}\' name=\'terms[{$taxonomy}][]\' /> {$term->name}";
}

SO网友:Dale Sattler

我通常使用http://codex.wordpress.org/Function_Reference/wp_set_post_terms

在后期创建时设置分类时。

$post_id = wp_insert_post();
if($post_id){
   wp_set_post_terms($post_id, $postarr[\'tax_input\'], \'category\' );
}

结束