从数据库中填充\u wp \u select字段

yh2wf1be  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(359)

请帮帮我…我尝试了太多不同的东西。。。我试图用数据库中的数据填充一个选择字段。

// Add fields & settings to the custom product tab
$SQL = "SELECT DISTINCT table_name FROM wp_lbc_prices";
$array = $wpdb->get_results( $SQL, ARRAY_A);

add_action( 'woocommerce_product_data_panels', 
'wcpt_roller_blind_options_product_tab_content' );

function wcpt_roller_blind_options_product_tab_content() {

?><div id='roller_blind_options' class='panel woocommerce_options_panel'><?php
    ?><div class='options_group'><?php
        woocommerce_wp_select( array(
                'id'          => 'roller_blind_tables',
                'label'       => __( 'Price Tables', 'wcpt' ),
                'placeholder' => '',
                'desc_tip'    => 'true',
                'description' => __( 'Select Associated Price Table.', 'wcpt' ),
                'options' => $array
           ));

    ?></div>
</div><?php

当然,对数据库的查询工作正常,结果正在返回。。。但我不确定如何创建一个可接受的数组(我习惯于使用asp.net,这似乎使它更简单!)。我返回的数据不需要id,因此下拉列表的值和文本可以相同。

hjzp0vay

hjzp0vay1#

你首先要确定 table_name 或者将其替换为要从数据库表中查询的正确列slug wp_lbc_prices .
你需要换新的 WPDB 方法 get_results()get_col() 它查询单个列并以本机方式提供数组。
准备数组,以便使用将值复制到键 array_combine() 我已经用hooked函数完成了您的代码,该函数添加了一个自定义产品选项卡。
您重新访问的代码将是:

add_filter( 'woocommerce_product_data_tabs', 'add_roller_blind_product_data_tab' );
function add_roller_blind_product_data_tab( $tabs ) {
    $tabs['roller_blind'] = array(
        'label' => __( 'Roller blind', 'wcpt' ),
        'target' => 'roller_blind_options', // <== to be used in the <div> class of the content
        //'class' => array('show_if_simple'), // or 'hide_if_simple' or 'show_if_variable'…
    );

    return $tabs;
}

add_action( 'woocommerce_product_data_panels', 'display_roller_blind_product_data_tab_content' );
function display_roller_blind_product_data_tab_content() {
    global $wpdb;

    echo '<div id="roller_blind_options" class="panel woocommerce_options_panel">
    <div class="options_group">';

    $sql_query = $wpdb->get_col( "SELECT DISTINCT table_name FROM {$wpdb->prefix}wp_lbc_prices" );
    $options   = sizeof($sql_query) > 0 ? array_combine( $sql_query, $sql_query ) : array();

    woocommerce_wp_select( array(
        'id'          => 'roller_blind_tables',
        'label'       => __( 'Price Tables', 'wcpt' ),
        'placeholder' => '',
        'desc_tip'    => 'true',
        'description' => __( 'Select Associated Price Table.', 'wcpt' ),
        'options'     => $options
    ));

    echo '</div></div>';
}

现在应该更好用了。但由于这是一个自定义的数据库表,因此不可测试。

kmynzznz

kmynzznz2#

get\u results函数返回一个带有索引的数组,这样值就可以像这样的对象数组 array([0]=>object,[1]=>object) 你能分享一下你在$array变量中得到了什么吗?

相关问题