如何在仪表板通知中使用HTML标记显示用户名、角色和站点名称?

时间:2012-12-27 作者:Jake Lisby

以下是我收到的通知,但我找不到关于如何在这些部分中输入用户名、角色和网站名称的任何信息。你可以看到他们应该去哪里。任何帮助都将不胜感激,因为我已经被难住了几天了。。。

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\');

3 个回复
最合适的回答,由SO网友:shea 整理而成

您可以使用bloginfo( \'name\' ) 函数显示站点名称。有关当前登录用户的信息可以使用get_currentuserinfo() 作用

以下是固定代码:

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\' );
然而,目前您只是将数据直接输出到仪表板。最好创建一个dashboard widget (如“现在”或“最近的草稿”面板小部件):

/* 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\' );

SO网友:fuxia

你应该等待\'load-index.php\' 而不是将函数添加到所有admin_notices. 剩下的很简单:

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\' )
    );
}
注意:一个用户可以有多个角色。$user->roles[0] 是一个肮脏的黑客,你应该检查这个数组的长度。

SO网友:Pontus Abrahamsson

首先,您需要获取当前用户数据(已登录)。http://codex.wordpress.org/Function_Reference/get_currentuserinfo

您需要的get_blogs_of_user.. 我现在只为您显示一个。如果你想要所有你需要的foreach循环。参见法典。

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\');

结束

相关推荐

Changing a username

我的博客上有一小部分用户希望更改他们的用户名。我正在读取数据库中存储的数据,但它在哪里,我如何更改它。