web-dev-qa-db-ja.com

カスタムdbからテーマカスタマイザのドロップダウンメニューを作成する

私がやろうとしているのは私が作成したカスタムデータベースからテーマカスタマイザのドロップダウンメニューを作成することです。データベース名 "Students"。データベース内で私は唯一のIDと名前を持っています。ドロップダウンメニューにすべての生徒の名前を表示したいです。ユーザーが生徒の名前を選択して保存ボタンをクリックしたとき(選択した名前を保存する必要があります)、次回同じ名前が選択されるようにしますこのドロップダウンメニューで.

私はこの作品を作ろうとしましたが、結果は出ませんでした。

手伝ってくれてありがとう

1
someone

studentsがあなたのWPデータベース内のテーブルであることを意味していると仮定すると、これであなたは始められるはずです。

私は以下の資料を読むことをお勧めします。これはとても役に立ちます -

これはdorpdownボックスを追加するためのコードです -

/** 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


これは私が機能させるためのコードです。

1.ここで私は選択されたオプションを引き抜こうとしています。しかしこれはうまくいきません。ユーザーが学生名を選択して保存ボタンをクリックするたびに、選択されたオプションがデフォルトのオプションに戻ります。

2.このドロップダウンメニューをテーマカスタマイザセクションに挿入するためのクラスを作成しましたが、動作しません。phpエラーが発生します。

何が悪いの?

手伝ってくれてありがとう!

 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