wordpress中未显示的注释 - wp_list_comments(),comments_form()

时间:2016-06-13 06:22:27

标签: database wordpress caching

在90%的情况下,刷新同一页面,功能 wp_list_comments() comments_form() has_comments()和其他功能都没有产生预期的结果。

所以我刷新同一页面,这些函数返回不同的结果,例如0条评论,5条或21条评论,而没有其他用户使用数据库,因为它是一个带有XAMPP的测试系统。值得注意的是,只有值0,5和21似乎会出现在评论的数量上。

进一步查看调用堆栈,我注意到有时$ wpdb-> has_comments()返回0,尽管帖子包含注释。

我怀疑这可能与我的4.5版本的wordpress缓存系统有关,我在他们的bug跟踪器上发现的唯一问题与在同一文件中包含两次wp_list_comments()有关,事实并非如此。更新到最新版本也无法解决此问题。

我注意到以下调试日志已打印在debug.log文件中,但只有一次,尽管该页面已重新加载数百次:

WordPress database error You have an error in your SQL syntax; check the 
manual that corresponds to your MariaDB server version for the right syntax to
use near 'WHERE  AND comment_parent IN (61,62,66)  ORDER BY comment_date_gmt 
ASC, comment_' at line 1 for query   WHERE  AND comment_parent IN (61,62,66)  
ORDER BY comment_date_gmt ASC, comment_ID ASC made by 
require('C:\xampp\htdocs\boxify\chef\wordpress\wp-blog-header.php'),
require_once('C:\xampp\htdocs\boxify\chef\wordpress\wp-includes\template
loader.php'), include('C:\xampp\htdocs\boxify\chef\wordpress\wp-
content\themes\mytheme\single.php'), get_template_part, locate_template, 
load_template, <...more files here...>, comments_template,
WP_Comment_Query->__construct, WP_Comment_Query->query, WP_Comment_Query-
>get_comments, WP_Comment_Query->fill_descendants

在多个自托管wordpress安装上出现问题。

对于其他主题,比如二十几岁或其他主题,我不会看到这种行为,所以我肯定有些不对劲,我怀疑缓存配置,我没有触及。

另外,我已经检查过wp_reset_postdata()用法,并且我的单个模板中没有。添加主题支持用于评论和一切。我应该进一步挖掘的任何提示或方向都会很棒!

1 个答案:

答案 0 :(得分:0)

找出问题所在。

代码中的某处,在MAIN LOOP中间,get_template_part()包含一个文件,在该文件中,运行新WP_Query的函数缺少wp_reset_postdata()。这导致全球$ post变得腐败,至少从我的角度来看。

由于WP_Query用于获取随机帖子,因此导致该随机帖子显示评论。有时他们存在,有时他们没有。

此外,依赖于$ post的get_next_post()和get_previous_post()等其他函数现在返回相对于新随机帖子而不是旧帖子的结果,如预期的那样。

只有当我注意到这些相邻的函数返回无效结果时,才能理解问题所在。