同时替换评论头像和链接

时间:2017-07-04 作者:fjanecic

我正在尝试替换Wordpress评论作者数据:

(1)Avatar (已上载图像,而不是Gravatar)

(2)Author link (链接到作者页,因为只有成员才能发表评论)

我从以下方面找到了一个很好的解决方案this question, 并实现了以下代码:

if ( ! function_exists( \'t5_comment_uri_to_author_archive\' ) )
{
add_filter( \'get_comment_author_url\', \'t5_comment_uri_to_author_archive\' );

function t5_comment_uri_to_author_archive( $uri )
{
    global $comment;

    // We do not get the real comment with this filter.
    if ( empty ( $comment )
        or ! is_object( $comment )
        or empty ( $comment->comment_author_email )
        or ! $user = get_user_by( \'email\', $comment->comment_author_email )
    )
    {
        return $uri;
    }

    return get_author_posts_url( $user->ID );
}
}
代码非常适合替换链接,我想用它来替换化身。我创建了函数的副本,并更改了名称和返回:

if ( ! function_exists( \'my_comment_imgs\' ) )
{
add_filter( \'get_comment_author_url\', \'my_comment_imgs\' );

function my_comment_imgs( $uri )
{
    global $comment;

    // We do not get the real comment with this filter.
    if ( empty ( $comment )
        or ! is_object( $comment )
        or empty ( $comment->comment_author_email )
        or ! $user = get_user_by( \'email\', $comment->comment_author_email )
    )
    {
        return $uri;
    }

    return get_avatar( $user->ID );
}
}
然而,这个函数否定了第一个,所以我得到了更新的头像,但失去了作者链接。如何同时替换这两个元素(化身和链接)?

1 个回复
最合适的回答,由SO网友:fjanecic 整理而成

也许我以前工作累得筋疲力尽,但今天早上我又尝试了一次相同的代码,并设法使其正常运行。

if ( ! function_exists( \'comment_imgs\' ) )
{
add_filter( \'get_comment_author_url\', \'comment_imgs\' );

function comment_imgs( $avatar, $id_or_email, $size, $default, $alt )
{
    global $comment;

    // We do not get the real comment with this filter.
    if ( empty ( $comment )
        or ! is_object( $comment )
        or empty ( $comment->comment_author_email )
        or ! $user = get_user_by( \'email\', $comment->comment_author_email )
    )
    {
        return $uri;
    }

    return get_avatar( $user->ID );
}
}
原始代码的贷方为Thomas Scholz 对于链接到作者页面,此修改将检索本地化身,并且两个功能不会相互冲突。

结束

相关推荐

Admin-ajax.php在子域上无法正常工作

我试图将产品价格(从数据库中提取)乘以cookie存储的货币,对应于切换语言。为了实现这一点,我使用了AJAX脚本和几种方法。问题在于方法currencyRates();尽管在测试环境中,一切都很正常(我使用的是子文件夹而不是子域),但在生产级方法上currencyRates(); 只是返回值1(在方法开始时初始化,当var_dump $rate 在foreach循环中,它给了我期望的值,但当我尝试返回时,它总是在开始变量处初始化的值$rate = 1). 发生了什么事?子域如何影响这种类型的脚本?数据库