Es gibt ein paar Punkte, die zutreffen, aber kurz gesagt, dieser Code in customize-preview.js
:
this.body.on( 'click.preview', 'a', function( event ) {
event.preventDefault();
self.send( 'scroll', 0 );
self.send( 'url', $(this).prop('href') );
});
Der event.preventDefault verhindert, dass die Links tatsächlich funktionieren. Der folgende Code sendet dann eine Nachricht zurück nach oben, in der er a) zum Seitenanfang zurückscrollt und b) die URL ändert.
Der Grund für die Nachricht hier ist, dass es nicht nur einen iframe gibt, sondern zwei. Die Seite, auf die Sie geklickt haben, wird tatsächlich in einem anderen Iframe mit den Einstellungen des hinzugefügten Customizers geladen (über ein POST
Ja). Anschließend wird ein Fade-Effekt verwendet, um die alte auszublenden und die neue Seite nahtlos einzublenden. Dadurch wird verhindert, dass der Bildschirm weiß und hässlich wird und blinkt, wenn zur neuen Seite gewechselt wird.
Außerdem müssen Sie nicht mehr nach Themencode filtern und möglicherweise das Erscheinungsbild der Seite ändern. Das Thema wird so angezeigt, wie es ist, ohne dass wesentliche Änderungen am Inhalt vorgenommen wurden.
Ein ähnlicher Code existiert dort, um zu verhindern, dass die Formularübermittlung überhaupt funktioniert (es tut einfach nichts) und so weiter.
Der Filter zum Abfangen und Behandeln der Customizer-Werte befindet sich in class-wp-customize-setting.php
. Die preview()
Funktion fügt die Filter hinzu, die für die Verarbeitung der eingehenden Werte benötigt werden. Die _preview_filter()
Funktion ist dieser Filter. Sie nimmt einfach die Aufrufe get_option()
oder entgegen get_theme_mod()
, bemerkt, wann es sich um geänderte Optionen handelt, und gibt stattdessen die geänderten Werte zurück.
/wp-includes/class-wp-customize-manager.php