我正在使用插件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);
最合适的回答,由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}";
}