我正在用复选框构建自己的元数据库。我想将选中的复选框的值保存为类别(ID)。
我构建了一个数组来附加复选框的值,但它只保存我选中的最后一个复选框。
我试图使用以下函数保存这些值。
wp\\u set\\u post\\u categories();wp\\u set\\u object\\u terms();
此外,当我单击“创建/编辑帖子”的“提交”按钮时,无论我使用什么函数,它都会保存复选框的最后一个值。
这是我的代码:
add_action( \'admin_menu\', \'my_enhanced_categories_remove_meta_box\');
function my_enhanced_categories_remove_meta_box(){
remove_meta_box(\'categorydiv\', \'post\', \'normal\');
}
//Add new taxonomy meta box
add_action( \'add_meta_boxes\', \'my_enhanced_categories_add_meta_box\');
function my_enhanced_categories_add_meta_box() {
add_meta_box( \'category-all\', \'Custom Portfolio Categories\',\'my_enhanced_categories_category_metabox\',\'post\' ,\'side\',\'high\');
}
$postterms = get_the_terms( $post->ID,$taxonomy );
function my_enhanced_categories_category_metabox( $post ) {
//Set up the taxonomy object and get terms
$taxonomy = \'category\';
$tax = get_taxonomy($taxonomy);//This is the taxonomy object
//The name of the form
$name = \'tax_input[\' . $taxonomy . \']\';
//Get all the terms for this taxonomy
$terms = get_terms($taxonomy,array(\'hide_empty\' => 0));
echo \'<div id="\' . $taxonomy . \'-all" class="tabs-panel">\';
echo \'<ul id="\' . $taxonomy . \'-checklist" class="list-\' . $taxonomy . \'categorychecklist form-no-clear">\';
$categories = array();
foreach($terms as $term){
$id = $taxonomy.\'-\'.$term->term_id;
echo "<li id=\'$id\'><label>";
echo "<input type=\'checkbox\' id=\'in-$id\' name=\'{$name}-$term->term_id\' value=\'$term->term_id\' />$term->name<br />";
echo "</label></li>";
$key_tax = ($_POST[\'tax_input\']);
if (!empty($key_tax)) {
array_push($categories, array_values($key_tax));
/*wp_set_post_categories( $_POST[\'post_ID\'], array_values($key_tax)[0]); */
}
}?>
</ul>
</div>
<?php
}
// var_dump($categories);
// wp_set_post_terms( $_POST[\'post_ID\'], $categories, \'category\' );
wp_set_object_terms( $_POST[\'post_ID\'], $categories, \'category\');
var_dump($categories);
最合适的回答,由SO网友:user6552940 整理而成
这很容易实现,首先重命名name
把某事归因于某人my_categories[]
然后将其作为数组传递
然后需要设置values
每个复选框的category id
. 通过这种方式,可以循环遍历数组my_categories[]
然后设置该数组中存在的类别。
Here is a simplified example :
// In your callback function for metabox,
// This should be inside a loop.
<input type="checkbox" name="my_categories[]" value="$term->term_id">
<?php
// This should be hooked to the save_post action of appropriate post type.
if(!empty($_POST[\'my_categories\'])) {
foreach($_POST[\'my_categories\'] as $cat)
{
echo $cat;
//echoes the value set in the HTML form for each checked checkbox.
//In your case the ids of selected checkboxes, now all you need to do is set those categories.
}
}
?>
现在,您在一个数组中拥有了所选类别的所有ID,这更容易处理。使用您的逻辑设置类别。