J'ai trouvé le code suivant qui place des champs personnalisés dans le profil d'un utilisateur:
<?php
function extra_user_profile_fields( $user ) {
?>
<h3><?php _e("Roof Asset Information", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="facility"><?php _e("Facility"); ?></label></th>
<td>
<input type="text" name="facility" id="facility" value="<?php echo esc_attr(
get_the_author_meta( 'facility', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Please enter the facility name."); ?></span>
</td>
</tr>
<tr>
<th><label for="roofsection"><?php _e("Roof Section"); ?></label></th>
<td>
<input type="text" name="roofsection" id="roofsection" value="<?php echo esc_attr(
get_the_author_meta( 'roofsection', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Please enter the roof section."); ?></span>
</td>
</tr>
<tr>
<th><label for="footage"><?php _e("Sq. Feet"); ?></label></th>
<td>
<input type="text" name="footage" id="footage" value="<?php echo esc_attr(
get_the_author_meta( 'footage', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Please enter the square footage."); ?></span>
</td>
</tr>
</table>
<?php }
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
function save_extra_user_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
update_user_meta( $user_id, 'facility', $_POST['facility'] );
update_user_meta( $user_id, 'roofsection', $_POST['roofsection'] );
update_user_meta( $user_id, 'footage', $_POST['footage'] );
}
Existe-t-il un moyen d’ajouter des fonctionnalités supplémentaires à ce code afin que seuls les administrateurs puissent modifier les champs personnalisés?
<input type="text" name="facility" id="facility" value="<?php echo esc_attr(
get_the_author_meta( 'facility', $user->ID ) ); ?>"
<?php if (!is_admin()) { echo 'disabled="disabled"'; }
class="regular-text" /><br />
<span class="description"><?php _e("Please enter the facility name."); ?></span>
Ajoutez cette troisième ligne à toutes vos entrées que vous ne souhaitez pas que les non-administrateurs modifient.