如何处理具有w3总缓存的is_user_loged_in()

时间:2014-02-17 作者:alexleonard

我有一个网站,允许用户注册和登录,但不通过标准wp-login.php 等等——都是在主题范围内完成的s2member

我遇到了一些问题,在启用页面缓存的情况下,我的代码显示登录按钮或“您的帐户”按钮,显示缓存的内容。

我使用下面的代码来决定显示哪个按钮,这取决于是否登录了正确的用户级成员。

<?php if (current_user_is("s2member_level1")) : ?>
    <?php
        $current_user = wp_get_current_user();
        $redirect = \'&amp;redirect_to=\'.urlencode(wp_make_link_relative(get_option(\'siteurl\')));
        $uri = wp_nonce_url( site_url("wp-login.php?action=logout$redirect", \'login\'), \'log-out\' );
    ?>
    <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown">My Account</a>
        <ul class="dropdown-menu">
            <li><a href="<?= $uri; ?>">Logout</a></li>
            <li><a href="<?= get_permalink(x); ?>">Edit Account</a></li>
        </ul>
    </li>
<?php else : ?>
    <li class="login-button">
        <a class="btn-lg" href="<?= get_permalink(x); ?>">Member Login</a>
    </li>
<?php endif; ?>
然而,如果启用了页面缓存,则会出现各种各样的问题。

我在看W3TC常见问题部分中的片段缓存注释,但它似乎有一个重大缺陷,它说:

请注意,WordPress功能将不可用。

所以,如果我理解正确的话,这几乎阻止了我使用片段缓存。

由于会员登录/我的帐户按钮一直存在于网站主导航中,我只是暂时完全禁用了页面缓存。

我唯一的选择是集成某种形式的AJAX方法来处理依赖于身份验证/来宾状态的动态节吗?

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

这是一项功能。您可以尝试禁用已登录用户的缓存,但如果它位于主导航中,根据设置屏幕,这仍然没有帮助:

不缓存已登录用户的页面

未经身份验证的用户可以查看给定页面上最后一个经过身份验证的用户视图的缓存版本。不建议禁用此选项。

对于这个问题,还有一些其他问题可能会进一步澄清这一点:

Showing as logged in after logout (W3 Total Cache issue)

https://stackoverflow.com/questions/19441226/w3-total-cache-still-cached-when-user-logging-by-nicety-login

结束

相关推荐

一群使用相同Memcached的无关WordPress无法正确存储他们的数据

在开始之前,我必须警告读者:小心d!在single web server (CentOS 6.3)使用php-5.3.3,我有unrelated wordpress站点(3.5),每个站点都有自己的DB(Mysql5.1),因此table\\u前缀是相同的(“wp\\u”)。为了加快wordpress的速度,我想用APC获取代码,用memcache后端获取数据,所以在我的web服务器上,我编译了;安装libmemcached-1.0.15和(使用“pecl安装”)php-pecl-memcached 2.

如何处理具有w3总缓存的is_user_loged_in() - 小码农CODE - 行之有效找到问题解决它

如何处理具有w3总缓存的is_user_loged_in()

时间:2014-02-17 作者:alexleonard

我有一个网站,允许用户注册和登录,但不通过标准wp-login.php 等等——都是在主题范围内完成的s2member

我遇到了一些问题,在启用页面缓存的情况下,我的代码显示登录按钮或“您的帐户”按钮,显示缓存的内容。

我使用下面的代码来决定显示哪个按钮,这取决于是否登录了正确的用户级成员。

<?php if (current_user_is("s2member_level1")) : ?>
    <?php
        $current_user = wp_get_current_user();
        $redirect = \'&amp;redirect_to=\'.urlencode(wp_make_link_relative(get_option(\'siteurl\')));
        $uri = wp_nonce_url( site_url("wp-login.php?action=logout$redirect", \'login\'), \'log-out\' );
    ?>
    <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown">My Account</a>
        <ul class="dropdown-menu">
            <li><a href="<?= $uri; ?>">Logout</a></li>
            <li><a href="<?= get_permalink(x); ?>">Edit Account</a></li>
        </ul>
    </li>
<?php else : ?>
    <li class="login-button">
        <a class="btn-lg" href="<?= get_permalink(x); ?>">Member Login</a>
    </li>
<?php endif; ?>
然而,如果启用了页面缓存,则会出现各种各样的问题。

我在看W3TC常见问题部分中的片段缓存注释,但它似乎有一个重大缺陷,它说:

请注意,WordPress功能将不可用。

所以,如果我理解正确的话,这几乎阻止了我使用片段缓存。

由于会员登录/我的帐户按钮一直存在于网站主导航中,我只是暂时完全禁用了页面缓存。

我唯一的选择是集成某种形式的AJAX方法来处理依赖于身份验证/来宾状态的动态节吗?

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

这是一项功能。您可以尝试禁用已登录用户的缓存,但如果它位于主导航中,根据设置屏幕,这仍然没有帮助:

不缓存已登录用户的页面

未经身份验证的用户可以查看给定页面上最后一个经过身份验证的用户视图的缓存版本。不建议禁用此选项。

对于这个问题,还有一些其他问题可能会进一步澄清这一点:

Showing as logged in after logout (W3 Total Cache issue)

https://stackoverflow.com/questions/19441226/w3-total-cache-still-cached-when-user-logging-by-nicety-login

相关推荐

Nginx+WordPress+HHVM:为什么Batcache不能工作?瓦尼什会提供更多帮助吗?

我听说了很多关于HHVM, 所以我用Nginx(带Pagespeed模块)和HHVM设置了WordPress博客的副本(在另一个域上)。现在,好处是显而易见的:在相同的配置上,加载时间要快两到三倍。我正在努力加快速度,我还安装了Memcached and Batcache. 我已经安装了memcached 包,已复制对象缓存。php(Pastebin) 在WordPress博客的根文件夹上,然后我安装了Batcache插件并复制了高级缓存。php(Pastebin) 将文件保存到wp content文件夹