web-dev-qa-db-ja.com

カスタマイザープレビューナビゲーションによるJavascriptの維持

カスタマイザでは、ユーザが設定を変更するたびに自動的にWebサイトのプレビューパネルに反映されるように、JavaScriptを追加してコントロールトランスポートをrefreshに設定できます。

// Body Background Color
wp.customize( 'body_bgr_color', function( control ) {
    control.bind( function( value ) {
        $( 'body' ).css( 'background-color', hex2rgba( value, 1 ) );
    } );
} );

私はcustomize_preview_initフックを使って私のスクリプトをエンキューしています。

この問題は、ユーザーがメインのナビゲーションで次のページに移動するたびに発生します。Javascriptの変更は失われますが、コントロールパネルには保存されます。ユーザーが新しいプレビューページに移動したときにJavaScriptを保存または再実行するにはどうすればよいですか。

2
Howdy_McGee

私はすべてをハードセーブ(ボタンクリック)で保存しているので、私はajax経由ですべてのオプションを更新することを避けようとしていました。プレビューペインがJSバインディングを設定しているときに、以下の操作を行います。コントロール値を要素に再適用する「変更」をトリガーします。私は確かにより良い選択肢に寛容ですが、これは私の場合にはうまくいきました:

jQuery( document ).ready( function( $ ) {

    // Body Background Color
    wp.customize( 'body_bgr_color', function( control ) {
        control.bind( function( value ) {
            $( 'body' ).css( 'background-color', hex2rgba( value ) );
        } );
        $( control ).trigger( 'change' );
    } );
} );
1
Howdy_McGee