web-dev-qa-db-ja.com

値を入力してWordPressカスタマイザパネルを更新する方法

Nivosliderに画像を追加するために可変数のフィールドを作成しました。うまく動作しますが、変更を有効にするにはページ全体を手動で更新してカスタマイザパネルからセクションを再選択する必要があります。ただライブウェブサイトの領域ではなく、カスタマイザパネル自体をphpコードでリフレッシュさせる方法があるのではないかと思います。

これがコードです

$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'
    ));

}

現在のWordpressバージョンでは、カスタマイザパネルを自分の値で動的に更新するためのJSコードを作成しない限り、これは不可能です。ナビゲーションスタイルを切り替えるときにメニューの場所を更新するために ticket を開いたので、それをチェックしてください。

2
koMah