• 06-01-2020, 16:09:22
    #1
    Herkese selam. WP sitemde özel bir üyelik eklentisi kullanıyorum ve bu eklenti üyelerin yaptığı çeşitli aksiyonlara göre üyelere puan veriyor. Üyeler puan kazanıyorlar.
    Benim yapmak istediğim şey ise; wp de oluşturduğum sayfalara puan kısıtı koymak. Örneğin oluşturduğum sayfa için 500 puan limit koyacağım ve 500 puanın altındaki üyeler bu sayfaya giremeyecekler.
    Puan değerlerine göre içerik kısıtlaması yapılabilir mi?

    Üye puanları usermeta tablosunda şu şekilde yer alıyor;
    https://resmim.net/preview/SpTEcW.jpg
    Id numarası 1 olan üyenin 66 puanı var örneğin.

    Fonksiyon veya eklenti olarak destek sağlayabilecek arkadaşlar varsa yardımlarını bekliyorum.

    --------------------------------------------------------
    Çözümü ücretsiz olarak sunan @bilimokur; a teşekkür ederim. Hazırladığı kodlar şöyle;

    bilimokur adlı üyeden alıntı: mesajı görüntüle
    function puana_gore_sayfa_engelle() {
    if( current_user_can( 'manage_options' ) ) { // Adminler için yönlendirmeyi devre dışı bıraktık.
    return;
    }
    
    $min_point = 500; // puan limiti
    $blocked_page_ids = array( 788, 11, 12 ); // Engellenecek sayfaların id leri.
    $redirect_page_id = 895; // Engellenenlerin yönlendirileceği sayfa. (sayfaya puanınız yetmedi vs yazabilirsiniz.)
    
    if( is_user_logged_in() && is_page( $blocked_page_ids ) ) {
    $user_point = (int)get_user_meta( get_current_user_id(), 'points', true );
    
    if( $user_point < $min_point ) {
    wp_redirect( get_page_link( $redirect_page_id ) );
    exit();
    }
    } else {
    if( is_page( $blocked_page_ids ) ) {
    wp_redirect( get_page_link( $redirect_page_id ) );
    exit();
    }
    }
    }
    
    add_action( 'template_redirect', 'puana_gore_sayfa_engelle' );
    functions.php ye ekleyin. id leri değiştirmeyi unutmayın.
  • 06-01-2020, 16:14:03
    #2
    veozegya adlı üyeden alıntı: mesajı görüntüle
    Herkese selam. WP sitemde özel bir üyelik eklentisi kullanıyorum ve bu eklenti üyelerin yaptığı çeşitli aksiyonlara göre üyelere puan veriyor. Üyeler puan kazanıyorlar.
    Benim yapmak istediğim şey ise; wp de oluşturduğum sayfalara puan kısıtı koymak. Örneğin oluşturduğum sayfa için 500 puan limit koyacağım ve 500 puanın altındaki üyeler bu sayfaya giremeyecekler.
    Puan değerlerine göre içerik kısıtlaması yapılabilir mi?

    Üye puanları usermeta tablosunda şu şekilde yer alıyor;
    https://resmim.net/preview/SpTEcW.jpg
    Id numarası 1 olan üyenin 66 puanı var örneğin.

    Fonksiyon veya eklenti olarak destek sağlayabilecek arkadaşlar varsa yardımlarını bekliyorum.
    Pm Atabilirisiniz, En Uygun Ücrete Kaliteli Destek Sağlarım, İş Bitimi Desteğe DEVAM
  • 06-01-2020, 18:15:37
    #3
    function puana_gore_sayfa_engelle() {
        if( current_user_can( 'manage_options' ) ) { // Adminler için yönlendirmeyi devre dışı bıraktık.
            return;
        }
    
        $min_point = 500; // puan limiti
        $blocked_page_ids = array( 788, 11, 12 ); // Engellenecek sayfaların id leri.
        $redirect_page_id = 895; // Engellenenlerin yönlendirileceği sayfa. (sayfaya puanınız yetmedi vs yazabilirsiniz.)
    
        if( is_user_logged_in() && is_page( $blocked_page_ids ) ) {
            $user_point = (int)get_user_meta( get_current_user_id(), 'points', true );
    
            if( $user_point < $min_point ) {
                wp_redirect( get_page_link( $redirect_page_id ) );
                exit();
            }
        } else {
            if( is_page( $blocked_page_ids ) ) {
                wp_redirect( get_page_link( $redirect_page_id ) );
                exit();
            }
        }
    }
    
    add_action( 'template_redirect', 'puana_gore_sayfa_engelle' );
    functions.php ye ekleyin. id leri değiştirmeyi unutmayın.
  • 06-01-2020, 18:25:51
    #4
    bilimokur adlı üyeden alıntı: mesajı görüntüle
    function puana_gore_sayfa_engelle() {
        $blocked_page_ids = array( 10, 11, 12 ); // Engellenecek sayfaların id leri.
    
        if( is_user_logged_in() && is_page( $blocked_page_ids ) ) {
            $user_point = (int)get_user_meta( get_current_user_id(), 'points', true );
    
            if( $user_point < 500 ) {
                wp_redirect( home_url( '/' ) );
                exit();
            }
        } else {
            if( is_page( $blocked_page_ids ) ) {
                wp_redirect( home_url( '/' ) );
                exit();
            }
        }
    }
    
    add_action( 'init', 'puana_gore_sayfa_engelle' );
    functions.php ye ekleyin. id leri değiştirmeyi unutmayın.
    Yanıtınız için teşekkürler. Kodları ekledim fakat site This page isn’t working **** redirected you too many times.ERR_TOO_MANY_REDIRECTS hatası veriyor bu kodları eklediğimde. Bir şeyi yanlış mı yapıyorum acaba?
  • 06-01-2020, 18:27:08
    #5
    Test etmeden attım hocam. Düzenledim. Tekrar dener misin?
  • 06-01-2020, 18:31:01
    #6
    bilimokur adlı üyeden alıntı: mesajı görüntüle
    Test etmeden attım hocam. Düzenledim. Tekrar dener misin?
    Şuan hata gitti, fakat kod etkili olmadı, id lerini yazdığım sayfalara 60 puanlı bir hesaptan girebiliyorum. Yine de teşekkürler hocam denediğiniz için.



    Konu günceldir.
  • 07-01-2020, 11:56:32
    #7
    Kodu güncelledim. Yaptığım değişiklikler:
    1. Adminler için engellemeyi kaldırdım.
    2. Puanı yetmeyenlerin yönlendirileceği sayfayı size bıraktım. Hangi sayfaya yönlendirilmelerini istiyorsanız onun id sini yazın. Sayfaya puanınız yetmedi vs yazabilirsiniz.
    3. $min_point = 500; kısmından puan limitini değiştirebilirsiniz.