問題描述
我想知道是否可以擴展 wp-admin/js/customize-control.js 中匿名 api 對象的方法。我需要使用自己的自定義邏輯覆蓋這些方法之一,但我懷疑這是不可能的,因為它被包裹在一個立即被調用的函數表達式中:
/* globals _wpCustomizeHeader, _wpMediaViewsL10n */
(function( exports, $ ){
// code
})( wp, jQuery );
據我所見,我無法從窗口對象中擴展原型,因為它是匿名執行的,不能從 window.wp.customize 獲得。任何想法,如果這樣的事情是可能的?甚至提到在.toggle() 方法文檔/描述:https://github.com/WordPress/WordPress/blob/master/wp-admin/js/customize-controls.js#L110 中覆蓋這一點,但我不知道是否意味着通過簡單地分派整個 JS 文件,將 WP 版本排隊並排隊自己,或者如果它們是或有些不同。
請注意,似乎應該可以使用 wp.customize.{method}.extend({ foo: // replace method foo here }),但這僅適用於公共基類/對象,而不適用於 wp-admin/js/customize-control.js
最佳解決方案
我會加強我對你的問題的小小評論。但再次提示; 我不是 JS 專家以下來源,提示僅用於使用 Customizer 進行不同的檢查,例如我的 sandbox 。
wp.customize
瞭解 WP 主題定製程序界面圍繞着理解 wp.customize JavaScript 對象。 wp.customize 對象很重要,您應該在開始時進行設置。
實例
以下小例子説明瞭這一點。起初我將 var api 設置為定製器的對象。之後,我將自定義字段設置為 api,並使用小型 jQuery 源來增強這一點,以刷新即時預覽的結果。
( function( $ ) {
var api = wp.customize;
// Site title and description.
api( 'blogname', function( value ) {
value.bind( function( to ) {
$( '#header h1 a, #footer a.site-name' ).html( to );
} );
} );
api( 'blogdescription', function( value ) {
value.bind( function( to ) {
$( '#header p.site-description' ).html( to );
} );
} );
} )( jQuery );
設置和控件
控制對象存儲在 wp.customize.control 中,設置對象存儲在 wp.customize 中。值班有很多功能,可以幫助你。
-
instance(id) – 從集合中獲取具有指定 ID 的對象。
-
has(id) – 如果集合包含具有指定 id 的對象,則返回 true,否則返回 false 。
-
add(id,value) – 使用指定的 id 和值將對象添加到集合。
-
remove(id) – 從集合中刪除對象。
-
create(id) – 使用默認構造函數創建一個新對象,並將其添加到集合中。
-
每個 (回調,上下文) – 迭代集合中的元素。
自定義設置
通過這些功能,我們可以增強自定義設置。
var api = wp.customize,
mysetting = api.instance( 'my_custom_setting' );
也可用於數組
var api = wp.customize,
mysetting = api.instance( 'my_custom_settings[my_custom_setting_field]' );
Get
在控制枱中查看結果。
console.log( api.instance( 'my_custom_settings[my_custom_setting_field]' ).get() );
Set
您還可以通過功能 set 更改設置值。
api.instance( 'my_custom_settings[my_custom_setting_field]' ).set( 'my new value' ) );
獲取控件,作為對象
console.log( api.control.instance( 'my_custom_setting_field' ) );
有用的來源
-
wp-admin /JS /customize-controls.js
-
wp-includes /JS /customize-preview.js
-
wp-includes /JS /customize-base.js
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。