web-dev-qa-db-fra.com

créer un menu déroulant dans le personnaliseur de thème à partir d'une base de données personnalisée

ce que j'essaie de faire est de créer un menu déroulant dans le personnalisateur de thème à partir de la base de données personnalisée que j'ai créée. nom de db "étudiants". dans la base de données, je n'ai que l'identifiant et le nom. Je veux montrer tous les noms des étudiants dans le menu déroulant. et lorsque l'utilisateur choisira le nom de l'élève et cliquera sur le bouton de sauvegarde (je dois sauvegarder son choix), et je souhaite que le même nom soit sélectionné la prochaine fois. dans ce menu déroulant.

j'ai essayé de faire ce travail mais sans aucun résultat.

merci pour l'aide

1
someone

En supposant que vous vouliez dire que students est une table dans votre base de données WP, cela devrait vous aider à démarrer.

Je vous recommande de lire les documents suivants, qui sont très utiles -

Voici le code pour ajouter la boîte de dialogue -

/** Required to make use of the wpdb Class */
global $wpdb;

/** Query the database */
$query = $wpdb->prepare('SELECT * FROM %1$s ORDER BY ID DESC', 'students');
$results = $wpdb->get_results($query);

/** Check for $results */
if(!empty($results)) :

    /** Loop through the $results and add each as a dropdown option */
    $options = '';
    foreach($results as $result) :

        $options.= sprintf("\t".'<option value="%1$s">%2$s</option>'."\n", $result->ID, $result->name);

    endforeach;

    /** Output the dropdown */
    echo '<select id="my-select" name="my-select">'."\n";
    echo $options;
    echo '</select>'."\n\n";

endif;
1
David Gard


Voici le code que je cherche à faire fonctionner.

1. Ici, je cherche à extraire l’option choisie. mais cela ne fonctionne pas. chaque fois que l’utilisateur choisit un nom d’étudiant et clique sur le bouton d’enregistrement, l’opération sélectionnée redevient une option par défaut.

2. J'ai créer une classe pour insérer ce menu déroulant dans la section Theme Customizer mais cela ne fonctionne pas et j'obtiens une erreur php.

ce que je fais mal?

Merci pour l'aide!

 if (class_exists('WP_Customize_Control')): 
    class Selected_students_Control extends WP_Customize_Control {

    global $wpdb;
    $query = $wpdb->prepare('SELECT * FROM %1$s ORDER BY ID DESC', 'l7b8z_students');
    $results = $wpdb->get_results($query);
    if(!empty($results)) :
        $options = '';
        foreach($results as $result) :
        $is_selected = (get_the_title() == $selected) ? 'selected="selected"' : '';
            $options.= sprintf("\t".'<option value="%1$s $is_selected">%2$s</option>'."\n", $result->id, $result->name);

        endforeach;

        echo '<select id="my-select" name="my-select">'."\n";
        echo $options;
        echo '</select>'."\n\n";
    endif;

       }
    endif;


    public function customize($customize) {

            $customize->add_setting('students-admin', array(
                'default' => 'Students Admin',
            ));

            $customize->add_control(new Selected_students_Control

    ($customize, 'students-admin', array(
                        'label' => "Select Default ThemeAdmin",
                        'section' => 'footer_section',
                        'settings' => 'students-admin',
                        'description' => 'some text',
                        'query' => array('result' => 'name')
                    )));    
                    }
1
someone