你需要加入get_avatar() 在某处有很多选择:
get\\u avatar()本身是可插拔的,因此您可以批量替换该函数,但它将<img>
标记,因此可能更容易挂钩get_avatar_url(), 它本身只是一个包装get_avatar_data(), 让get\\u avatar()仍然为您构建HTML,而挂接get\\u avatar\\u数据的明显点是pre_get_avatar_data 挂钩:
/**
* Filters whether to retrieve the avatar URL early.
*
* Passing a non-null value in the \'url\' member of the return array will
* effectively short circuit get_avatar_data(), passing the value through
* the {@see \'get_avatar_data\'} filter and returning early.
*
* @since 4.2.0
*
* @param array $args Arguments passed to get_avatar_data(), after processing.
* @param mixed $id_or_email The Gravatar to retrieve. Accepts a user ID, Gravatar MD5 hash,
* user email, WP_User object, WP_Post object, or WP_Comment object.
*/
$args = apply_filters( \'pre_get_avatar_data\', $args, $id_or_email );
这有点复杂,因为您需要处理许多不同类型的输入,但您可以借用调用下面的代码来实现这一点。在过滤器处理程序中,您需要确定用户、电子邮件或评论来自哪个国家,然后设置
$args[\'url\']
作为要使用的标志图像。
然而,这本身并不是那么简单:
注释可能是最简单的情况,因为您在WP\\u Comment对象中有注释者的IP地址;然后可以查找一次并将其存储为注释元,或者使用其他IP地址查找缓存方案;你不想因为每次页面加载时的每条评论都打电话给地理定位服务,按ID或WP\\U用户分类的用户可能也很好:你只需要在某个时候针对用户存储一个IP地址和国家/地区,然后再将其存储在用户元中就可以了,因为你可以查找作者用户,然后按上述步骤进行操作,但是如何处理电子邮件地址呢?您可以尝试查找一个用户并使用它,如果不匹配,也可以尝试添加注释,但您只想在可能的情况下执行一次,并缓存结果、成功或失败。也许是暂时的连载词典?但这并不是一个很好的解决方案