如何在非WordPress页面上检查用户是否登录到WordPress

时间:2017-01-23 作者:Terungwa

我在这里使用了本教程(https://codex.wordpress.org/Integrating_WordPress_with_Your_Website) 作为设置非wordpress页面以访问非wordpress页面上某些wordpress资源的指南。例如,我可以在非wordpress页面上查看带有以下代码片段的帖子。

<?php
require(\'/the/path/to/your/wp-blog-header.php\');
?>

<?php
$posts = get_posts(\'numberposts=10&order=ASC&orderby=post_title\');
foreach ($posts as $post) : setup_postdata( $post ); ?>
<?php the_date(); echo "<br />"; ?>
<?php the_title(); ?>    
<?php the_excerpt(); ?> 
<?php
endforeach;
?>
此外,我需要能够检测用户是否在非wordpress页面上登录wordpress。我使用以下代码:

if(is_user_logged_in()){
$current_user = wp_get_current_user();
/**
 * @example Safe usage: $current_user = wp_get_current_user();
 * if ( !($current_user instanceof WP_User) )
 *     return;
 */
echo \'Username: \' . $current_user->user_login . \'<br />\';
echo \'User email: \' . $current_user->user_email . \'<br />\';
echo \'User first name: \' . $current_user->user_firstname . \'<br />\';
echo \'User last name: \' . $current_user->user_lastname . \'<br />\';
echo \'User display name: \' . $current_user->display_name . \'<br />\';
echo \'User ID: \' . $current_user->ID . \'<br />\';
echo get_avatar( $current_user->user_email, 32 ). \'<br />\';
echo \'<hr />\';  

}
else{
 echo \'Not logged-in\';
}
尽管我登录了wordpress,但当我导航到非wordpress页面时,我会看到wordpress帖子列表,但is\\u user\\u logged\\u in()函数返回false并打印“Not logged in”!!!

这里推荐什么(Wordpress check if user is logged in from non wordpress page) 不起作用,并给出相同的错误。

为什么会这样,还是我遗漏了什么?我需要指导来解决这个问题。

3 个回复
SO网友:Md. Mrinal Haque

您正在跟踪https://codex.wordpress.org/Integrating_WordPress_with_Your_Website 这意味着你的主要网站基本上不是WordPress。您可以使用WordPress的一些功能,如发布、显示等,但主站点不是WordPress。因此,您无法检测用户是否登录WordPress。

SO网友:T.Todua

您应该尝试以下操作:

require_once(ABSPATH.\'wp-includes/pluggable.php\');
if(is_user_logged_in()){
     ...........
}
此外,最好使用:

require(\'./path/to/wp-load.php\');   //instead of wp-blog-header.php
否则,您必须使用:define( \'WP_USE_THEMES\', false ); 之前require(...)

SO网友:Tim Hill

如果你还没有解决这个问题,下面的方法对我有用。

require_once(ABSPATH.\'wp-includes/pluggable.php\');

wp_setcookie($user_login, $user_pass, false, \'\', \'\', $cookieuser);

if(is_user_logged_in()){
     ...........
}

相关推荐

Change default login auth

我将增强我的WordPress身份验证页面。我的想法很简单,就是更改过程以检查密码,就像使用用户名或电子邮件登录的默认过程一样。我已经更改了数据库,添加了额外的字段“code”:我的目标是:the user can login with your username or email and with your password or code.然而,我不知道哪个部分的编码是用来验证密码的,因为我想参考现有的编码。