web-dev-qa-db-fra.com

Comment afficher le nom d'utilisateur, le rôle et le nom du site à l'aide de balises HTML dans une notification de tableau de bord?

Voici ce que j'ai pour l'instant dans ma notification, mais je ne trouve aucune information sur la manière de saisir le nom de l'utilisateur, le rôle et le nom du site dans ces sections. Vous pouvez voir où ils sont censés aller. Toute aide serait très appréciée car je suis perplexe depuis quelques jours maintenant ...

function my_network_notice(){
    global $pagenow;  
  if ( $pagenow == 'index.php') {
             echo '<div id="secondaryBox">
                    <div id="author">
                        <img src="/wp-content/themes/dewslyWeb/img/btn-articles-admin.png" width="40px" height="40px" />
                        <h5>[DISPLAYNAMEHERE]</h5>
                        <h6>[USERROLEHERE], [SITENAMEHERE]</h6>
                    </div>
                </div>
}
    }
    add_action('admin_notices', 'my_network_notice');
1
Jake Lisby

Vous pouvez utiliser la fonction bloginfo( 'name' ) pour afficher le nom du site. Les informations sur l'utilisateur actuellement connecté peuvent être récupérées à l'aide de la fonction get_currentuserinfo() .

Voici le code fixe:

function my_network_notice(){
    global $pagenow, $currentuser;
    get_currentuserinfo();
    if ( $pagenow == 'index.php') : ?>
        <div id="secondaryBox">
            <div id="author">
                <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/btn-articles-admin.png" width="40px" height="40px" />
                <h5><?php echo esc_html( $current_user->display_name ); ?></h5>
                <h6><?php echo esc_html( translate_user_role( $current_user->roles[0] ) ); ?>, <?php bloginfo( 'name' ); ?></h6>
            </div>
        </div>
    <?php endif;
}
add_action( 'admin_notices', 'my_network_notice' );

Cependant, pour le moment, vous ne faites que transmettre les données directement au tableau de bord. Il serait préférable de créer un widget de tableau de bord (comme les widgets de tableau de bord Right Now ou Recent Drafts):

/* display the dashboard widget output */
function wpse_77452_dashboard_widget_output() {
    global $currentuser;
    get_currentuserinfo(); ?>
    <div id="secondaryBox">
            <div id="author">
                <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/btn-articles-admin.png" width="40px" height="40px" />
                <h5><?php echo esc_html( $current_user->display_name ); ?></h5>
                <h6><?php echo esc_html( $current_user->roles[0] ); ?>, <?php bloginfo( 'name' ); ?></h6>
            </div>
        </div>
    <?php
} 


/* add the dashboard widget */
function wpse_77452_add_dashboard_widgets() {
    wp_add_dashboard_widget(
        'network_notice', // ID of widget
        'Important Information', // title of widget
        'wpse_77452_dashboard_widget_output' // function used to display widget
    );  
}

add_action( 'wp_dashboard_setup', 'add_notice_dashboard_widgets' );
0
shea

Vous devez attendre 'load-index.php' et ne pas ajouter la fonction à tous admin_notices. Le reste est simple:

add_action( 'load-index.php', 'wpse_77448_user_notice' );

function wpse_77448_user_notice()
{
    if ( 'load-index.php' === current_filter() )
        return add_action( 'admin_notices', __FUNCTION__ );

    $user = wp_get_current_user();
    printf( '<pre>
Name: %1$s
Role: %2$s
Site: %3$s</pre>',
        esc_html( $user->data->display_name ),
        // see http://wordpress.stackexchange.com/a/58921/73 for translation
        esc_html( translate_user_role( ucfirst( $user->roles[0] ) ) ),
        get_bloginfo( 'name' )
    );
}

Avertissement: un utilisateur peut avoir plusieurs rôles. $user->roles[0] est un hack sale, vous devriez vérifier la longueur de ce tableau.

1
fuxia

Vous devez d’abord obtenir les données de l’utilisateur actuel (connecté). http://codex.wordpress.org/Function_Reference/get_currentuserinfo

Le vous devez get_blogs_of_user .. Je n'en affiche qu'un pour vous maintenant. Si vous voulez tout, vous avez besoin d'une boucle foreach pour cela. Voir en codex.

function my_network_notice(){
    global $pagenow, $current_user; 
    get_currentuserinfo(); 

    $blogs = get_blogs_of_user( $current_user->ID );

    if ( $pagenow == 'index.php') {
        echo 
        '<div id="secondaryBox">
            <div id="author">
                <img src="/wp-content/themes/dewslyWeb/img/btn-articles-admin.png" width="40px" height="40px" />
                <h5>'. $current_user->display_name .'</h5>
                <h6>'. ucfirst( $current_user->roles[0] ) .', '. $blogs[1]->blogname .'</h6>
            </div>
        </div>';
    }
}
add_action('admin_notices', 'my_network_notice');
0
Pontus Abrahamsson