私は自分のwpウェブサイトにローカルのアバターシステムを使いたいのですが、デフォルトのgavatarの代わりに私のサーバーからのアバターを返すようにget_avatar()
関数をフィルターしたいのです。
次のようなコードがあります。
class local_avatar{
function __construct(){
add_filter('get_avatar',array($this,'get_avatar'));
}
public function get_avatar($avatar , $id_or_email , $size = '96' , $default , $alt = false){
global $wpdb;
$upload = wp_upload_dir();
if(is_numeric($id_or_email)){
// the user id
$image = get_user_meta($id_or_email,'_ahaali_avatar',true);
if($image){
$image_path = $upload['baseurl'].'/avatar/'.$image;
$ahaali_avatar = '<img src="'.$image_path.'" width="'.$size.'" height="'.$size.'" />';
}else{
$image_path = 'http://0.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s='.$size;
$ahaali_avatar = '<img src="'.$image_path.'" width="'.$size.'" height="'.$size.'" />';
}
}elseif(is_string($id_or_email)){
// the user email
$user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM wp_users WHERE user_email = %s",
$id_or_email));
$image = get_user_meta($user_id,'_ahaali_avatar',true);
if($image){
$image_path = $upload['baseurl'].'/avatar/'.$image;
$ahaali_avatar = '<img src="'.$image_path.'" width="'.$size.'" height="'.$size.'" />';
}else{
$image_path = 'http://0.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s='.$size;
$ahaali_avatar = '<img src="'.$image_path.'" width="'.$size.'" height="'.$size.'" />';
}
}
return $ahaali_avatar;
}
}
そしてそれは以下のエラーを返します。
警告:40行目の/home/subhi/public_html/work/example.com/wp-content/plugins/ahaali_avatar/core.phpにlocal_avatar :: get_avatar()の引数2がありません
警告:40行目の/home/subhi/public_html/work/example.com/wp-content/plugins/ahaali_avatar/core.phpにlocal_avatar :: get_avatar()の引数4がありません
どうすればこれを解決できますか?
フィルタフックを宣言する際に、元のポスターにpriority, parameters
のペアがありませんでした。
add_filter( 'get_avatar', array( $this, 'get_avatar' ), 10, 5 );
コールバック関数が使用できるすべてのパラメータは5
です。
public function get_avatar( $avatar, $id_or_email, $size, $default, $alt )
{
return $avatar;
}
あなたは簡単にこの機能で新しいアバターを追加することができます:
// Custom Default Avatar
if ( !function_exists('addgravatar') ) {
function addgravatar( $avatar_defaults ) {
$myavatar = get_bloginfo('template_directory').'/images/custom-gravatar.jpg';
// Change path to your custom avatar
$avatar_defaults[$myavatar] = 'Custom Avatar';
// Change to your avatar name
return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'addgravatar' );
}
管理領域では、[設定]タブ - > [ディスカッション]の順に選択し、新しいアバターをデフォルトとして選択して[保存]をクリックします。