尹志强

使用 WPJAM Basic 插件造成文章列表不显示

尹志强 - 7 年 前前

打开文章的全部,然后点击我的,再回到全部,发现文章列表为空,但是文章数量是正确的。
关闭 WPJAM Basic 插件后恢复正常。
打开 WPJAM Basic 插件,注释掉下面的代码后恢复正常。
WPJAM_Cache::init()
其它文章状态、其它文章类型都存在该问题。
查看代码后,感觉以下这几个钩子的处理级别可能有点草率,时间关系没有办法仔细分析,希望 Denis 大神解决。
posts_pre_query、posts_results、found_posts、parse_query。
还有一个方法就是增加一个是否开启缓存的选项。

5条回复

Denis | 邓鸿华
Denis | 邓鸿华 - 7 年前

仔细查看 wpjam basic 3.0 安装说明,谢谢。

尹志强
尹志强 - 7 年前

明白了。我这边的 MemCached 插件无法启动,所以用的是 Redis,还以为是兼容的呢。
谢谢。

尹志强
尹志强 - 7 年前

进一步研究了一下,问题出在 Redis 的 object-cache.php 文件中的 wp_cache_get_multi 函数的参数与 Memcached 的不一样。
Memcached 的是:function wp_cache_get_multi( $keys, $group = \'\' )
Redis 的是:function wp_cache_get_multi($groups)
解决方法是在 WPJAM_PostType 类的 get_posts 函数中,将:
$posts = wp_cache_get_multi($post_ids, \'posts\');
代码修改为:
$groups[\'posts\'] = $post_ids;
$posts = wp_cache_get_multi($groups);
这样就可以了。
建议在这里增加一个 filter,方便我们通过代码来控制是否调用 Memcached 的 wp_cache_get_multi。
谢谢!

Denis | 邓鸿华
Denis | 邓鸿华 - 7 年前

不加。

你可以把 redis 的 wp_cache_get_multi 删除了。

wpjam-compact.php 有兼容代码。

尹志强
尹志强 - 7 年前

好的,这个方法也不错。

我要回复

暂时不支持网页回复,请安装 WPJAM-Basic 插件,然后在 WordPress 后台即可参与讨论。