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

Как сделать refresh в customizer.php для всех каждого пункта блока?

Есть блок с несколькими пунктами. Для каждого пункта задается имя (название подблока).

В customizer.php:

for( $i = 1; $i < 10; $i++ ){

$wp_customize->add_setting(
  'test_advantages_name'.$i,
  array(
    'default'			=> __( 'Default text', 'test' ),
    'sanitize_callback' => 'test_sanitize_text',
    'transport'         => 'postMessage'
   )
);

$wp_customize->add_control(
  'test_advantages_name'.$i,
  array(
    'settings'		=> 'test_advantages_name'.$i,
	'section'		=> 'test_advantages_sec',
	'type'			=> 'text',
	'label'			=> __( 'Name'.$i, 'test' )
    )
  );
$wp_customize->selective_refresh->add_partial('test_advantages_name'.$i, 
  array(
	'selector' => '.advantages-name_'.$i, 
	'render_callback' => function() use ($setting_name) {
	return nl2br(esc_html(get_theme_mod('test_advantages_name'.$i)));
	}
  )
);

}


Вывожу tempalte.php:

<div class="row justify-content-center">
  <?php 
    for( $i = 1; $i < 10; $i++ ){ 					
	$test_advantages_name = get_theme_mod('test_advantages_name'.$i, __( 'Default text', 'test' ));

	if( $test_advantages_name ){ ?>

		<div class="col-6 col-md-4">

		  <h5 class="advantages-name_<?php echo $i ?>">
			<?php echo esc_html($test_advantages_name); ?>
		  </h5>
		</div>

    <?php }	

  } ?>
</div>


Все выводится и отлично работает до тех пор пока через внешние настройки начинаю редактировать название каждого пункта. При вводе текст вообще исчезает.

Вопрос: Как сделать refresh в customizer.php для всех (каждого) пунктов блока?
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Вероятно, вместо
'render_callback' => function() use ($setting_name) {

должно быть
'render_callback' => function() use ($i) {
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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