J'ai créé un nombre variable de champs pour ajouter des images à un nivoslider. Cela fonctionne bien, mais je dois actualiser manuellement la page entière et re-sélectionner la section dans le panneau de personnalisation pour que les modifications prennent effet. Je me demande s’il est possible d’obtenir le panneau de personnalisation lui-même pour actualiser le code php, au lieu de l’affichage du site Web en direct.
Voici le code
$wp_customize->add_section('slider_section',array(
'title' => esc_html__('Slider Settings','customslide'),
'description' => esc_html__('Add slider images here.','customslide'),
'priority' => null
));
$wp_customize->add_setting('num_of_slides'.$i,array(
'default' => esc_html__('2','customslide'),
'transport' => 'refresh',
'sanitize_callback' => 'absint',
));
$wp_customize->add_control('num_of_slides',array(
'label' => esc_html__('Number of Slides','customslide'),
'section' => 'slider_section',
'type' => 'text'
));
$num_of_slides_value = esc_html(get_theme_mod('num_of_slides','2'));
for ($i=1; $i<$num_of_slides_value+1; $i++) {
// Slide Image i
$wp_customize->add_setting('slide_image'.$i,array(
'default' => get_template_directory_uri().'/images/slides/slider'.$i.'.jpg',
'sanitize_callback' => 'esc_url_raw',
));
$wp_customize->add_control(
new WP_Customize_Image_Control(
$wp_customize,
'slide_image'.$i,
array(
'label' => esc_html__('Slide Image '.$i.' (1440x700)','customslide'),
'section' => 'slider_section',
'settings' => 'slide_image'.$i
)
)
);
$wp_customize->add_setting('slide_title'.$i,array(
'default' => esc_html__('Responsive Design','customslide'),
'sanitize_callback' => 'sanitize_text_field',
));
$wp_customize->add_control('slide_title'.$i,array(
'label' => esc_html__('Slide Title '.$i,'customslide'),
'section' => 'slider_section',
'type' => 'text'
));
$wp_customize->add_setting('slide_desc'.$i,array(
'default' => esc_html__('This is description for slider one.','customslide'),
'sanitize_callback' => 'customslide_format_for_editor',
));
$wp_customize->add_control('slide_desc'.$i,array(
'label' => esc_html__('Slide Description '.$i,'customslide'),
'section' => 'slider_section',
'setting' => 'slide_desc'.$i,
'type' => 'textarea'
));
$wp_customize->add_setting('slide_link'.$i,array(
'default' => '#link'.$i,
'sanitize_callback' => 'esc_url_raw',
));
$wp_customize->add_control('slide_link'.$i,array(
'label' => esc_html__('Slide Link '.$i,'customslide'),
'section' => 'slider_section',
'type' => 'text'
));
}
Dans la version actuelle de Wordpress, cela n'est pas possible, à moins d'écrire du code JS pour mettre à jour de manière dynamique le panneau de personnalisation avec vos valeurs. J'ai ouvert un ticket pour mettre à jour les emplacements de menu lors du changement de style de navigation, consultez-le.