如何将评论者链接更改为/user/user_id?

时间:2014-05-19 作者:Alexander Farber

我想更改此屏幕截图中显示的评论者链接:

screenshot

在里面my test plugin at GitHub 我首先尝试了以下代码:

define(\'PROFILE\', \'<a href="/user/%s" rel="external nofollow" class="url">%s</a>\');

function get_comment_author_link($cid) {
   $uid = get_comment_author($cid);
   return sprintf(PROFILE, $uid->ID, $uid->name);
}

add_action(\'get_comment_author_link\',  \'get_comment_author_link\');
但是通过研究文件wp-includes/comment-template.php 我意识到get_comment_author_link 不是注释ID,而是包含<a href="...">...</a> 因此,我无法将此挂钩用于我的目的(因为在挂钩中找不到用户ID)。

请建议我一个合适的钩或方式来改变评论链接。

3 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

您可以使用get_comment_author_link 挂钩,它是get_comment_author_link() 模板标记,就像您的问题已经建议的那样。那么你只需要得到相应的user_id, 可以通过$comment 全局,并相应地构造所需的链接。

示例性用法如下所示:

add_filter( \'get_comment_author_link\', \'wpse144835_custom_comment_author_link\' );
function wpse144835_custom_comment_author_link( $link ) {
    global $comment;
    $comment_user_id = $comment->user_id;
    // code to create the new link
    return $new_link;
}

<小时>Edit:

关于您的问题,相应的评论不幸被删除,因此这是一个信息性的短名单。这里面有很多,太多了,无法真正回答,但我给你一些额外的信息:

由于我们提供了您可以使用的全球$comment->comment_author

对于函数,您可以使用get_comment_author()comment_author() 根据您的需要returnecho.

Codex: Global Variables 您可以获得有关它们的概述

这里有WP_Comment_Query 以及Walker_Comment

例如,在comment\\u author codex页面上,有comment related functions

此外,我建议您查看comment-template.php 以及comment.php 了解更多信息

SO网友:Jonathan Lafleur

你能试试吗:

 $id = get_comment( get_comment_ID() )->user_id;
我只是在google上找到了这个解决方案,但我没有一个环境来测试它。

SO网友:Pim

该函数的输出是一个a标签,包含指向作者配置文件的链接,其输入肯定是一个ID。

如果要更改该函数的输出,则需要一个过滤器,并且需要str\\u替换a-tag(或作用于字符串的类似方法)。(参见where to modify get_comment_author_link()?)

我认为更重要的问题是:你到底想在这里实现什么?

理论上,每个主题/插件中的commenters链接可以实现不同的功能。可以使用get\\u comment\\u author\\u url()完成,也可以使用get\\u comment()直接从comment对象中检索,或者使用任何其他方式。

但是,要更改get\\u comment\\u author\\u link()的输出,请参见上面的示例。

结束

相关推荐

以数组形式返回PAGINATE_COMMENTS_LINKS()

这个documentation 指定:类型(字符串)(可选)控制返回值的格式。可能的值包括:“普通”-链接由换行符分隔的字符串</“数组”-分页链接列表的数组,可完全控制显示为了将推特引导分页样式添加到wordpress评论分页中,我希望返回是一个数组。当我在通话中添加$args时,我得不到任何回报。我的代码:<ol class=\"commentlist\" style=\"list-style: none;\"> <?php wp_list_comments(\