Ci sono alcuni bit qui applicabili, ma il corto è questo codice in customize-preview.js
:
this.body.on( 'click.preview', 'a', function( event ) {
event.preventDefault();
self.send( 'scroll', 0 );
self.send( 'url', $(this).prop('href') );
});
Event.preventDefault impedisce che i collegamenti funzionino effettivamente. Il codice seguente invia quindi un messaggio all'indietro che lo dice a) scorrere di nuovo all'inizio della pagina eb) cambiare l'URL.
La ragione per la messaggistica qui è perché non c'è solo un iframe, ce ne sono due. La pagina a cui hai fatto clic viene effettivamente caricata all'interno di un altro iframe con le impostazioni del personalizzatore aggiunte ad esso (tramite un POST
app), quindi un effetto di dissolvenza viene utilizzato per sfumare quello vecchio e sfumare nel nuovo senza soluzione di continuità. Questo impedisce allo schermo di diventare bianco, brutto e lampeggiante quando passa alla nuova pagina.
Elimina anche la necessità di fare filtri e simili sul codice tema e potenzialmente modificare l'aspetto della pagina. Il tema viene quindi visualizzato così com'è, senza modifiche significative al suo contenuto.
Un codice simile esiste lì per impedire che l'invio dei moduli funzioni (non fa nulla) e così via.
È attivo il filtro per l'intercettazione e la gestione dei valori di personalizzazione class-wp-customize-setting.php
. La preview()
funzione aggiunge i filtri necessari per gestire i valori in entrata, la _preview_filter()
funzione è quel filtro. Prende semplicemente le chiamate get_option()
o get_theme_mod()
, si accorge quando si suppone che siano opzioni modificate e restituisce invece i valori modificati.
/wp-includes/class-wp-customize-manager.php
...