如何在自定义菜单链接上使用注销功能?

时间:2012-03-23 作者:Ajay Patel

全部的

我使用wordpress自定义菜单,有一个菜单作为注销。我知道wordpress的注销功能<?php echo wp_logout_url(); ?>

但如何在自定义菜单中使用它?

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

不确定如何以及在何处创建自定义按钮,但可以为每个筛选器添加这样的链接:添加filter function to \'wp_nav_menu_objects\' 并在需要的地方插入链接。

以下是一个基本示例:

add_filter( \'wp_nav_menu_objects\', \'wpse_46547_add_log_out_link\', 10, 2 );

function wpse_46547_add_log_out_link( $sorted_menu_items, $args )
{
    $link = array (
        \'title\'            => \'Log out\',
        \'menu_item_parent\' => 0,
        \'ID\'               => \'\',
        \'db_id\'            => \'\',
        \'url\'              => wp_logout_url()
    );

    $sorted_menu_items[] = (object) $link;

    return $sorted_menu_items;
}
您应该修改代码:

检查菜单是否正确。例如,需要一个类has_log_out_link 对于menu_class 参数打开wp_nav_menu 和测试$args->menu_class.menu_item_parent 发送到除0 如果您需要子菜单中的链接my other answer 检查这些

SO网友:hugmin42

如果其他人对此感到困惑,我发现最简单的方法就是使用自定义链接选项将“注销”菜单项添加到您想要的位置。将url设置为唯一的,如logouturl,然后将此代码简单地添加到函数中。php文件或任何您喜欢添加自定义代码的地方。

add_filter( \'wp_nav_menu_items\', \'wp123e_loginout_menu_link\', 10, 2 );

function wp123e_loginout_menu_link( $items, $args ) {
   if ($args->theme_location == \'primary\') {
      if (is_user_logged_in()) {
         $items = str_replace(\'logouturl\', wp_logout_url(), $items);
      }
   }
   return $items;
}
记住将str\\u replace的第一个参数更改为菜单设置的自定义链接中使用的字符串。您可能还需要将theme\\u位置从primary更改为适当的位置。

结束

相关推荐

When to load auto-login code?

我正在使用此(简化)代码通过单点登录系统的插件自动登录用户:$user_info = get_userdatabylogin( $username ); $user_id = $user_info->ID; wp_set_current_user( $user_id ); wp_set_auth_cookie( $user_id ); do_action( \'wp_login\', $username ); 我在网上找到的许多代码片段将此代码绑定到init