Wordpress sitemde yazılarıma gelen yorumlarda ziyaretçilerin yorumlarındaki avatarları rastgele vermek istiyorum.Wordpress'in kendine ait Ayarlar>Tartışma menüsünde bu seçenek var (Retro, MonsterID gibi..) ama ben kendi belirlediğim avatarların rastgele verilmesini istiyorum bunu nasıl yapabilirim ?
Yani bi nevi Retro yada MonsterID'deki avatarları kendi istediklerimle değiştirebilir miyim ?
Ziyaretçi yorumlarına rastgele avatar verme
9
●886
- 05-08-2014, 09:18:58Şu kodu functions.php'ne ekleyip, $avatarlar dizisini kendine göre düzenle hocam;
/** * Avatar fonksiyonuna filtre ekliyoruz */ add_filter('get_avatar', function($avatar, $user, $size, $alt){ if (is_numeric($user) || $user->user_id != 0) // sisteme üyeyse direk kendi avatarı gösterilecek return $avatar; // istediğin kadar avatar'ı bu şekilde ekleyebilirsiniz $avatarlar = array( 'https://www.r10.net/images/logom7.png', 'https://www.r10.net/image.php?u=53231&dateline=1345824368', 'https://www.r10.net/images/rankr10/rank0.gif' ); return '<img src="'.$avatarlar[array_rand($avatarlar)].'" width='.$size.' height='.$size.' alt="'.$alt.'"/>'; }, 1, 4);edit;
Wordpress kendi sitesindeki bir örnekte kullanıcı kontrolünü daha detaylı birşekilde yapmış, bunu kullanırsanız daha iyi olur;
/** * Avatar fonksiyonuna filtre ekliyoruz */ add_filter('get_avatar', function($avatar, $id_or_email, $size, $default, $alt){ $user = false; if ( is_numeric( $id_or_email ) ) { $id = (int) $id_or_email; $user = get_user_by( 'id' , $id ); } elseif ( is_object( $id_or_email ) ) { if ( ! empty( $id_or_email->user_id ) ) { $id = (int) $id_or_email->user_id; $user = get_user_by( 'id' , $id ); } } else { $user = get_user_by( 'email', $id_or_email ); } if ($user && is_object($user)) return $avatar; // istediğin kadar avatar'ı bu şekilde ekleyebilirsiniz $avatarlar = array( 'https://www.r10.net/images/logom7.png', 'https://www.r10.net/image.php?u=53231&dateline=1345824368', 'https://www.r10.net/images/rankr10/rank0.gif' ); return '<img src="'.$avatarlar[array_rand($avatarlar)].'" width='.$size.' height='.$size.' alt="'.$alt.'"/>'; }, 1, 5); - 05-08-2014, 22:32:36Çok teşekkürler hemen deniyorum.jebias adlı üyeden alıntı: mesajı görüntüle
- 08-10-2014, 18:35:48Üstad ben kodu çalıştıramadım. Acaba temadan mı kaynaklandı? Kesin çalışıyor değil mi 2 ci kodjebias adlı üyeden alıntı: mesajı görüntüle
- 08-10-2014, 18:53:13Kodda bir sorun görünmüyor hocam, temandan kaynaklanıyor olabilir. Herhangi bir hata alıyormusun? Hata yoksa, temanda get_avatar fonksiyonu kullanılmıyordur, kullanılan fonksiyona eklemek lazım bu kodları.selchak adlı üyeden alıntı: mesajı görüntüle
- 08-10-2014, 19:13:53Hocam eklemeye çalıştım komple site gidiyor. Benim tema function.php yi framework.php ye yönlendiriyor. O da alışılmış functions'dan biraz farklı.jebias adlı üyeden alıntı: mesajı görüntüle
Nedense foruma yükleyemedim bende şuraya dosyaları attım zamanınız varsa bakarsanız sevinirim. - 08-10-2014, 20:27:18Hocam framework.php'de şu kodlar arasına ekleyebilirsin;selchak adlı üyeden alıntı: mesajı görüntüle
# setup theme filters public static function filters() { # WordPress filters add_filter( 'wp_title', 'it_wp_title', 10, 2 ); add_filter( 'widget_text', 'do_shortcode' ); add_filter( 'widget_text', 'shortcode_unautop'); add_filter( 'get_comment_author_link', 'author_link_new_window' ); #add_filter( 'wp_redirect', 'wpse12721_wp_redirect' ); add_filter( 'bp_get_signup_page', "it_redirect_bp_signup_page"); }şöyle olucak;
# setup theme filters public static function filters() { # WordPress filters add_filter( 'wp_title', 'it_wp_title', 10, 2 ); add_filter( 'widget_text', 'do_shortcode' ); add_filter( 'widget_text', 'shortcode_unautop'); add_filter( 'get_comment_author_link', 'author_link_new_window' ); #add_filter( 'wp_redirect', 'wpse12721_wp_redirect' ); add_filter( 'bp_get_signup_page', "it_redirect_bp_signup_page"); /** * Avatar fonksiyonuna filtre ekliyoruz */ add_filter('get_avatar', function($avatar, $id_or_email, $size, $default, $alt){ $user = false; if ( is_numeric( $id_or_email ) ) { $id = (int) $id_or_email; $user = get_user_by( 'id' , $id ); } elseif ( is_object( $id_or_email ) ) { if ( ! empty( $id_or_email->user_id ) ) { $id = (int) $id_or_email->user_id; $user = get_user_by( 'id' , $id ); } } else { $user = get_user_by( 'email', $id_or_email ); } if ($user && is_object($user)) return $avatar; // istediğin kadar avatar'ı bu şekilde ekleyebilirsiniz $avatarlar = array( 'https://www.r10.net/images/logom7.png', 'https://www.r10.net/image.php?u=53231&dateline=1345824368', 'https://www.r10.net/images/rankr10/rank0.gif' ); return '<img src="'.$avatarlar[array_rand($avatarlar)].'" width='.$size.' height='.$size.' alt="'.$alt.'"/>'; }, 1, 5); }Ama hatanın tam olarak ne olduğunu bulmamız lazım, ftp ile sitenize bağlanıp ana dizinde yada temanızın dizininde .error_log, error_log dosyaları varsa onları paylaşabilirmisiniz hocam? - 09-10-2014, 09:40:53hemen deniyorum hocam çok sağ olun. Dediğiniz dosyaları bulup onları da paylaşacağım
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 09:40:53 -->-> Daha önceki mesaj 09:20:23 --
Ustad kodlar çalıştı ama bir sorun var. Atadığı değer durmadan değişiyor. Yani sayfayı yenilediğiniz de resimlerde yenileniyor. Ravatar diye bir plugin buldum ama taaa 6 sene öncesininmiş. İp ye göre sabit kalmasını nasıl sağlarız bu resimlerin? Giriş yaptığımı tabi değişecek şekilde. Var mı bir çözüm?jebias adlı üyeden alıntı: mesajı görüntüle - 09-10-2014, 12:03:07selchak adlı üyeden alıntı: mesajı görüntüle
Hocam ip ile yaparsak, veritabanına kayıt etmemiz gerekicek, onun yerine çerez kullanarak daha basit çözüm üretebiliriz, şöyle;
/** ** Avatar fonksiyonuna filtre ekliyoruz **/ add_filter('get_avatar', function($avatar, $id_or_email, $size, $default, $alt) { $user = false; if ( is_numeric( $id_or_email ) ) { $id = (int) $id_or_email; $user = get_user_by( 'id' , $id ); } elseif ( is_object( $id_or_email ) ) { if ( ! empty( $id_or_email->user_id ) ) { $id = (int) $id_or_email->user_id; $user = get_user_by( 'id' , $id ); } } else { $user = get_user_by( 'email', $id_or_email ); } if ($user && is_object($user)) return $avatar; // istediğin kadar avatar'ı bu şekilde ekleyebilirsiniz $avatarlar = array( 'https://www.r10.net/images/logom7.png', 'https://www.r10.net/image.php?u=53231&dateline=1345824368', 'https://www.r10.net/images/rankr10/rank0.gif' ); if(isset($_COOKIE['profil_resmi']) && in_array($_COOKIE['profil_resmi'], $avatarlar)){ $avatar_son = $_COOKIE['profil_resmi']; }else{ $avatar_son = $avatarlar[array_rand($avatarlar)]; @setcookie('profil_resmi', $avatar_son); } return '<img src="'.$avatar_son.'" width='.$size.' height='.$size.' alt="'.$alt.'"/>'; }, 1, 5);