编辑WP_Admin_Bar中的特定节点

时间:2013-04-23 作者:Julian F. Weinert

是吗easily possible 编辑中的链接WP_Admin_Bar 全球的$wp_admin_bar 例子

2 个回复
最合适的回答,由SO网友:Julian F. Weinert 整理而成

Yes 我最近遇到了一个情况,我想更改管理栏用户信息部分的配置文件链接。问题是,您只能获取所有节点,添加和删除它们。不编辑。并且您也不能修改$wp_admin_bar->nodes 到期财产为私有财产。

如果轻松地删除和添加它们,您将失去订单,整个事情看起来很糟糕。下面是我的解决方案:

// void jw_edit_admin_bar ( mixed $id , string $property , string $value )

if(!function_exists(\'jw_edit_admin_bar\')) {
    function jw_edit_admin_bar($id, $property, $value) {
        global $wp_admin_bar;

        if(!is_array($id)) {
            $id = array($id);
        }

        $all_nodes = $wp_admin_bar->get_nodes();

        foreach($all_nodes as $key => $val) {
            $current_node = $all_nodes[$key];
            $wp_admin_bar->remove_node($key);

            if(in_array($key, $id)) {
                $current_node->$property = $value;
            }

            $wp_admin_bar->add_node($current_node);
        }
    }
}

add_action(\'admin_bar_menu\', function() { jw_edit_admin_bar(array(\'user-info\', \'my-account\'), \'href\', \'http://www.nyan.cat\'); });

SO网友:Obewan

好的,所以我最近遇到了一个问题,试图为Wordpress管理工具栏创建一个自定义的假日/时间问候语,并遇到了这个答案,这让我走上了一条浪费时间的道路,因为它实际上完全没有必要。编辑节点时,无需销毁和重建管理工具栏。

Julien问题的简单解决方案是在函数中添加5行代码。替换所需url的php文件:

    //-----------------------------------------------------------------------------
/* change location of user profile page in admin toolbar */
add_filter( \'edit_profile_url\', \'update_admin_bar_user_profile_url\', 10, 3 );
function update_admin_bar_user_profile_url( $url, $user_id, $scheme ) {
    $url = site_url( \'/edit-user-profile/\' );
    return $url;
}
//-----------------------------------------------------------------------------
现在,如果您想更深入地编辑/操作管理工具栏,您可以这样做,如果用户在其配置文件页面中输入了网站url,则可以将其作为节点添加到用户配置文件面板(“子菜单”中的链接):

    /* --- add the user website link node in the admin toolbar --- */
add_action( \'admin_bar_menu\', \'update_admin_bar_user_node\', 250 );
function update_admin_bar_user_node( $wp_admin_bar ) {
    $user_id = get_current_user_id();
    $current_user = wp_get_current_user();
    $profile_url = get_edit_profile_url( $user_id );

    if ( ! $user_id )
            return;

    if ( current_user_can( \'read\' ) ) {
        $profile_url = get_edit_profile_url( $user_id );
    } elseif ( is_multisite() ) {
        $profile_url = get_dashboard_url( $user_id, \'profile.php\' );
    } else {
        $profile_url = false;
    }

    // Add the users website/link to the user-actions sub-menu if they have one 
    $my_account = $wp_admin_bar->get_node( \'my-account\' );
    if( ! empty( $current_user->user_url ) && $my_account ){
        $wp_admin_bar->add_node( array(
            \'parent\'    => \'user-actions\',
            \'id\'        => \'user-url\',
            \'title\'     => \'<span class="user-url">\' . __( \'My Website\' ) . \'</span>\',
            \'href\'      => esc_url( $current_user->user_url )
        ) );
    }       
}
以下是该更改在“我的帐户”“用户操作”菜单中的外观截图:enter image description here

结束

相关推荐

仅在wp-admin中显示死亡白屏

我可以登录该网站,但登录后,我在wp admin中看到一个白色屏幕。我仍然可以访问该网站,它显示我已使用每个页面顶部的工具栏登录,但每当我进入wp admin时,都会遇到一个白色屏幕。我尝试过重命名themes和plugins文件夹,甚至删除了这两个文件夹。我尝试将php内存限制提高到128M,但仍然没有成功。有什么建议吗?如果我必须重新安装Wordpress,我如何才能不丢失已经存在的一切?编辑:我也打开了调试,但仍然没有收到任何错误、警告或通知。