Тут є декілька бітів, але це короткий код у цьому 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 заважає фактично працювати посиланнями. Наступний код потім надсилає повідомлення вгору, повідомляючи його на a) прокрутіть назад вгорі сторінки та b) змініть URL-адресу.
Причина повідомлень тут полягає в тому, що немає лише одного iframe, є два. Сторінка, на яку ви натиснули, насправді завантажується всередину іншої рамки з доданими до неї налаштуваннями налаштованого інструмента (через POST
дійсно), тоді ефект зникання використовується для вицвітання старого та безперешкодного вицвітання нового. Це не дозволяє екрану стати білим і некрасивим і блимати при переході на нову сторінку.
Також виключається необхідність фільтрації та подібного коду теми та потенційно змінювати зовнішній вигляд сторінки. Тема, таким чином, відображається такою, яка є, без суттєвих змін у її змісті.
Подібний код існує там, щоб запобігти роботі надсилання форми (він просто нічого не робить) тощо.
Фільтр для перехоплення та обробки значень налаштування в class-wp-customize-setting.php
. preview()
Функція додає фільтри , необхідні для обробки вхідних значень, то _preview_filter()
функція є те , що фільтр. Він просто приймає get_option()
або get_theme_mod()
дзвінки, помічає, коли вони мають бути змінені параметри, і замість цього повертає змінені значення.
/wp-includes/class-wp-customize-manager.php
…