问:如何从定制表中提取数据以填充自定义项设置/控制选择选项

时间:2017-02-28 作者:user2286485

我正试图在Wordpress主题自定义区域中创建一个选择框/下拉菜单,从我的Wordpress DB中名为“wp\\u revsliders\\u sliders”的表中名为“alias”的列中提取选项。

我已经创建了自定义部分,以及下拉菜单的基本设置和控制(参见下面的图1),但作为这方面的新手,我不知道如何正确地查询Wordpress DB,从“wp\\U RevSliders\\U sliders”表的“Alias”列提取结果,并将其输出插入下面的“choices array”:

Figure 1

function example_customizer( $wp_customize ) {

$wp_customize->add_section(
\'example_section_one\',
array(
    \'title\' => \'Example Settings\',
    \'description\' => \'This is a settings section.\',
    \'priority\' => 35,
)
);

$wp_customize->add_setting(
\'select_revslider\',
array(
\'default\' => \'wordpress\',
)
);


$wp_customize->add_control(
\'select_revslider\',
array(
\'type\' => \'select\',
\'label\' => \'Please Select a Slider:\',
\'section\' => \'example_section_one\',
\'choices\' => array(
    \'wordpress\' => \'WordPress\',
 ),
 )
 );
因此,在创建了基本自定义部分以及下拉菜单的基本设置和控制之后,我尝试了以下方法

1) 创建一个单独的PHP文件(tablequerytest.PHP)来查询自定义表并存储结果:

<?php

global $wpdb; //Accessing WP Database (non-WP Table) use code below.

$results = $wpdb->get_results(\'SELECT alias FROM wp_revslider_sliders\');

foreach ($results as $result) {
$revchoices = array("text" => $result, "value" => $result);
}

return $revchoices;

?>
2)将上述PHP文件的结果插入到$wp\\u customize->add\\u control choices数组中,如下所示:

$wp_customize->add_control(
    \'select_revslider\',
array(
    \'type\' => \'select\',
    \'label\' => \'Please Select a Slider:\',
    \'section\' => \'example_section_one\',
    \'choices\' => include(\'jktestrev.php\'),
)
);
上述操作似乎无法正常工作,并在显示自定义程序面板时产生问题。感谢您对如何使这项工作成功的任何反馈或想法,或为我指出另一种解决方法。

1 个回复
SO网友:user2286485

所以我想我已经找到了我自己问题的答案。我修改了原始tablequerytest中的代码。php,用于查询自定义表并存储来自以下内容的结果:

<?php

global $wpdb; //Accessing WP Database (non-WP Table) use code below.

$results = $wpdb->get_results(\'SELECT alias FROM wp_revslider_sliders\');

foreach ($results as $result) {
$revchoices = array("text" => $result, "value" => $result);
}

return $revchoices;

?>
对此:

<?php

global $wpdb;

    $query = \'select r.id, r.alias from wp_revslider_sliders r\';
    $sliders = $wpdb->get_results($query, OBJECT);

    foreach($sliders as $slider)
    {
        $field[$slider->alias] = sprintf(\'%s\',$slider->alias);
    }

    return $field;

?>

相关推荐

在WordPress中将MySQL表格元素显示为页面

我正试图建立一个WordPress网站,但我需要一个特定的功能,我还没有找到一个插件。我将要刮网站信息和张贴到数据库的信息(这已经处理)。但是,我想创建一个页面来显示所有信息的索引,然后创建一个唯一的页面来显示每个单独的元素(ddbb表的行)。有什么办法可以做到这一点吗??