在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()用法,并且我的单个模板中没有。添加主题支持用于评论和一切。我应该进一步挖掘的任何提示或方向都会很棒!
答案 0 :(得分:0)
找出问题所在。
代码中的某处,在MAIN LOOP中间,get_template_part()包含一个文件,在该文件中,运行新WP_Query的函数缺少wp_reset_postdata()。这导致全球$ post变得腐败,至少从我的角度来看。
由于WP_Query用于获取随机帖子,因此导致该随机帖子显示评论。有时他们存在,有时他们没有。
此外,依赖于$ post的get_next_post()和get_previous_post()等其他函数现在返回相对于新随机帖子而不是旧帖子的结果,如预期的那样。
只有当我注意到这些相邻的函数返回无效结果时,才能理解问题所在。