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

      Inserire apply filters

      Salve a tutti, dovrei inserire un codice in wordpress, o meglio un filter, ma non saprei come gestirlo, leggendo un po' la documentazione credo di doverlo inserire nel file function.php e modificarne i parametri, ma mi da un errore di sintassi.

      Quindi vorrei sapere se è corretta la mia procedura, oppure l'errore è dovuto al fatto che non devo inserirlo nel file functions.php

      Grazie per il vostro aiuto.

      0 Miglior Risposta Ringrazia Cita Rispondi

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