This is an old question, but for others in the future the answer is.
You can add the following code to functions.php
.
function reorder_admin_bar() {
global $wp_admin_bar;
// The desired order of identifiers (items)
$IDs_sequence = array(
'wp-logo',
'site-name',
'new-content',
'edit'
);
// Get an array of all the toolbar items on the current
// page
$nodes = $wp_admin_bar->get_nodes();
// Perform recognized identifiers
foreach ( $IDs_sequence as $id ) {
if ( ! isset($nodes[$id]) ) continue;
// This will cause the identifier to act as the last
// menu item
$wp_admin_bar->remove_menu($id);
$wp_admin_bar->add_node($nodes[$id]);
// Remove the identifier from the list of nodes
unset($nodes[$id]);
}
// Unknown identifiers will be moved to appear after known
// identifiers
foreach ( $nodes as $id => &$obj ) {
// There is no need to organize unknown children
// identifiers (sub items)
if ( ! empty($obj->parent) ) continue;
// This will cause the identifier to act as the last
// menu item
$wp_admin_bar->remove_menu($id);
$wp_admin_bar->add_node($obj);
}
}
add_action( 'wp_before_admin_bar_render', 'reorder_admin_bar');