WordPress : Récupérer des données à l’aide de wpdb à utiliser pour les contrôles de personnalisation

Publié par Jean-Michel le

J’ai donc le code suivant :

add_action('customize_register', 'homepage_sections');
//products
function homepage_sections($wp_customize){
    $wp_customize->add_panel('homepage_sections', array(
        'title'             => 'Homepage Sections',
        'priority'          => '20'
    ));
    $wp_customize->add_section('homepage_settings_section', array(
        'title'             =>  'Homepage settings',
        'panel'             =>  'homepage_sections',
    ));
    $wp_customize->add_setting('homepage_settings_setting', array(
        'default'           =>  1
    ));
    $wp_customize->add_control('homepage_settings_control', array(
        'section'           =>  'homepage_settings_section',
        'settings'          =>  'homepage_settings_setting',
        'label'             =>  'Number of sections',
        'description'       =>  'Number of sections in homepage',
        'type'              =>  'number'
    ));


    global $wpdb;
    $sections=$wpdb->get_results('SELECT section_id, section_title FROM vt_homepage_sections;');

    foreach($sections as $key){
        $section_id=$key->section_id;
        $cust_setting_id=$section_id.'_setting';
        $cust_control_id=$section_id.'_control';


        $wp_customize->add_setting($cust_setting_id,array(

        ));
        $wp_customize->add_control($cust_control_id,array(
            'settings'          =>  $cust_setting_id,
            'section'           =>  'homepage_settings_section',
            'label'             =>  'test Control'
        ));
    }
}

Problème
Tout fonctionne correctement lorsque je n’utilise pas de variables contenant une valeur extraite à l’aide de $wpdb. L’objet $wpdb est-il chargé après le framework de personnalisation ?

Lorsque j’utilise le code ci-dessus, les objets de personnalisation en contexte doivent apparaître dans le panneau de personnalisation, mais ils ne le font pas. J’apprécierais des indices sur ce qui ne va pas avec mon code ci-dessus.

Cordialement,

J

Solution n°1 trouvée

Il semble donc qu’il y ait peut-être deux problèmes ici, il semble que vous n’établissiez pas une nouvelle instance d’un WP_Customize_Control comme ci-dessous et il est également important de se rappeler que vous devez donner au moins les éléments de tableau min à la fois le réglage et le contrôle ou il ne s’affichera pas, vous aviez un tableau vide dans le paramètre.

vous voulez également vous assurer que vous ne commencez pas vos conventions de nommage avec des nombres, alors je les ai inversées ci-dessous.

Voici quelques modifications de votre code que vous pouvez essayer :

add_action('customize_register', 'homepage_sections');
//products
function homepage_sections($wp_customize){
    $wp_customize->add_panel(
        'homepage_sections',
        array(
            'title'             => 'Homepage Sections',
            'priority'          => '20'
        )
    );
    $wp_customize->add_section(
        'homepage_settings_section',
        array(
            'title'             =>  'Homepage settings',
            'panel'             =>  'homepage_sections',
        )
    );
    $wp_customize->add_setting(
        'homepage_settings_setting',
        array(
            'default'           =>  1
        )
    );
    $wp_customize->add_control(
       new WP_Customize_Control(
          'homepage_settings_control',
           array(
              'section'           =>  'homepage_settings_section',
              'settings'          =>  'homepage_settings_setting',
              'label'             =>  'Number of sections',
              'description'       =>  'Number of sections in homepage',
              'type'              =>  'number'
           )
        )
    );


    global $wpdb;
    $sections=$wpdb->get_results('SELECT section_id, section_title FROM vt_homepage_sections;');

    foreach($sections as $key) :
        $section_id=$key->section_id;
        $cust_setting_id = 'setting_' . $section_id;
        $cust_control_id = 'control_' . $section_id;


        $wp_customize->add_setting(
            $cust_setting_id,
            array(
                'default'   => '',
                'transport' => 'refresh',
            )
        );
        $wp_customize->add_control(
            new WP_Customize_Control(
                $cust_control_id,
                array(
                    'settings'          =>  $cust_setting_id,
                    'section'           =>  'homepage_settings_section',
                    'label'             =>  'test Control'
                )
            )
        );
    endforeach;
}

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 *