WP Customize JSメソッドを拡張することは可能ですか?


9

で匿名apiオブジェクトのメソッドを拡張できるかどうか疑問に思っています wp-admin/js/customize-control.js。これらのメソッドの1つを独自のカスタムロジックで上書きする必要がありますが、すぐに呼び出される関数式にラップされているため、それは不可能だと思います。

/* 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


3
api匿名であることは、のためだけの同義語ですwp.customizeアクセスグローバルである(3行目を参照します)。ただし、コントロールに使用されている「もう1つのオブジェクトモデル」がready関数を呼び出しているようにinitialize見えるため、メソッドを上書きする機会がない(つまり、手遅れになる)可能性がないため、何を拡張しようとしていますか?
bonger 2014

理論的には、それは理にかなっています-提案は高く評価されています。私の場合、このアプローチはかなりハックであり、私のユースケースに適した別のソリューションを考え出すことができたと感じました。ただし、実際に機能するコードを使用した回答は、ユースケースに他の選択肢がない人にとっても役立つ場合があります。とにかく、私が計画していたパフォーマンスはひどいものだったでしょう。
ブライアン

1
私はJSの専門家ではありません。しかし、小さなテーマにカスタマイザスクリプトを追加して、常に拡張機能を更新します。私は wp.customizeこのオブジェクトを操作して関数を追加します。ソースの例についてはこちらをご覧ください- github.com/bueltge/Documentation/blob/master/js/...に
bueltge

回答:


5

私はあなたの質問に対する私の小さなコメントを強化します。しかし、再びヒント。私はJSの専門家ではありません。フォローのソースであるヒントは、私のサンドボックスのように、さまざまなチェック、例のためにカスタマイザで遊ぶときにのみ使用されました。

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)–デフォルトのコンストラクターを使用して新しいオブジェクトを作成し、それをコレクションに追加します。
  • each(callback、context)–コレクション内の要素を繰り返し処理します。

カスタム設定

この機能を使用して、カスタム設定を拡張できます。

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' ) );

役立つソース

  • wp-admin / js / customize-controls.js
  • wp-includes / js / customize-preview.js
  • wp-includes / js / customize-base.js
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.