繁体   English   中英

如何在Wordpress中将is_user_logged_in()设置为true

[英]How to set is_user_logged_in() true in Wordpress

我从插件内部和wp_signon函数内部使用wp_signon登录用户。 为了澄清起见,短代码是从页面内容中调用的。 wp_signon函数成功返回用户信息。 但是is_user_logged_in()返回false 为什么会发生这种情况,或者如何将is_user_logged_in()设置is_user_logged_in() true,以便用户保持登录状态?

            ob_start();
            $user_data = array();
            $user_data['user_login'] = $username;
            $user_data['user_password'] = $password;
            $user_data['remember'] = $remember;  
            $user = wp_signon( $user_data, false );
              ob_get_clean();
            if ( is_wp_error($user) ) {
                $err = $user->get_error_message();

            } else {


                $_SESSION['fc_user']=$user->ID;
                var_dump($user); // gives the user info
                var_dump(is_user_logged_in()); // gives false

            }

函数wp_signon

将标题发送到页面。 它必须在返回任何内容之前运行。

因此,在简码中运行它(如您在注释中指定的那样)为时已晚:标头已经发送。

为了实现所需的功能,应将代码分为两部分,以便在不同的时间运行,如下所示:

add_action( 'after_setup_theme', function() {

    // run this only on the page you want
    if( !is_page('the_page_you_want') )
        return;

    $user_data = array();
    $user_data['user_login'] = $username;
    $user_data['user_password'] = $password;
    $user_data['remember'] = $remember;  
    $user = wp_signon( $user_data, false );
    if ( is_wp_error($user) ) {
        $GLOBALS['user_error_message'] = $user->get_error_message();
    } else {
        $_SESSION['fc_user'] = $user->ID;
    }

} );


add_shortcode( 'your_shortcode', function( $atts ) {

    if( is_user_logged_in() ) {
        // get user info
        return print_r( get_userdata(get_current_user_id()), 1 );
    } elseif( isset($GLOBALS['user_error_message']) ) {
        // show error
        return print_r( $GLOBALS['user_error_message'], 1 );
    }

} );

我只是遇到了MVC Wordpress插件的类似问题。 对我来说,解决方案是包括

require_once($_SERVER['DOCUMENT_ROOT'].'/wp-includes/pluggable.php');

通过插件访问核心功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM