匿名のapi
オブジェクトのメソッドを wp-admin/js/customize-control.js
に拡張することは可能かどうか疑問に思います。これらのメソッドのいずれかを自分のカスタムロジックで上書きする必要がありますが、すぐに呼び出される関数式にラップされているため、不可能だと思います。
/* 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の専門家ではありません。フォローソース、ヒントは、さまざまなチェック、たとえばmy sandbox のためにカスタマイザで遊ぶときにのみ使用されました。
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
に格納されます。値クラスにはたくさんの機能がありますが、役に立ちます。
この機能により、カスタム設定を強化することができます。
var api = wp.customize,
mysetting = api.instance( 'my_custom_setting' );
配列にも使える
var api = wp.customize,
mysetting = api.instance( 'my_custom_settings[my_custom_setting_field]' );
コンソールで結果を確認してください。
console.log( api.instance( 'my_custom_settings[my_custom_setting_field]' ).get() );
関数set
を使って設定値を変更することもできます。
api.instance( 'my_custom_settings[my_custom_setting_field]' ).set( 'my new value' ) );
console.log( api.control.instance( 'my_custom_setting_field' ) );