WordPress : Problème avec Customizer : seul le dernier champ affiché dans la section

Publié par Jean-Michel le

Je crée deux contrôles de couleur à l’aide du Customizer.

function main_salvio_customizer( $wp_customize ) {

    $wp_customize->add_setting( 'page-title-section' , array(
        'default'   => '#3c93bd',
        'transport' => 'postMessage',
    ) );

    $wp_customize->add_setting( 'page-title-section-text-color' , array(
        'default'   => '#000000',
        'transport' => 'postMessage',
    ) );

    $wp_customize->add_section( 'personalize-color-page' , array(
    'title'      => __( 'Visible Section Name' ),
    'priority'   => 30,
    ) );

     $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
    'label'      => __( 'Page Text Color' ),
    'settings'   => 'page-title-section-text-color',
        'section'    => 'personalize-color-page',
    ) ) );

    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
    'label'      => __( 'Page Title Control' ),
    'settings'   => 'page-title-section',
        'section'    => 'personalize-color-page',
    ) ) );
}
add_action( 'customize_register', 'main_salvio_customizer' );

Le problème est que je ne peux voir que le dernier contrôle ajouté, si vous modifiez l’ordre de couleur du texte de la page et que l’autre a disparu.

Solution n°1 trouvée

WP_Customize_Color_Controlprend 3 paramètres :

/**
 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
 * @param string $id Control ID.
 * @param array $args Optional. Arguments to override class property defaults.
 */

Le problème avec le code d’origine est que vous avez transmis le même ID de contrôle ( link_color) à deux instances distinctes. Ainsi, le contrôle le plus récemment ajouté piétine le précédent avec le même ID de contrôle. Assurez-vous de donner à vos contrôles des identifiants uniques.

Voici le code révisé avec des ID de contrôle uniques pour chaque contrôle de couleur :

add_action( 'customize_register', 'main_salvio_customizer' );
function main_salvio_customizer( $wp_customize ) {

    $wp_customize->add_section( 'personalize-color-page', array(
        'title'         => __( 'Visible Section Name', 'text-domain' ),
        'priority'  => 30,
    ) );

    $wp_customize->add_setting( 'page-title-section', array(
            'default'       => '#3c93bd',
            'transport' => 'postMessage',
    ) );

    $wp_customize->add_setting( 'page-title-section-text-color' , array(
            'default'   => '#000000',
            'transport' => 'postMessage',
    ) );

    // Control ID page_text_color
    $wp_customize->add_control(
        new WP_Customize_Color_Control( $wp_customize, 'page_text_color', array(
            'label'    => __( 'Page Text Color', 'text-domain' ),
            'settings' => 'page-title-section-text-color',
            'section'  => 'personalize-color-page',
        ) )
    );

    // Control ID page_title_color
    $wp_customize->add_control(
        new WP_Customize_Color_Control( $wp_customize, 'page_title_color', array(
            'label'    => __( 'Page Title Control', 'text-domain' ),
            'settings' => 'page-title-section',
            'section'    => 'personalize-color-page',
        ) )
    );
}

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *