当插入到前端时,更新管理中的POST META复选框

时间:2021-09-01 作者:T3mmX


这是我的问题,我允许某个用户类型在我的站点前端创建自定义帖子类型,使用 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\'); ?>>

1 个回复
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] ) ) 检查类型:)

相关推荐

如何在WordPress开发中添加带有ACF自定义字段ID的自定义metabox字段

我是wordpress开发的新手,我在我的项目中安装了高级自定义字段插件,并创建了两个文本字段名称&;我还创建了一个插件,可以在帖子中创建一个带有文本框的元框。现在在帖子中,我将获得自定义字段名称(&A);电子邮件和我的自定义元框旁边将出现,但我必须将我的元框附加到名称字段旁边,即在名称字段和电子邮件字段之间。我的metabox代码如下。请任何人帮帮我//Creating the custom meta box function my_notice_meta_box() {