J'ai ajouté dans mon thème enfant functions.php
quelques méta utilisateur et ne pose aucun problème, mais je dois afficher ces données uniquement dans un profil utilisateur doté d'un rôle utilisateur spécifique appelé "rivenditore". afficher une autre table comment puis-je faire?
Ci-dessous, le code essayé
add_action( 'show_user_profile', 'stel_extra_field_meta' );
add_action( 'edit_user_profile', 'stel_extra_field_meta' );
function stel_extra_field_meta( $user ) {
?>
<h3>STEL Dati Rivenditore</h3>
<table class="form-table">
<tr>
<th><label for="location">Location</label></th>
<td><input type="text" name="location" value="<?php echo esc_attr(get_the_author_meta( 'location', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="regione">Regione</label></th>
<td><input type="text" name="regione" value="<?php echo esc_attr(get_the_author_meta( 'regione', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="tipo_rivenditore">Tipo di Rivenditore</label></th>
<td><input type="text" name="tipo_rivenditore" value="<?php echo esc_attr(get_the_author_meta( 'tipo_rivenditore', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="service_type">Servizio Scelto</label></th>
<?php $value = esc_attr(get_the_author_meta( 'service_type', $user->ID )); $service_type = preg_replace('/\|.*/', '', $value); ?>
<td><input type="text" name="service_type" value="<?php echo $service_type; ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="phone">Phone</label></th>
<td><input type="text" name="phone" value="<?php echo esc_attr(get_the_author_meta( 'phone', $user->ID )); ?>" class="regular-text" /></td>
</tr>
</table>
<?php
};
get_the_author_meta( $field, $userID );
update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );
add_action( 'personal_options_update', 'stel_save_extra_field_meta' );
add_action( 'edit_user_profile_update', 'stel_save_extra_field_meta' );
function stel_save_extra_field_meta( $user_id )
{
update_user_meta( $user_id,'location', $_POST['location'] );
update_user_meta( $user_id,'service_type', $_POST['service_type'] );
update_user_meta( $user_id,'phone', $_POST['phone'] );
update_user_meta( $user_id,'regione', $_POST['regione'] );
update_user_meta( $user_id,'tipo_rivenditore', $_POST['tipo_rivenditore'] );
}
Dans votre fichier author.php
, récupérez les métadonnées de l'utilisateur via get_user_meta () , puis faites une instruction if de $user->roles == 'rivenditore'
, affichez les métadonnées comme vous le souhaitez, puis faites une déclaration elseif $user->roles == 'installatori'
avec ce que vous souhaitez afficher pour les utilisateurs d'autres rôles.
EDIT: Exemple de code demandé:
// get author data
$queried_object = get_queried_object();
// set author ID
$author_id = $queried_object->ID;
// get author roles in array
$roles_arr = $queried_object->roles;
// get the meta data, I set it to 'location' just to show you how it works
$user_meta_location = get_user_meta($author_id, 'location', TRUE);
if ($roles_arr[0] == 'rivenditore') {
// do stuff for rivenditore users
echo $user_meta_location;
} elseif ($roles_arr[0] == 'installatori') {
// do other stuff for installatori users
echo $user_meta_location;
}
Je ne l'ai pas testé mais ça devrait marcher. Notez que je n’ai aucune idée de la clé de votre méta_data, veuillez donc l’indiquer. J'ai ajouté des commentaires donc tout devrait être lisible à coup sûr. Bonne chance!