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

      Ciao DarioMarco,

      mi serve sapere quele errore ti da e vedere lo snippet così come lo aggiungi nel file per capire meglio il problema.

      0 Miglior Risposta Ringrazia Cita Rispondi

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

        Ciao Overklock e grazie per la tua risposta, io inserisco questo nel file function.php del mio tema
        [PHP]
        $hasaccess = 'true';
        $mypost = '35';

        apply_filters("pmpro_has_membership_access_filter", bool $hasaccess, WP_post $mypost, WP_user $myuser, array $post_membership_levels);[/PHP]

        e l'errore che mi riestituisce è questo

        Parse error: syntax error, unexpected '$hasaccess' (T_VARIABLE), expecting ',' or ')' in /web/htdocs/www.dariopower.it/home/wp-content/themes/wplms/functions.php on line 66

        0 Miglior Risposta Ringrazia Cita Rispondi

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

          L'errore dice che $hasaccess non è al posto giusto perché è preceduta da ```
          bool

          
          [PHP]
          function mia_funzione ( bool $var ) {
              // Do something
          }
          [/PHP]
          
          nel tuo caso invece lo snippet va scritto così:
          
          [PHP]
          $hasaccess = true;
          $mypost = 35;
          
          apply_filters("pmpro_has_membership_access_filter", $hasaccess, $mypost, $myuser, $post_membership_levels);
          [/PHP]
          
          Le virgolette per i booleani e per gli integer si possono omettere, le altre variabili sono dichiarate da qualche parte?
          0 Miglior Risposta Ringrazia Cita Rispondi

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

            Grazie mille, adesso non mi da errore, ma non funziona :bigsmile:
            gli ultimi parametri li ho eliminati, in quanto uno è relavtivo ad un range di utenti da inserire come id, mentre l'altro è relativo ai livelli a cui sono stati assengati ad una cerchia di utenti.
            Ho provato ad inserire i valore sia con gli apici che senza, ma il contenuto non viene filtrato.

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • 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
                                            Caricamento altri post
                                            Rispondi
                                            • Topic risposta
                                            Effettua l'accesso per rispondere
                                            • Da Vecchi a Nuovi
                                            • Da Nuovi a Vecchi
                                            • Più Voti