在主题定制器中从自定义数据库创建下拉菜单

时间:2013-07-31 作者:someone

我要做的是从我创建的自定义db中创建主题定制器中的下拉菜单。db名称“学生”。在db中,我只有id和名称。我想在下拉菜单中显示所有学生的名字。当用户选择一些学生的名字并单击保存按钮时(我需要保存他的选择),我希望下次选择相同的名字。在此下拉菜单中。

我试图使这项工作,但没有任何结果。

谢谢你的帮助

2 个回复
SO网友:David Gard

假设你是这个意思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;

SO网友:someone


这是我正在努力使其工作的代码

在这里,我试图拉出所选选项。但这不起作用。每次用户选择某个学生姓名并单击保存按钮时,所选选项将返回为默认选项。

我创建了一个类来将这个下拉菜单插入到主题定制器部分,但它不起作用,我得到了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\')
                    )));    
                    }

结束