WordPress : La zone de texte JS personnalisée dans le personnalisateur est mal formatée dans le document
J’ai créé un thème wordpress, dans le personnalisateur de thème wordpress, j’ai ajouté quelques zones de texte où un utilisateur peut saisir son propre CSS ou JS à ajouter à la tête.
Le placement de la zone de texte est correct, c’est-à-dire que lorsqu’un utilisateur ajoute du code, il s’affiche au bon endroit dans la page, mais il est formaté différemment.
Par exemple, j’ajoute le code suivant à l’une des zones de texte :
jQuery(document).ready(function($){
$('full_page').css('min-height',($(window).height()-195));
});
Et dans mon thème, il est sorti comme ceci:
jQuery(document).ready(function($){
$('full_page').css('min-height',($(window).height()-195));
});
Comme vous pouvez le voir, le '
est remplacé par'
Voici le code dans mon fichier customizer.php pour créer la zone de texte :
$controls[] = array(
'type' => 'textarea',
'setting' => 'js',
'label' => __( 'Custom JS', 'skizzar_bootstrap' ),
'subtitle' => __( 'You can write your custom JavaScript/jQuery here. The code will be included in a script tag appended to the top of the page.', 'skizzar_bootstrap' ),
'section' => 'advanced',
'priority' => 6,
'default' => '',
);
Pour sortir dans mon thème, j’utilise:
<script><php echo get_theme_mod('js'); ?></script>
Existe-t-il un moyen d’empêcher ce formatage de se produire?
Solution n°1 trouvée
@sam-skirrow vient de poster ici ce que nous avons fait pour résoudre ce problème…
WordPress 4.1 nous oblige à utiliser un sanitize_callback
filtre lors de la création des paramètres du personnalisateur (pour une bonne raison). Étant donné que vous utilisez le framework kirki pour créer ces paramètres de personnalisation, kirki détecte qu’il s’agit d’un champ de zone de texte et applique donc automatiquement le esc_textarea
filtre.
Cependant, vous pouvez remplacer ce rappel et utiliser le vôtre lors de la déclaration du champ, donc tout ce que nous devions faire pour résoudre ce problème était d’ajouter un calback de désinfection js au lieu du esc_textarea
.
0 commentaire