web-dev-qa-db-fra.com

Faire en sorte que 'Howdy, [name]' fonctionne comme un bouton de déconnexion

J'ai personnalisé le admin bar dans la version 3.3 pour n'avoir que certains liens personnalisés avec les éléments suivants ajoutés à functions.php:

function mytheme_admin_bar_render() {
global $wp_admin_bar;

$wp_admin_bar->remove_menu('site-name');
$wp_admin_bar->remove_menu('new-content');
$wp_admin_bar->remove_menu('updates');
$wp_admin_bar->remove_menu('comments');
$wp_admin_bar->remove_menu('edit-profile');


$wp_admin_bar->add_menu( array(
    'id' => 'reports',  'title' => __( 'Reports'),  'href' => __('xyz.html'),
));
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );

Je voudrais maintenant avoir le lien à l'extrême droite qui dit Howdy, ..., fonctionne comme un bouton de déconnexion.

Quelqu'un a-t-il des suggestions sur la manière d'atteindre cet objectif?

5
Larry B

Voici une solution simple que j'ai trouvée en procédant au reverse engineering de ce plugin: http://wordpress.org/extend/plugins/dashboard-tweaks/

function custom_logout_link() {
    global $wp_admin_bar;
    $wp_admin_bar->add_menu( array(
        'id'    => 'wp-custom-logout',
        'title' => 'Logout',
        'parent'=> 'top-secondary',
        'href'  => wp_logout_url()
    ) );
    $wp_admin_bar->remove_menu('my-account');
}
add_action( 'wp_before_admin_bar_render', 'custom_logout_link' );
4
Kyle Werner

Cela devrait frapper la tache:

function remove_old_logout() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_node('my-account');
}
add_action( 'wp_before_admin_bar_render', 'remove_old_logout' );

function newlogout() {
?>

<style type="text/css">
table#one-click01 tr td a:link,
table#one-click01 tr td a:visited {
    color:#CCCCCC;
    text-decoration: none;
}
table#one-click01 tr td a:hover,
table#one-click01 tr td a:active,
table#one-click01 tr td a:focus {
    color:#FAFAFA;
    text-decoration: none;
    }
table#one-click01 {
float:right;z-index:100000;position:fixed;right:0px;top:0px;background:#464646;padding-right:30px;padding-left:100px;border:0px;
}
body table#one-click01 tr td {
    height:25px;
    padding:3px 0 0 0;
    font-size:13px;
    font-family:sans-serif;
    line-height:1.5;
    color:#CCCCCC;
}
body.wp-admin table#one-click01 tr td {
    height:28px;
    padding-top:0px;
}
body.logged-in table#one-click01 tr td {
    padding-right:30px;
    border: 0px;
}
body.logged-in table#one-click01 {
    margin:0;border-collapse:collapse;border-spacing:0;
}
body.logged-in table#one-click01 tr td {
    vertical-align:middle;
    border:0;
}
</style>
<table id="one-click01" style="" border="0" cellspacing="0" cellpadding="0"><tr><td align=center valign=center>
<?php
    wp_get_current_user();
    $current_user = wp_get_current_user();
    if ( !($current_user instanceof WP_User) )
    return;
    $name = $current_user->display_name;
 ?>

<?php echo '
<a href="' . wp_logout_url() . '" title="' . esc_attr__('Log Out') . '">Howdy, ' . __($name) . '</a>'
; ?>

</td></tr></table>

<?php 
}
add_action( 'admin_bar_menu', 'newlogout' );
?>

Version modifiée de: http://wordpress.org/extend/plugins/one-click-logout/

1
INT