J'ai ce code qui ajoute la case à cocher à la page "Modifier l'utilisateur", mais lorsque je la vérifie et que j'actualise la page, la case devient décochée ... qu'est-ce qui ne va pas?
add_action( 'show_user_profile', 'module_user_profile_fields' );
add_action( 'edit_user_profile', 'module_user_profile_fields' );
function module_user_profile_fields( $user )
{ ?>
<h3>Module Options</h3>
<table class="form-table">
<tr>
<th><label for="module_activation">Module Activation</label></th>
<td>
<input id="module_activation" name="module_activation" type="checkbox" value="<?php echo esc_attr( get_the_author_meta( 'module_activation', $user->ID )); ?>" <?php if ( get_the_author_meta( 'module_activation', $user->ID ) == 1 ) echo ' checked="checked"'; ?> />
<span class="description"><?php _e("Please enter your address."); ?></span>
</td>
</tr>
</table>
<?php }
add_action( 'personal_options_update', 'save_module_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_module_user_profile_fields' );
function save_module_user_profile_fields( $user_id )
{
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
update_usermeta( $user_id, 'module_activation', $_POST['module_activation'] );
}
MODIFIER
Voici ce que je dois travailler.
add_action( 'show_user_profile', 'module_user_profile_fields' );
add_action( 'edit_user_profile', 'module_user_profile_fields' );
function module_user_profile_fields( $user )
{ ?>
<h3>Module Options</h3>
<table class="form-table">
<tr>
<th><label for="module_activation">Module Activation</label></th>
<td>
<input id="module_activation" name="module_activation" type="checkbox" value="1" <?php if ( get_the_author_meta( 'module_activation', $user->ID ) == 1 ) echo ' checked="checked"'; ?> />
<span class="description"><?php _e("Please enter your address."); ?></span>
</td>
</tr>
</table>
<?php }
add_action( 'personal_options_update', 'save_module_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_module_user_profile_fields' );
function save_module_user_profile_fields( $user_id )
{
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
update_usermeta( $user_id, 'module_activation', $_POST['module_activation'] );
}
votre fonction ne définit jamais de valeur pour ce champ. Ainsi, lorsque vous vérifiez si sa valeur est égale à 1, vous n'obtenez jamais la valeur true.
essaye ça:
add_action( 'show_user_profile', 'module_user_profile_fields' );
add_action( 'edit_user_profile', 'module_user_profile_fields' );
function module_user_profile_fields( $user )
{ ?>
<h3>Module Options</h3>
<table class="form-table">
<tr>
<th><label for="module_activation">Module Activation</label></th>
<td>
<input id="module_activation" name="module_activation" type="checkbox" value="1" <?php if ( get_the_author_meta( 'module_activation', $user->ID ) == 1 ) echo ' checked="checked"'; ?> />
<span class="description"><?php _e("Please enter your address."); ?></span>
</td>
</tr>
</table>
<?php }
add_action( 'personal_options_update', 'save_module_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_module_user_profile_fields' );
function save_module_user_profile_fields( $user_id )
{
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }else{
if(isset($_POST['module_activation']) && $_POST['module_activation'] > 0){
update_usermeta( $user_id, 'module_activation', $_POST['module_activation'] );
}else{
delete_usermeta($user_id, 'module_activation');
}
}
}