Пытаюсь создать некоторое текстовое поле в
customizer.php с выводом кусочка кода:
/*=== Code ===*/
$wp_customize->add_setting(
'test_code',
array(
'default' => __( "<!-- Comment --><script> console.log('Hello world!')</script> <script async src='https://google.com'></script> <div> lorem pixel </div>", 'test' ),
'transport' => 'postMessage',
'sanitize_callback' => 'test_sanitize_html_input'
)
);
$wp_customize->add_control( new SEV_Customize_Textarea_Control($wp_customize,
'test_code',
array(
'settings' => 'test_code',
'section' => 'test_sec',
'label' => __( 'Enter your code', 'test' )
)
)
);
Sanitize функция:
function sev_sanitize_text( $input ) {
return wp_kses_post( force_balance_tags( $input ) );
}
+
class SEV_Customize_Textarea_Control extends WP_Customize_Control {
public $type = 'textarea';
public function render_content() {
?>
<label>
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
<textarea rows="5" style="width:100%;" <?php $this->link(); ?>><?php echo esc_textarea( $this->value() ); ?></textarea>
</label>
<?php
}
}
+
main.php:
<?php if ( get_theme_mod( 'text_code' ) ) : ?>
<?php echo wp_kses_post(get_theme_mod( 'text_code' ) ) ?>
<?php endif; ?>
Но в итоге на странице выводится просто строкой:
console.log('Hello world!') https://google.com lorem pixel
Т.е.
<!-- Comment -->
распознает что это комментарий, а все остальное выводит просто строкой (при чем без тегов), а не как положено тег script, div.
Вопрос: Как вывести (встроить) на странице темы WP кусочек кода содержащий разнообразные теги (
<style> , <script>, <div>, ...
и комментарии) с помощью
customizer.php именно кодом тегами по назначению, а не строкой?
Иначе
wp_kses_post
удаляет все теги
script
, как сделать чтобы сохранял?