我需要通过复选框在用户设置中设置一些值。我在fuctions.php中为用户添加了一个自定义复选框
add_action( 'show_user_profile', 'add_extra_info' );
add_action( 'edit_user_profile', 'add_extra_info' );
function add_extra_info( $user ) { ?>
<tr>
<th>
Specialization
</th>
<?php
$Specialization = esc_attr(get_the_author_meta('Specialization',$user->ID,true ));
$Specialization = array(
array( 'id' => 'AAA', 'name' => 'Just a comment' )
);
?>
<td>
<label>
<input type="checkbox"<?php if ($Specialization[0] == '1') { ?> checked="checked"<?php } ?> name="Specialization[]" value="spec1"> Оффшоры и корпоративное право зарубежных государств
</label><br>
<label>
<input type="checkbox"<?php if ($Specialization == '2') { ?> checked="checked"<?php } ?> name="Specialization[]" value="spec2"> Фидуциарный сервис и трастовое право
</label><br>
<label>
<input type="checkbox"<?php if ($Specialization == '3') { ?> checked="checked"<?php } ?> name="Specialization[]" value="spec3"> Аудит иностранных компаний
</label><br>
<label>
<input type="checkbox"<?php if ($Specialization == '4') { ?> checked="checked"<?php } ?> name="Specialization[]" value="spec4"> Бухгалтерское сопровождение бизнеса за рубежом
</label><br>
</td>
</tr>
<?php } ?>使用update_user_meta
add_action( 'personal_options_update', 'save_extra_info' );
add_action( 'edit_user_profile_update', 'save_extra_info' );
function save_extra_info( $user_id ) {
update_user_meta( $user_id, 'Specialization', sanitize_text_field(
$_POST['Specialization[]'] ) );
}如何在数组中存储参数?还会在用户设置中更新和显示。
发布于 2019-10-05 18:14:58
在使用之前,您正在覆盖$specialization数组值。
add_action( 'show_user_profile', 'add_extra_info' );
add_action( 'edit_user_profile', 'add_extra_info' );
function add_extra_info( $user ) {
$specialization = get_the_author_meta('specialization',$user->ID,true );
?>
<table class="form-table" role="presentation">
<tbody>
<tr>
<th>Specialization</th>
<td>
<p><label>
<input type="checkbox" <?php if( !empty( $specialization ) && in_array( 'spec1', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec1"> spec1
</label></p>
<p><label>
<input type="checkbox" <?php if( !empty( $specialization ) && in_array( 'spec2', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec2"> spec2
</label></p>
<p><label>
<input type="checkbox" <?php if( !empty( $specialization ) && in_array( 'spec3', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec3"> spec3
</label></p>
<p><label>
<input type="checkbox" <?php if( !empty( $specialization ) && in_array( 'spec4', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec4"> spec4
</label></p>
</td>
</tr>
</tbody>
</table>
<?php }
add_action( 'personal_options_update', 'save_extra_info' );
add_action( 'edit_user_profile_update', 'save_extra_info' );
function save_extra_info( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
$array = array_map( 'sanitize_text_field', wp_unslash( $_POST['specialization'] ) );
update_user_meta( $user_id, 'specialization', $array );
}https://stackoverflow.com/questions/58201402
复制相似问题