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.
    • 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
                                          • overclokk
                                            overclokk Moderatore • ultima modifica di

                                            Vediamo se almeno $mypost esiste:

                                            var_dump( $mypost );

                                            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