这是我的解决方案,而不是WordPress论坛上建议的解决方案。这其实相当简单,但需要几个步骤。
1) 转到wp admin->Settings->Discussion并关闭线程注释。这将禁用我们想要的线程,但也将取消我们“回复”特定评论的能力。我们必须把它放回去。
2) 将下面的脚本添加到主题的函数中。php或插件。
function load_script_for_fake_threading() {
if (is_singular()) wp_enqueue_script(\'comment-reply\');
}
add_action(\'wp_enqueue_scripts\',\'load_script_for_fake_threading\');
3)注释的打印通过回调
wp_list_comments. TwentyEleven使用该函数
twentyeleven_comment()
在its中
functions.php
. 如果主题没有回调,则需要创建一个回调。默认情况下,使用“wp includes/Comment template.php”中Walker\\u Comment类的start\\el方法的内容。复制或复制主题的回调并将函数重命名为
fake_threaded_comment
.
3) 查找wp_list_comments 在主题中的功能comments.php
并更改回调。它应该看起来像:
wp_list_comments(array(\'callback\'=>\'fake_threaded_comment\'));
4)现在我们要做一点欺骗。在该回调中,“fake\\u threaded\\u comment”,应该调用
comment_reply_link 作用我们需要对其进行编辑,以便传递硬编码的“depth”和“max\\u depth”参数。我们正在将“depth”设置为1,将max\\u depth设置为2。这将返回我们的“回复”按钮/链接。
comment_reply_link(
array_merge(
$args,
array(
\'reply_text\' => __( \'Reply <span>↓</span>\',
\'themetextdomainname\' ),
\'depth\' => 1,
\'max_depth\' => 2
)));
5)设置指向父注释的链接。在回调函数中,您可能已经注意到对
$comment
.
$comment->comment_parent
是回复评论的ID,并且
get_comment_link($comment->comment_parent)
提供父注释的URL(不是完整的锚标记)。
get_comment($comment->comment_parent)
将获取父注释数据。所以,就像。。。
$pcom = get_comment($comment->comment_parent);
echo \'<a href="\'.get_comment_link($comment->comment_parent).\'">This is a reply to \'.$pcom->comment_author.\'</a>\';
就是这样。您现在可以对特定注释进行注释,但一旦发布,注释将显示在注释列表的末尾或开头,具体取决于加载顺序。
在WordPress 3.4.1上使用TwentyEleven进行了测试(虽然有些过时,但它已经在我的开发服务器上了)。我确信主题或插件可以做一些事情来打破这种局面,但我不认为一个表现良好的主题或插件会打破这种局面。
这是我今天的好事。如果出了什么问题,请告诉我。