web-dev-qa-db-fra.com

Afficher les méta utilisateur par rôle d'utilisateur différent

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']  );
}
1
gnappo

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!

1
Christine Cooper