在主页“is_User_Loged_in()”功能登录后不工作,刷新页面后工作吗?

时间:2020-09-21 作者:Prashant Patil

我正在尝试使用过滤器添加菜单项。

以下是完整功能

function new_nav_menu_items($items) {
    
    $loginLink = \'<li id="menu-item-login" class="menu-item menu-item-type-post_type menu-item-object-page "><a href="\'.wp_login_url().\'">Login</a></li>\';
    
    $resgisterLink = \'<li id="menu-item-register" class="menu-item menu-item-type-custom menu-item-object-custom  top-menu-signup"><a href="javascript:void(0);" data-toggle="modal" data-target="#myModal">Subscribe</a></li>\';
    
    // add the home link to the end of the menu

    if(is_user_logged_in())
    {

        global $current_user; 
        wp_get_current_user();
        //$current_user->ID;

        $user_firstname =get_user_meta($current_user->ID, \'first_name\', true);

        $user_lastname =get_user_meta($current_user->ID, \'last_name\', true);
        
        $editProfile = \'<li id="menu-item-119" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-119 user-name"><a class="user-name-menu" href="javascript:void(0)"><i class="icon-admin-user"></i>\'.$user_firstname.\' \'.$user_lastname.\'</a>
        <ul class="sub-user-menu">
            <li><a href="\'.home_url(\'edit-profile\').\'"><i class="icon-edit"></i>Edit Profile</a></li>
            <li style="margin-bottom: 10px;"><a href="\'.wp_logout_url().\'"><i class="icon-logout"></i>Logout</a></li>
        </ul>
        </li>\';
        
        $items = $items. $editProfile;
    }
    else
    {
        $items = $items . $loginLink . $resgisterLink;
    }
    
    return $items;
}
// to handle login/logout links on the home page header menu

add_action( \'init\', \'nothing_register_menus\' );

function nothing_register_menus()
{
    is_user_logged_in();
    add_filter( \'wp_nav_menu_items\', \'new_nav_menu_items\', 10, 2 );
}
登录后,“;is\\u user\\u logged\\u in()”中;始终为false,但在登录状态下刷新页面后,它会正确显示登录。

1 个回复
SO网友:billybadass

“内部没有条件”;nothing\\u register\\u menu";。它首先执行is_user_logged_in(); 然后是过滤器。不管怎样。

如果is\\u user\\u logged\\u为TRUE,它似乎应该执行过滤器。

还可以考虑在登录后重定向到主页,这可能会触发它,或者考虑其他一些AJAX解决方法。

^^