web-dev-qa-db-ja.com

wp.​​customize.bind readyイベントが発生していません

テーマカスタマイザに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を使用することに関するドキュメントはほとんどまたは全くないようです。

6
Arcath

カスタマイザのreadyイベントハンドラをjQueryのeventハンドラの中に入れないでください。カスタマイザreadyはjQuery readyでトリガーするので、イベントハンドラを追加するのが遅すぎます。ただしてください:

wp.customize.bind('ready', function(){
    console.log('ready');
});

あなたのJSはその依存関係としてcustomize-controlsスクリプトでエンキューされる必要があります。 customize_controls_enqueue_scriptsアクションをエンキューします。

2
Weston Ruter

私は同じ問題を抱えていました。それが私にとって縛られていなかったのは、私のコンソールでこのエラー"Uncaught TypeError: Cannot read property 'unsync' of undefined"があったからです。

$wp_customize->remove_setting( 'header_textcolor' );を使用してテーマテンプレートからheader_textcolor設定を削除しましたが、まだjsで参照されていたためです。

これを修正した後、バインドは意図したとおりに動作しました。

0
Digvijayad