Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. CMS & Piattaforme Self-Hosted
    5. Inserire apply filters
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • overclokk
      overclokk Moderatore • ultima modifica di

      Cosa vuol dire che non funziona?

      Mi devi spiegare meglio cosa devi fare.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • D
        dariomarco User Attivo • ultima modifica di

        Praticamente ho un area ristretta del mio sito accessibile solo se iscrivi al leve_1 , tutti gli utenti occasionali di passaggio e non registrati non possono vedere queste aree ristrette.

        La ristrezione va per categoria, quindi tutti i post di quella categoria sono ristretti.

        Volevo escludere un post da quella categoria e renderlo accessibile a tutti, ho trovato quindi un documento sul sito dello sviluppatore in cui dice che inserendo quel filtro e mettendo le variabili relative ai post ai livelli o agli utenti, i posto vengono resi pubblici a tutti.

        Ho inserito il filtro come mi hai corretto tu, ma pur visitando quell'articolo, ancora appare ristretto.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • overclokk
          overclokk Moderatore • ultima modifica di

          Metti qui il link senza www e senza http che guardo la documentazione.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • D
            dariomarco User Attivo • ultima modifica di

            paidmembershipspro.com/hook/pmpro_has_membership_access_filter/

            Grazie mille 🙂

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • overclokk
              overclokk Moderatore • ultima modifica di

              Ok, ora ho capito, qui c'è la documentazione della funzione che devi usare per appendere la tua callback all'evento "pmpro_has_membership_access_filter" https://developer.wordpress.org/reference/functions/add_filter/

              Prova così.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • D
                dariomarco User Attivo • ultima modifica di

                Grazie overclokk, ho estrapolato qualcosa, ma purtroppo mi da errore appena entro in un contenuto ristretto senza essere autorizzato.

                [PHP]
                /* funzione escludi */
                function my_pmpro_has_membership_access_filter( $hasaccess, $mypost, $myuser, $post_membership_levels ) {

                $id_contenuti = array(35,36);

                // Controllo l’accesso
                if( ! $hasaccess ) {
                      // Se questo post è associato ad un livello di accesso o è bloccato
                    if ( ! empty( $post_membership_levels ) && pmproap_isPostLocked( $mypost->ID ) ) {
                       
                            // imposta l’accesso libero
                            if ( in_array($mypost->id, $id_contenuti)) {
                                $hasaccess = true;
                        }
                    }
                }
                
                return $hasaccess;
                

                }
                add_filter( 'pmpro_has_membership_access_filter', 'my_pmpro_has_membership_access_filter', 20, 4 );
                [/PHP]

                mi da un errore su questa linea di codice
                if ( ! empty( $post_membership_levels ) && pmproap_isPostLocked( $mypost->ID ) ) {

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • overclokk
                  overclokk Moderatore • ultima modifica di

                  Quella funzione è un po' confusionaria, troppe if indentate che rendono difficile la lettura, e poi senza errore non posso sapere il problema.

                  Prova a fare così, parti al contrario:

                  [PHP]
                  function my_pmpro_has_membership_access_filter( $hasaccess, $mypost, $myuser, $post_membership_levels ) {

                  // imposta l’accesso libero
                  if ( in_array($mypost->id, [35,36])) {
                      $hasaccess = true;
                  }
                  
                  return $hasaccess;
                  

                  }
                  add_filter( 'pmpro_has_membership_access_filter', 'my_pmpro_has_membership_access_filter', 20, 4 );
                  [/PHP]

                  Non è completa, poi la sistemiamo ma prima meglio partire semplici.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • D
                    dariomarco User Attivo • ultima modifica di

                    In questo modo funziona tutto, o meglio, tutte le aree con restrizioni vengono ristrette, compreso gli articoli con id 35 e 36.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • overclokk
                      overclokk Moderatore • ultima modifica di

                      Cioè il 35 e il 36 sono sempre privati e non pubblici??

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • D
                        dariomarco User Attivo • ultima modifica di

                        Si, esattamente

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • overclokk
                          overclokk Moderatore • ultima modifica di

                          [PHP]
                          function my_pmpro_has_membership_access_filter( $hasaccess, $mypost, $myuser, $post_membership_levels ) {

                          var_dump($hasaccess);
                          
                          return $hasaccess;
                          

                          }
                          add_filter( 'pmpro_has_membership_access_filter', 'my_pmpro_has_membership_access_filter', 20, 4 );
                          [/PHP]

                          Dimmi che cosa ti ritorna il var_dump, dovresti vederlo sullo schermo.

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • D
                            dariomarco User Attivo • ultima modifica di

                            bool(false)

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • overclokk
                              overclokk Moderatore • ultima modifica di

                              Ok, ora dimmi cosa ritornano i var_dump qui sotto, ho anche messo momentaneamente return true per vedere se visualizzi tutti i post anche senza avere i permessi, poi lo rimettiamo a posto, meglio se provi proprio nelle pagine 35 e 36:

                              [PHP]
                              function my_pmpro_has_membership_access_filter( $hasaccess, $mypost, $myuser, $post_membership_levels ) {

                              var_dump( $mypost->id );
                              var_dump( in_array( $mypost->id, [35,36] ) );
                              
                              return true;
                              

                              }
                              add_filter( 'pmpro_has_membership_access_filter', 'my_pmpro_has_membership_access_filter', 20, 4 );
                              [/PHP]

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • D
                                dariomarco User Attivo • ultima modifica di

                                ID 35 mi esce
                                string(0) "" bool(false)
                                ID 36 mi esce
                                string(0) "" bool(false)
                                id di una pagina qualsiasi protetta
                                string(0) "" bool(false)

                                Gli articoli si vedono tutti, anche per chi ha restrizioni.

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • overclokk
                                  overclokk Moderatore • ultima modifica di

                                  35 e 36 sono quelli giusti?

                                  Che cosa ti ritornava var_dump( $mypost->id ); ?

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • D
                                    dariomarco User Attivo • ultima modifica di

                                    mi ritornano 0

                                    string(0) "" 
                                    

                                    per avere una maggiore certezza ho sostituito l'id 36 con 11116 che sono sicuro che sia protetto

                                    [PHP]function my_pmpro_has_membership_access_filter( $hasaccess, $mypost, $myuser, $post_membership_levels ) {

                                    var_dump( $mypost->id );
                                    var_dump( in_array( $mypost->id, [35,11116] ) );
                                    
                                    return true;
                                    

                                    }
                                    add_filter( 'pmpro_has_membership_access_filter', 'my_pmpro_has_membership_access_filter', 20, 4 );[/PHP]

                                    ma il risultato è sempre quello, credo che non rilevi l'id del post a questo punto.

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • overclokk
                                      overclokk Moderatore • ultima modifica di

                                      Vediamo se almeno $mypost esiste:

                                      var_dump( $mypost );

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • D
                                        dariomarco User Attivo • ultima modifica di

                                        Credo che tu abbia fatto bingo!!! :figo2:
                                        Questo è quello che appare all'inizio di tutto

                                        
                                        object(WP_Post)#30302 (24) { ["ID"]=> int(35) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2014-03-24 00:28:00" ["post_date_gmt"]=> string(19) "2014-03-24 00:28:00" ["post_content"]=> string(10974) "
                                        segue il solo contentuo del post
                                        
                                        

                                        Questo è quello che appare prima dell'articolo

                                         "["post_title"]=> string(22) "La metrica di un brano" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(22) "la-metrica-di-un-brano" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2020-05-10 13:33:19" ["post_modified_gmt"]=> string(19) "2020-05-10 11:33:19" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(48) "https://www.dariopower.it/la-metrica-di-un-brano/" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "4" ["filter"]=> string(3) "raw" } string(0) "" bool(false) int(35) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2014-03-24 00:28:00" ["post_date_gmt"]=> string(19) "2014-03-24 00:28:00" ["post_content"]=> string(10974) "
                                        segue quindi il contenuto dell'articolo
                                        
                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        • overclokk
                                          overclokk Moderatore • ultima modifica di

                                          Ho trovato il problema, colpa mia che non me ne sono accorto, l'ID è maiuscolo e non minuscolo, e son cose che dovrei sapere a memoria :fumato:

                                          Prova:
                                          var_dump( $mypost->ID );

                                          E probabilmente ora dovrebbe funzionare:

                                          [PHP]
                                          function my_pmpro_has_membership_access_filter( $hasaccess, $mypost, $myuser, $post_membership_levels ) {

                                          // imposta l’accesso libero
                                          if ( in_array($mypost->ID, [35,36])) {
                                              $hasaccess = true;
                                          }
                                          
                                          return $hasaccess;
                                          

                                          }
                                          add_filter( 'pmpro_has_membership_access_filter', 'my_pmpro_has_membership_access_filter', 20, 4 );
                                          [/PHP]

                                          0 Miglior Risposta Ringrazia Cita Rispondi

                                            1 Risposta Ultima Risposta
                                          • D
                                            dariomarco User Attivo • ultima modifica di

                                            Funziona!!!!!

                                            0 Miglior Risposta Ringrazia Cita Rispondi

                                              1 Risposta Ultima Risposta
                                            Caricamento altri post
                                            Rispondi
                                            • Topic risposta
                                            Effettua l'accesso per rispondere
                                            • Da Vecchi a Nuovi
                                            • Da Nuovi a Vecchi
                                            • Più Voti