• 05-08-2014, 00:46:30
    #1
    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 ?
  • 05-08-2014, 09:18:58
    #2
    Ş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
    #3
    jebias adlı üyeden alıntı: mesajı görüntüle
    Ş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);
    Çok teşekkürler hemen deniyorum.
  • 08-10-2014, 18:35:48
    #4
    jebias adlı üyeden alıntı: mesajı görüntüle
    Şu kodu functions.php'ne ekleyip, $avatarlar dizisini kendine göre düzenle hocam;
    Üstad ben kodu çalıştıramadım. Acaba temadan mı kaynaklandı? Kesin çalışıyor değil mi 2 ci kod
  • 08-10-2014, 18:53:13
    #5
    selchak adlı üyeden alıntı: mesajı görüntüle
    Üstad ben kodu çalıştıramadım. Acaba temadan mı kaynaklandı? Kesin çalışıyor değil mi 2 ci kod
    Kodda 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ı.
  • 08-10-2014, 19:13:53
    #6
    jebias adlı üyeden alıntı: mesajı görüntüle
    Kodda 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ı.
    Hocam 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ı.

    Nedense foruma yükleyemedim bende şuraya dosyaları attım zamanınız varsa bakarsanız sevinirim.
  • 08-10-2014, 20:27:18
    #7
    selchak adlı üyeden alıntı: mesajı görüntüle
    Hocam 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ı.

    Nedense foruma yükleyemedim bende şuraya dosyaları attım zamanınız varsa bakarsanız sevinirim.
    Hocam framework.php'de şu kodlar arasına ekleyebilirsin;

    # 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:53
    #8
    hemen 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 --

    jebias adlı üyeden alıntı: mesajı görüntüle
    Hocam framework.php'de şu kodlar arasına ekleyebilirsin;
    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?
  • 09-10-2014, 12:03:07
    #9
    selchak adlı üyeden alıntı: mesajı görüntüle
    hemen 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?

    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);