3

我在使用 Wordpress 会员网站时遇到问题。安装是带有子域的多站点。

我要求用户登录才能查看子域站点的所有页面。为此,我选择了反对任何功能并放置<?php wp_login_form(); ?>page-template此处显示的...

<?php if ( is_user_logged_in() ) {
get_header(); ?>
   <div class="page-content-wrapper ">
   </div>
<?php get_footer();?>

<?php } else {?>
<?php get_header('login'); ?>
<?php wp_login_form(); ?>
<?php get_footer('login');?>
<?php }?>

这很有魅力——当is_user_logged_in()他们得到页面时,当他们没有得到页面时wp_login_form();。离开此页面时出现我的问题。用户已注销,返回页面后必须再次登录,如此处所示。

登录错误

当我添加if ( is_user_logged_in() )到其他页面时也会发生这种情况。

我还尝试过重定向到wp-login.php用户需要登录的时间,但这只是循环返回,wp-login.php这表明我在登录凭据记录时遇到了 cookie 问题。

我注意到在登录之前,cookie 显示如下

登录前的cookies

登录后,它们如图所示

登录后的cookies

重新访问需要登录的页面后,cookie 将恢复为原始页面。但是,永远不会存储用户凭据。

任何帮助,将不胜感激。

更新 看来,如果我第一次登录,wp-admin我可以访问该页面并显示用户信息。如果我离开该页面,用户将被注销并且需要登录。

4

1 回答 1

6

您的 footer.php 第 38 行存在代码问题:

<a role="button" href="<?php wp_logout(); ?> "

您正在使用wp_logout()使用户在访问网站前端时注销。你需要用这个替换它:

<a role="button" href="<?php echo wp_logout_url(); ?> ">

这个很好,因为它会放置链接以使用户能够在单击时注销。

于 2017-09-23T22:05:47.427 回答