这是我的问题,我允许某个用户类型在我的站点前端创建自定义帖子类型,使用 wp_insert_post()
作用用户可以在一个表单中输入值,并且有两个输入类型、复选框、范围、数字和文本字段<但是我对复选框和无线电输入有问题。当用户保存值时,它们不会出现在管理面板的帖子中,我认为问题在于update_post_meta()
条件
情况如何:
if( isset( $_POST[ \'checkbox_1\' ] ) ) {
update_post_meta( $post_id, \'checkbox_1\', \'yes\' );
}else{
update_post_meta( $post_id, \'checkbox_1\', \'\' );
}
所以我改成这样:
$stored_meta= get_post_meta($post_id);
if(isset( $_POST[ \'checkbox_1\' ] ) ) {
update_post_meta( $post_id, \'checkbox_1\', $_POST[ \'checkbox_1\' ]) ;
}else{
update_post_meta( $post_id, \'checkbox_1\', $stored_meta[\'checkbox_1\'][0]);
}
现在它们出现了,但无法在管理面板中修改它们,例如,如果用户选中了输入,即使我取消选中,更新后仍会保持选中状态。
我尝试过其他逻辑,但都失败了
下面是我的复选框输入的外观:
<input type="checkbox" name="checkbox_1" value=\'yes\' <?php if ( isset ( $stored_meta[\'checkbox_1\'][0] ) ) checked( $stored_meta[\'checkbox_1\'][0], \'yes\'); ?>>
SO网友:jgangso
欢迎来到WordPress SO。
你可能已经按照@Stevish的建议解决了这个问题,但我想指出的是,只是为了避免宣扬复选框在某种程度上是坏的或困难的想法,它们是完全合理的。:)
第一个代码段中的问题是,值中额外的右方括号“]”,这将导致语法错误,从而导致PHP致命错误。
更改此项:
update_post_meta( $post_id, \'checkbox_1\', \'yes\'] );
对此:
update_post_meta( $post_id, \'checkbox_1\', \'yes\' );
此外,处理单值元数据的一种简便方法是指定
$key
以及
$single
参数如下:
$value = get_post_meta( $post_id, \'checkbox_1\', true );
这样可以得到单个值,而不是一个值为[0]的数组。这样你就可以跳过很多
if( isset( $meta[\'whatever\'][0] ) )
检查类型:)