Php 使用复选框在Wordpress中保存和读取多个值
我正在尝试创建一个复选框来保存多个值,如下面所示,我正在为wordpress用户创建一个costum字段。问题是,我只能保存最后一个复选框,如果我选中该复选框上方的任何一个复选框,它将不起作用。我希望能够在用户检查时保存尽可能多的值,一个、两个或全部。然后我想能够一个接一个地读。我不知道如何改变这一点。但是user_meta上的保存部分工作正常,因为它保存了最后一个值Php 使用复选框在Wordpress中保存和读取多个值,php,arrays,wordpress,checkbox,custom-fields,Php,Arrays,Wordpress,Checkbox,Custom Fields,我正在尝试创建一个复选框来保存多个值,如下面所示,我正在为wordpress用户创建一个costum字段。问题是,我只能保存最后一个复选框,如果我选中该复选框上方的任何一个复选框,它将不起作用。我希望能够在用户检查时保存尽可能多的值,一个、两个或全部。然后我想能够一个接一个地读。我不知道如何改变这一点。但是user_meta上的保存部分工作正常,因为它保存了最后一个值 <p> <p class="woocommerce-form-row woocommerce-form
<p> <p class="woocommerce-form-row woocommerce-form-row--first form-row form-row-first">
<label for="area_profissao"><?php _e( 'Área de Intervenção Profissional'); ?></label><br/>
<input type="checkbox" class="checkbox" name="area_profissao" id="area_profissao1" value="CAPDA" <?php if (get_the_author_meta( 'area_profissao', $user->ID) == 'CAPDA' ) { ?>checked="checked"<?php }?> />Crianças e adolescentes com perturbações do desenvolvimento e aprendizagem <br />
<input type="checkbox" class="checkbox" name="area_profissao" id="area_profissao2" value="CMPIP" <?php if (get_the_author_meta( 'area_profissao', $user->ID) == 'CMPIP' ) { ?>checked="checked"<?php }?> />Crianças em meio pré-escolar e/ou Intervenção Precoce<br />
<input type="checkbox" class="checkbox" name="area_profissao" id="area_profissao3" value="CACP" <?php if (get_the_author_meta( 'area_profissao', $user->ID) == 'CACP' ) { ?>checked="checked"<?php }?> />Crianças e adolescentes em contexto pedopsiquiátrico<br />
<input type="checkbox" class="checkbox" name="area_profissao" id="area_profissao4" value="MA" <?php if (get_the_author_meta( 'area_profissao', $user->ID) == 'MA' ) { ?>checked="checked"<?php }?> />Meio Aquático<br />
<input type="checkbox" class="checkbox" name="area_profissao" id="area_profissao5" value="SMAI" <?php if (get_the_author_meta( 'area_profissao', $user->ID) == 'SMAI' ) { ?>checked="checked"<?php }?> />Saúde mental do adulto e do idoso<br />
</p>
function yoursite_save_extra_user_profile_fields( $user_id ) {
$saved = false;
if ( is_admin() && current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'nsocio', $_POST['nsocio'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'nif', $_POST['nif'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'telemovel', $_POST['telemovel'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'hb_litera', $_POST['hb_litera'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'ano_il', $_POST['ano_il'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'ano_fl', $_POST['ano_fl'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'nome_uni', $_POST['nome_uni'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'profissao', $_POST['profissao'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'area_profissao', $_POST['area_profissao'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'distrito_profissao', $_POST['distrito_profissao'] );
$saved = true;
}
if ( current_user_can( 'edit_user', $user_id ) ) {
update_usermeta( $user_id, 'list_prof', $_POST['list_prof'] );
$saved = true;
}
return true;
}
checked=“checked”/>Crianças e adolescente com perferações do desenvolvimento e aprendizagem
checked=“checked”/>Crianças em meio pré-escolar e/ou interventionço precce
checked=“checked”/>Crianças e adolescente em contexto pedopsiquiátrico
checked=“checked”/>Meio aqático
checked=“checked”/>Saúde mental do adulto e do idoso
函数yoursite\u save\u extra\u user\u profile\u字段($user\u id){
$saved=false;
if(is_admin()&¤t_user_can('edit_user',$user_id)){
更新_usermeta($user_id,'nsocio',$_POST['nsocio']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'nif',$_POST['nif']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'telemovel',$_POST['telemovel']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'hb_litera',$_POST['hb_litera');
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'ano_il',$_POST['ano_il']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'ano_fl',$_POST['ano_fl']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'nome_uni',$_POST['nome_uni']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'profissao',$_POST['profissao']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'area_profissao',$_POST['area_profissao']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'distrito_profissao',$_POST['distrito_profissao']);
$saved=true;
}
if(当前用户\u can('edit\u user',$user\u id)){
更新_usermeta($user_id,'list_prof',$_POST['list_prof']);
$saved=true;
}
返回true;
}
您只需在复选框名称的末尾添加[]
,使其在PHP端表现为数组,如下所示:
<input type="checkbox" class="checkbox" name="area_profissao[]" ... >
但是请注意,这会将元字段的内容转换为数组,因此您的
获取\u author\u meta('area\u profissao',$user->ID)='CAPDA'
检查需要重写才能使用此设置,与保存机制相同。如何?刚刚添加了我的保存功能。非常感谢。