HamSter007
@HamSter007
HTML/CSS верстальщик

Вывод кусочка кода с помощью customize.php?

Пытаюсь создать некоторое текстовое поле в 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, как сделать чтобы сохранял?
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Вместо wp_kses_post( $data ) можно использовать wp_kses($string, $allowed_html, $allowed_protocols) и настроить $allowed_html как вам необходимо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы