我正在处理一个自定义主题,其中有上载图像的选项。我有一些复选框,用户可以根据图像的位置选择。我的表单代码如下:
<input type="checkbox" class="input" name="vtype[]" value="3"/>
<input type="checkbox" class="input" name="vtype[]" value="4" />
<input type="checkbox" class="input" name="vtype[]" value="5" />
<input type="checkbox" class="input" name="vtype[]" value="6" />
使用这些值的函数是:
$image_category = implode(\',\', $_POST[\'vtype\']);
如果我重复此结果,则结果很好,例如3、4、5。但如果我尝试使用此值在数据库中插入值,则该值仅在第1个类别中更新,其余类别不会发生任何变化。
主要功能是在数据库中插入值is:
$post = array(
\'ID\' => \'\',
\'post_author\' => $image_author,
\'post_category\' => array($image_category),
\'post_content\' => $image_to_attach,
\'post_title\' => $image_title,
\'post_status\' => \'publish\'
);
}
// Insert the values in DB
$id = wp_insert_post($post);
最合适的回答,由SO网友:Geert 整理而成
当前正在传递此值:
\'post_category\' => array(\'3,4,5\') // This is a single string
当您应该这样做时:
\'post_category\' => array(3,4,5) // Three separate values
不要忘记清理POST值:
// Initialize categories
$post_category = array();
// Prevent "undefined variable" error notices
if (isset($_POST[\'vtype\']))
{
// Loop over selected categories
foreach ((array) $_POST[\'vtype\'] as $vtype)
{
// Validate vtype (only numbers allowed)
if (ctype_digit((string) $vtype))
{
// Add category
$post_category[] = (int) $vtype;
}
}
}
// Save the post with $post_category in database as you did before...
如果你愿意的话,你也可以把整个方块缩短成一行。只是为了好玩:
$post_category = (isset($_POST[\'vtype\'])) ? array_filter((array) $_POST[\'vtype\'], \'ctype_digit\') : array();