Intereting Posts
как изменить порядок отображения товаров в wp электронной коммерции Удалить действия, добавленные плагином SEO ultimate Plugin Переименование значений пользовательской таксономии Почему wp_dropdown_categories не выполняет поиск в подкатегориях в моей пользовательской таксономии 302 перенаправить на регистрацию с обратным прокси-сервером nginx Как я могу проверить, есть ли на определенной странице сгенерированной плагином или дочернем Обновление пользовательской мета из пользовательского поля после публикации не работает Исключить все страницы, кроме нескольких? WordPress Получить постоянную ссылку Rest API – создание раздела архива Сделать 'Howdy, ' функцией как кнопка выхода Как создать пользовательскую кнопку добавления медиа-мода? Таксономия + post_type Отображение иерархических подтерм пользовательской таксономии на основе глубины Функция AJAX не работает

customize-controls.js – расширение api.previewer

Я хочу удалить эту проверку -> if ( value._dirty ) из фрагмента кода ниже, но поскольку она находится в основном файле WordPress (customize-controls.js line 1919)

Я не могу редактировать это, мне нужно выполнить это из пользовательского js-файла моей темы, но я не знаю, как, как я полагаю, он должен быть расширен и установлен в очередь. код:

  // Initialize Previewer api.previewer = new api.Previewer({ container: '#customize-preview', form: '#customize-controls', previewUrl: api.settings.url.preview, allowedUrls: api.settings.url.allowed, signature: 'WP_CUSTOMIZER_SIGNATURE' }, { nonce: api.settings.nonce, query: function() { var dirtyCustomized = {}; api.each( function ( value, key ) { if ( value._dirty ) { dirtyCustomized[ key ] = value(); } } ); return { wp_customize: 'on', theme: api.settings.theme.stylesheet, customized: JSON.stringify( dirtyCustomized ), nonce: this.nonce.preview }; }, save: function() { var self = this, query = $.extend( this.query(), { action: 'customize_save', nonce: this.nonce.save } ), processing = api.state( 'processing' ), submitWhenDoneProcessing, submit; body.addClass( 'saving' ); submit = function () { var request = $.post( api.settings.url.ajax, query ); api.trigger( 'save', request ); request.always( function () { body.removeClass( 'saving' ); } ); request.done( function( response ) { // Check if the user is logged out. if ( '0' === response ) { self.preview.iframe.hide(); self.login().done( function() { self.save(); self.preview.iframe.show(); } ); return; } // Check for cheaters. if ( '-1' === response ) { self.cheatin(); return; } // Clear setting dirty states api.each( function ( value ) { value._dirty = false; } ); api.trigger( 'saved' ); } ); }; if ( 0 === processing() ) { submit(); } else { submitWhenDoneProcessing = function () { if ( 0 === processing() ) { api.state.unbind( 'change', submitWhenDoneProcessing ); submit(); } }; api.state.bind( 'change', submitWhenDoneProcessing ); } } }); 

Solutions Collecting From Web of "customize-controls.js – расширение api.previewer"

Из вашего комментария, я думаю, вы ошибаетесь в этой концепции. Вы хотите сохранить параметры темы после первой активации. Активировать тему не означает, что пользователь будет использовать настройку темы, поэтому я думаю, что нет никакого отношения к javascript-customizer, потому что он будет загружен, только если пользователь перейдет на экран настройки и потому что это код на стороне клиента , Есть лучшие способы.

Мое предложение состоит в том, чтобы использовать команды after_switch_theme и switch_theme :

  • after_switch_theme чтобы сохранить параметры темы после активации темы.
  • switch_theme чтобы удалить параметры темы, если тема деактивирована (необязательно)

Пример:

 add_action("after_switch_theme", "cyb_save_theme_options_on_activation"); function cyb_save_theme_options_on_activation() { set_theme_mod('background-color', '#FFF'); } 

Я думаю, было бы неплохо проверить, имеет ли добавленный / обновляемый параметр пользовательское значение пользователя; если это так, я думаю, что его нельзя менять. Например:

 add_action("after_switch_theme", "cyb_save_theme_options_on_activation"); function cyb_save_theme_options_on_activation() { if( get_theme_mod('background-color') == '' ) { set_theme_mod('background-color', '#FFF'); } } 

Если вы используете параметры темы вместо модов темы:

 add_action("after_switch_theme", "cyb_save_theme_options_on_activation"); function cyb_save_theme_options_on_activation() { //add_option adds the option if it doesn't exist in the database //Use update_option if you want to override existing option in the database or add it if doesn't exist add_option('background-color', '#FFF'); } 

Я все еще думаю, что вы ошибаетесь в этом подходе. Из вашего комментария вы хотите сохранить все параметры в базе данных, даже параметры со значениями по умолчанию, когда вы используете «Сохранить и опубликовать», а не активировать тему. Для этого вы можете использовать customize_save_after action hook:

 add_action( 'customize_save_after', 'customize_save_after' ); function customize_save_after( $wp_customize ) { //Save the theme options here }