我的代码无效:-(
(电子邮件0、1、2、3…59中的数字-这些是秒)
add_filter(\'get_avatar\', \'my_get_avatar\', 10, 5);
function my_get_avatar($avatar, $id_or_email, $size, $default, $alt) {
$mail = $id_or_email->comment_author_email;
$email_list = array( \'anonimus_0@anonimus.com\', \'anonimus_1@anonimus.com\', \'anonimus_2@anonimus.com\', \'anonimus_3@anonimus.com\', \'anonimus_4@anonimus.com\', \'anonimus_5@anonimus.com\', \'anonimus_6@anonimus.com\', \'anonimus_7@anonimus.com\', \'anonimus_8@anonimus.com\', \'anonimus_9@anonimus.com\', \'anonimus_10@anonimus.com\', \'anonimus_11@anonimus.com\', \'anonimus_12@anonimus.com\', \'anonimus_13@anonimus.com\', \'anonimus_14@anonimus.com\', \'anonimus_15@anonimus.com\', \'anonimus_16@anonimus.com\', \'anonimus_17@anonimus.com\', \'anonimus_18@anonimus.com\', \'anonimus_19@anonimus.com\', \'anonimus_20@anonimus.com\', \'anonimus_21@anonimus.com\', \'anonimus_22@anonimus.com\', \'anonimus_23@anonimus.com\', \'anonimus_24@anonimus.com\', \'anonimus_25@anonimus.com\', \'anonimus_26@anonimus.com\', \'anonimus_27@anonimus.com\', \'anonimus_28@anonimus.com\', \'anonimus_29@anonimus.com\', \'anonimus_30@anonimus.com\', \'anonimus_31@anonimus.com\', \'anonimus_32@anonimus.com\', \'anonimus_33@anonimus.com\', \'anonimus_34@anonimus.com\', \'anonimus_35@anonimus.com\', \'anonimus_36@anonimus.com\', \'anonimus_37@anonimus.com\', \'anonimus_38@anonimus.com\', \'anonimus_39@anonimus.com\', \'anonimus_40@anonimus.com\', \'anonimus_41@anonimus.com\', \'anonimus_42@anonimus.com\', \'anonimus_43@anonimus.com\', \'anonimus_44@anonimus.com\', \'anonimus_45@anonimus.com\', \'anonimus_46@anonimus.com\', \'anonimus_47@anonimus.com\', \'anonimus_48@anonimus.com\', \'anonimus_49@anonimus.com\', \'anonimus_50@anonimus.com\', \'anonimus_51@anonimus.com\', \'anonimus_52@anonimus.com\', \'anonimus_53@anonimus.com\', \'anonimus_54@anonimus.com\', \'anonimus_55@anonimus.com\', \'anonimus_56@anonimus.com\', \'anonimus_57@anonimus.com\', \'anonimus_58@anonimus.com\', \'anonimus_59@anonimus.com\');
if (array_search($mail, $email_list) == true ) {
$img = "http://website.com/wp-content/anonimus-avatar.png";
$avatar = "<img src=\'".$img ."\' alt=\'".$alt."\' height=\'".$size."\' width=\'".$size."\' />";
}
return $avatar;
}
对不起我的英语
最合适的回答,由SO网友:Sally CJ 整理而成
有两件事:
在$id_or_email
可以是整数(用户ID)、字符串(Gravatar MD5哈希或用户电子邮件)或对象(例如WP_User
实例),所以您不能简单地$mail = $id_or_email->comment_author_email;
.
您列表中的电子邮件地址均以anonimus_<number>@anonimus.com
, 因此,不用定义长数组,只需使用正则表达式(RegEx)。
(Update) 还有一件事:
而不是get_avatar
过滤器/挂钩,您可能只需要使用pre_get_avatar_data
hook 从你的my_get_avatar()
功能,您只需更改化身URL。
这样(即使用上述挂钩),您的回调也可以与get_avatar_url()
而且不仅仅是get_avatar()
.
因此,只需移除add_filter(\'get_avatar\', \'my_get_avatar\', 10, 5);
从代码中删除(并删除my_get_avatar()
函数),然后改用以下命令:
add_filter( \'pre_get_avatar_data\', \'my_pre_get_avatar_data\', 10, 2 );
function my_pre_get_avatar_data( $args, $id_or_email ) {
// First, get the user\'s ID or email for unregistered comment authors.
if ( is_numeric( $id_or_email ) ) {
$user = get_user_by( \'id\', $id_or_email );
} elseif ( $id_or_email instanceof WP_Comment ) {
$email = $id_or_email->comment_author_email;
$user = get_user_by( \'id\', $id_or_email->user_id );
} elseif ( $id_or_email instanceof WP_Post ) {
$user = get_user_by( \'id\', $id_or_email->post_author );
} elseif ( $id_or_email instanceof WP_User ) {
$user = get_user_by( \'id\', $id_or_email->ID );
} else {
$user = get_user_by( \'email\', $id_or_email );
}
// For registered users, get the email in the database.
if ( empty( $email ) && $user && ! is_wp_error( $user ) ) {
$email = $user->user_email;
}
// Then check the user\'s email and use the custom avatar, if applicable.
if ( ! empty( $email ) && preg_match( \'/^anonimus_\\d+@anonimus\\.com$/\', $email ) ) {
$args[\'url\'] = \'http://example.com/wp-content/anonimus-avatar.png\';
}
return $args;
}
但是如果你想用
get_avatar
hook,那么请让我知道或者检查一下这个答案的修改。
针对您的评论:
请帮助将此应用于AMP页面。滤器
ampforwp_get_comments_gravatar
你真的应该在plugin support forums, 但是这次让我们做一个例外,您可以尝试以下操作,它覆盖ampforwp_get_comments_gravatar()
函数-是的,有一个同名的钩子,但我认为它不会起作用(因为their code 没有通过$comment
变量到挂钩回调)。
if ( ! function_exists( \'ampforwp_get_comments_gravatar\' ) ) :
function ampforwp_get_comments_gravatar( $comment ) {
global $redux_builder_amp;
if ( ! empty( $redux_builder_amp[\'ampforwp-display-avatar\'] ) ) {
return get_avatar( $comment );
}
return \'\';
}
endif;
那就是
untested, 但它应该会起作用。如果您需要进一步的定制帮助,请询问/发布其他问题。