web-dev-qa-db-fra.com

Customizer: Quand utiliser custom_preview_init VS VS personnaliser_controls_enqueue_scripts

Il semble y avoir des conflits entre le codex et le code de thème vingt-quatorze quant à l’action à suivre pour charger votre aperçu en direct .js (ex: customizer.js)

Dans le thème vingt-quatorze, le gestionnaire d'aperçu en direct, customizer.js, est chargé à l'aide depersonnaliser_preview_init:

function twentyfourteen_customize_preview_js() {
    wp_enqueue_script( 'twentyfourteen_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20131205', true );
}
add_action( 'customize_preview_init', 'twentyfourteen_customize_preview_js' );

Cependant, dans le codex, et dans cette réponse , nous conseillons d’utiliserpersonnaliser_controls_enqueue_scripts

3 - Créez une action liée à 'personnaliser_controls_enqueue_scripts' qui met le fichier js en file d'attente

Lorsque je mets en file d'attente en utilisant cette méthode, le fichier .js est lié au DOM parent (la fenêtre des contrôles du personnaliseur lui-même) et non à l'aperçu iframe (le document "About" dans l'aperçu chrome dev), comme vous pouvez le voir sur la capture d'écran ci-dessous.

enter image description here

2
N2Mystic

Comme les noms eux-mêmes semblent l'indiquer, l'un de ces crochets aux commandes de personnalisation, l'autre à la prévisualisation de personnalisation. Ils ne sont pas identiques et vous pouvez en fait les utiliser tous les deux à des fins différentes.

  • Si vous utilisez du code JS pour affecter les contrôles du personnaliseur, vous souhaiterez utiliser customize_controls_enqueue_scripts.

  • Si vous accrochez du code JS pour être dans le cadre de prévisualisation et éventuellement recevoir des événements des contrôles via postMessage, et ainsi pouvoir modifier de manière dynamique le contenu du cadre de prévisualisation rapidement, vous utiliseriez customize_preview_init.

Vingt Quatorze les utilise tous les deux. Le premier permet d’ajouter un script de suggestion de contenu aux contrôles personnalisés du personnaliseur. La seconde est utilisée pour tout le code postMessage dans le cadre de prévisualisation.

Plus précisément, le point de connexion personnaliser_preview_init est déclenché à partir de l'action wp_loaded lorsque le personnalisateur is_preview () renvoie true et que is_admin () renvoie false ... donc uniquement dans la fenêtre d'aperçu, pas du côté de l'administrateur ... ce que vous voulez. mettre en file d'attente les scripts qui ajustent uniquement le cadre de prévisualisation.

2
Otto