更改评论作者显示名称

时间:2015-02-17 作者:Web Builder

我试图将评论作者的名字(或者更具体地说,WooCommerce中的评论作者)改为名字的首字母(例如,“John D.”代表“John Doe”)。

我通过以下函数中的代码获得了大部分方法。php,但出于某种原因(可能是因为评论/评论是如何提交的),它倾向于将名称留空,并用句号(“.”)替换在一些(并非全部)评论中。

add_filter(\'get_comment_author\', \'my_comment_author\', 10, 1);

function my_comment_author( $author = \'\' ) {
    // Get the comment ID from WP_Query

    $comment = get_comment( $comment_ID );

    if ( empty($comment->comment_author) ) {
        if (!empty($comment->user_id)){
            $user=get_userdata($comment->user_id);
            $author=$user->first_name.\' \'.substr($user->last_name,0,1).\'.\'; // this is the actual line you want to change
        } else {
            $author = __(\'Anonymous\');
        }
    } else {
        $user=get_userdata($comment->user_id);
        $author=$user->first_name.\' \'.substr($user->last_name,0,1).\'.\'; // this is the actual line you want to change
    }
    return $author;
}
但是,如果我将代码这样调整为回退,它总是显示全名:

add_filter(\'get_comment_author\', \'my_comment_author\', 10, 1);

function my_comment_author( $author = \'\' ) {
    // Get the comment ID from WP_Query

    $comment = get_comment( $comment_ID );

    if ( empty($comment->comment_author) ) {
        if (!empty($comment->user_id)){
            $user=get_userdata($comment->user_id);
            $author=$user->first_name.\' \'.substr($user->last_name,0,1).\'.\'; // this is the actual line you want to change
        } else {
            $author = __(\'Anonymous\');
        }
    } else {
        $author = $comment->comment_author;
    }

    return $author;
}
我希望数据库中的实际名称保持不变,只需过滤网站面向公众一侧的输出以获取评论(我们可能需要在其他地方显示他们的全名,但在评论作者正确显示之前无法真正测试)。

3 个回复
SO网友:Roman Candle Thoughts

缺少“NOT”逻辑运算符(!)在您的if声明中。您想说“如果注释作者不为空”。到目前为止,该函数正在读取作者不是空的,并默认为else语句,该语句告诉它输出作者的全名。使用第二块代码,但进行以下更改。

更改以下内容:

if ( empty($comment->comment_author) ) {
收件人:

if ( !empty($comment->comment_author) ) {
否则我觉得没问题。

SO网友:GDY

有同样的问题。。。

以下是我的代码:

add_filter( \'comment_author\', \'custom_comment_author\', 10, 2 );

function custom_comment_author( $author, $commentID ) {

    $comment = get_comment( $commentID );
    $user = get_user_by( \'email\', $comment->comment_author_email );

    if( !$user ):

        return $author;

    else:

        $firstname = get_user_meta( $user->ID, \'first_name\', true );
        $lastname = get_user_meta( $user->ID, \'last_name\', true );

        if( empty( $firstname ) OR empty( $lastname ) ):

            return $author;

        else:

            return $firstname . \' \' . $lastname;

        endif;

    endif;

}
它检查是否有firstname和lastname,并输出它们。如果没有,则返回常规作者。

SO网友:Eduard

嗯,经过几分钟的调试和阅读这个主题后,我得出了一个更容易理解的结论get_user_by() 作用

所以我经历了get_user_by(\'email\',$comment->comment_author_email) 并设法获取用户详细信息,即使在用户未登录的情况下发送评论/评论。

这是我的完整代码

add_filter(\'get_comment_author\', \'comments_filter_uprise\', 10, 1);

function comments_filter_uprise( $author = \'\' ) {
    $comment = get_comment( $comment_author_email );

    if ( !empty($comment->comment_author_email) ) {
        if (!empty($comment->comment_author_email)){
            $user=get_user_by(\'email\', $comment->comment_author_email);
            $author=$user->first_name.\' \'.substr($user->last_name,0,1).\'.\';
        } else {
            $user = get_user_by( \'email\', $comment->comment_author_email );
            $author = $user->first_name;
        }
    } else {
        $user=get_userdata($comment->user_id);
        $author=$user->first_name.\' \'.substr($user->last_name,0,1).\'.\';
        $author = $comment->comment_author;
    }
    return $author;
}

结束

相关推荐

Get x recent posts by author?

因此,我的网站上有十位作者,我想指定一个部分,以帖子标题链接的形式显示这十位作者及其5篇最新帖子。我尝试使用以下<?php get_most_recent_post_of_user( $user_id ); ?> 但它不起作用,所以我觉得有点失落。有什么建议/建议吗?