2017-09-28 21 views
-1

私は以下のような複数の値を保存するチェックボックスを作成しようとしていますが、WordPressユーザーのcostumフィールドで作業しています。問題は、最後のチェックボックスをオンにすると、そのボックスの上にあるチェックボックスをオンにしても、そのボックスは機能しません。私は、ユーザーのチェックと同じくらい多くの値を1つ、2つ、またはすべて保存できるようにしたいと考えています。それから私はそれらを一つ一つ読むことができるようにしたい。私はこれをどのように変更するのか分かりません。しかし、最後の値を保存するので、user_metaの保存部分は正しく動作しています。チェックボックスを使用してWordpressで複数の値を保存して読み込む

<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; 

} 

答えて

0
あなたは、単に彼らがそうのように、PHP側の配列として動作させるために、チェックボックス名の末尾に []を追加する必要があり

<input type="checkbox" class="checkbox" name="area_profissao[]" ... > 

はこれが有効になることが注意してあなたのメタフィールドの内容を配列に入れて保存する場合と同じように、get_the_author_meta('area_profissao', $user->ID) == 'CAPDA'のチェックをこの設定で動作するように書き直す必要があります。

+0

どのようにですか?ちょうど私の保存機能を追加しました。ありがとうございました –

関連する問題