如果用户名与某些角色匹配,则使其在评论中显示为站点名称

时间:2017-10-01 作者:jared10222

这就是我想做的。我正在开发一个插件,我想检查每条评论,看看该评论的作者是“管理员”还是“编辑”。如果他们这样做了,而不是显示他们的用户名和头像,我想显示网站的名称以及公司徽标或其他东西。我对WordPress的开发还很陌生,我一直都在坚持这一点。我不知道是否有此过滤器,或者是否需要创建自定义注释模板。如果有人能给我指出正确的方向,那就太好了,因为在这一点上,我甚至不知道应该从哪里开始。非常感谢。

我在哪里,我的思维过程:

<?php 
function anonymize_author(){
    global $post;

   //get the id of the comment author
    $author_id = $post->post_author;

    //get the userdata of comment author
    $author_info = get_userdata($author_id);

    //get the user roles of comment author
    $author_roles = $author_info->roles;

    //Array of roles to check against
    $roles_to_check = ["editor", "administrator"];

    //see if user has a role in my $roles_to_check array
    $results = array_intersect($roles_to_check, $author_roles);

    if(!empty($results)){
        //the user has roles of either "editor" or "administrator"
        //load custom comments page?
        //I need to display the author name as the site name
        //and the avatar as the site logo
    }else{
        //Just a regular user, load the Wordpress Default comments
    }
}

add_filter(\'some_filter_here\', \'anonymize_author\');
?>

2 个回复
最合适的回答,由SO网友:CK MacLeod 整理而成

您似乎已经对如何使用过滤器有了想法,所以这里我不提供示例。扩展David Lee的答案,您可能可以使用get_avatarget_comment_author_link 过滤器用于您描述的主要目的,并在函数中测试评论者是否是具有正确帐户级别的注册用户。

get\\u avatar使后一部分变得简单,因为它会返回评论者ID或电子邮件。链接的get\\u avatar Codex条目为您的入门提供了一个很好的示例。你也可以尝试一下这些过滤器,看看它们是否能产生预期的结果:如果你简单的get\\u avatar过滤器功能取代了avatar,那么你就会知道你的主题正在使用get\\u avatar,你可以从那里继续。get\\u comment\\u author\\u链接同上。

否则,除非你打算完全替换主题的评论系统,否则不会有一个通用的解决方案,因为评论模板确实不同:使用get\\u avatar过滤器用不同的图像替换虚拟形象可能在90%以上的WordPress主题中起作用,但在你的主题中失败。

如果失败,有很多教程和示例可用于自定义注释。一种方法是,首先检查主题(或其父主题)的评论,了解如果遇到困难,你需要走多远。php模板文件,并确保它使用wp\\u list\\u comments(),如果是,则说明如何使用(尤其是是否使用“walker”参数)。甚至有可能您已经在使用一个插件,该插件劫持了标准的注释表单,并将其替换为自己的一个。然而,在这两种情况下,您仍然可以使用各种标准注释过滤器,因为许多自定义注释系统仍将使用标准函数。

SO网友:David Lee

如果您正在搜索以修改注释列表,请选中wp_list_comments() 就像导航菜单一样,您可以使用助行器修改它:

wp_list_comments( array(
    \'walker\' => new Walker_Comment()
) );
该页面中有一个示例,我认为您希望修改此部分:

<div class="comment-author vcard"><?php 
     if ( $args[\'avatar_size\'] != 0 ) {
        echo get_avatar( $comment, $args[\'avatar_size\'] ); 
     } 
     printf( __( \'<cite class="fn">%s</cite> <span class="says">says:</span>\' ), get_comment_author_link() ); ?>
</div>
如果还想修改注释表单,请选中comment_form()

结束