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. Filtro replace testo
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • overclokk
      overclokk Moderatore • ultima modifica di

      Filtro replace testo

      Ciao Apthu,

      da quello che vedo in pratica stai eliminando 'img src="miosito.it' a tutto il testo, in questo modo rompi anche il o i tag img, che cosa vuoi ottenere esattamente?

      0 Miglior Risposta Ringrazia Cita Rispondi

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

        Se vuoi migliorare il caricamento delle immagini usa uno dei tanti plugin che applicano il lazyload, cambiare l'url per renderla relativa invece che assoluta è pressoché ininfluente per le performance.

        Se invece vuoi farlo a scopo didattico allora ci possiamo lavorare su.

        0 Miglior Risposta Ringrazia Cita Rispondi

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

          @Apthu said:

          >function replace_text($text) {    
              $text = str_replace('<a href', '<a class="links" href', $text);
              return $text;
          }
          add_filter('the_content', 'replace_text');  
          >```
          
          
          
          Questo snippet funziona solo lato front end del tuo sito perché usa l'hook 'the_content'.
          
          Se vuoi filtrare il testo al salvataggio allora l'hook da usare è differente.
          0 Miglior Risposta Ringrazia Cita Rispondi

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

            Potresti usare 'save_post' https://developer.wordpress.org/reference/hooks/save_post/ o ancora meglio "save_post_{$post->post_type}" https://developer.wordpress.org/reference/hooks/save_post_post-post_type/

            0 Miglior Risposta Ringrazia Cita Rispondi

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

              Cosa vuol dire che non funzionano del tutto?

              0 Miglior Risposta Ringrazia Cita Rispondi

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

                Hai visto la documentazione?

                Come e dove hai scritto il codice?

                0 Miglior Risposta Ringrazia Cita Rispondi

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

                  Non funziona perché 'save_post' passa tre parametri di cui il primo è l'id del post, il secondo l'oggetto del post e il terzo un valore boleano che indica se stai aggiornando o salvando un nuovo contenuto, tu hai usato la tua funzione senza cambiare nulla e così non funzionerà mai, anzi, probabilmente nel log ci sono degli errori.

                  Add ogni modo c'è un hook che viene eseguito prima di 'save_post' che è 'wp_insert_post_data' https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

                  Se leggi bene la documentazione ti da uno snippet di esempio:

                  [PHP]
                  function filter_handler( $data , $postarr ) {
                  // do something with the post data
                  return $data;
                  }

                  add_filter( 'wp_insert_post_data', 'filter_handler', '99', 2 );
                  [/PHP]

                  La variabile $data è un array e per accedere al contenuto puoi usare la chiave 'post_content' in questo modo:

                  [PHP]
                  $data['post_content']
                  [/PHP]

                  In questo modo puoi cambiare il contenuto dell'articolo.

                  0 Miglior Risposta Ringrazia Cita Rispondi

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

                    Il mio ultimo post è proprio il codice che ti serve, devi solo adattarlo alle tue esigenze aggiungendo per str_replace che hai nel tuo codice, ho solo sostituito l'hook con uno più adatto allo scopo, tutto il resto è invariato.

                    0 Miglior Risposta Ringrazia Cita Rispondi

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

                      La variabile $data è un array e sopra ti avevo indicato come usarla per il contenuto:

                      [PHP]$data['post_content'][/PHP]

                      0 Miglior Risposta Ringrazia Cita Rispondi

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

                        Funziona lo stesso perché la funzione str_replace ($search, $replace, $subject, &$count = null) accetta sia stringe che array di stringhe nei suoi primi 3 parametri https://www.php.net/manual/en/function.str-replace.php e visto che $data è un array che contiene stringhe allora non da errore.

                        Però nel tuo caso è meglio essere più espliciti nel codice per evitare incomprensioni inserendo solo la parte che deve essere modificata e non tutto l'array così eviti anche che se un giorno tu volessi usare 'a href' nel titolo questo non venga sostituito.

                        Di seguito la tua funzione semplificata con solo quello che ti serve.

                        [PHP]
                        function filter_handler( array $data ) {
                        $data['post_content'] = str_replace('a href', 'a class="links" href', $data['post_content']);
                        return $data;
                        }
                        add_filter( 'wp_insert_post_data', 'filter_handler', '99' );[/PHP]

                        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