Php 使用复选框在Wordpress中保存和读取多个值

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

我正在尝试创建一个复选框来保存多个值,如下面所示,我正在为wordpress用户创建一个costum字段。问题是,我只能保存最后一个复选框,如果我选中该复选框上方的任何一个复选框,它将不起作用。我希望能够在用户检查时保存尽可能多的值,一个、两个或全部。然后我想能够一个接一个地读。我不知道如何改变这一点。但是user_meta上的保存部分工作正常,因为它保存了最后一个值

    <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'
检查需要重写才能使用此设置,与保存机制相同。

如何?刚刚添加了我的保存功能。非常感谢。