テーマカスタマイザにJavaScriptを追加しようとしています。私のJSファイルは問題なくロードされ、私のdocument readyイベントは動作しますがwp.customize.bind()
は私のコールバックを呼び出していません。
jQuery(document).on('ready', function(){
console.log('binding')
wp.customize.bind('ready', function(){
console.log('ready')
})
})
binding
はコンソールに出力されますが、ready
は出力されません。
何が足りないの?ここにJavaScriptを使用することに関するドキュメントはほとんどまたは全くないようです。
カスタマイザのready
イベントハンドラをjQueryのevent
ハンドラの中に入れないでください。カスタマイザready
はjQuery ready
でトリガーするので、イベントハンドラを追加するのが遅すぎます。ただしてください:
wp.customize.bind('ready', function(){
console.log('ready');
});
あなたのJSはその依存関係としてcustomize-controls
スクリプトでエンキューされる必要があります。 customize_controls_enqueue_scripts
アクションをエンキューします。
私は同じ問題を抱えていました。それが私にとって縛られていなかったのは、私のコンソールでこのエラー"Uncaught TypeError: Cannot read property 'unsync' of undefined"
があったからです。
$wp_customize->remove_setting( 'header_textcolor' );
を使用してテーマテンプレートからheader_textcolor
設定を削除しましたが、まだjsで参照されていたためです。
これを修正した後、バインドは意図したとおりに動作しました。