请帮助我。.我尝试了太多不同的事情... 我正在尝试使用数据库中的数据填充woocommerce选择字段。
// 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,因此下拉列表的值和文本可以相同。
答案 0 :(得分:0)
get_results函数返回一个带有索引的数组,因此值可以像这样的对象数组array([0]=>object,[1]=>object)
,请您分享在$ array变量中得到的内容吗?
答案 1 :(得分:0)
table_name
或将其替换为要从数据库表wp_lbc_prices
中查询的正确列子段。 WPDB
的{{1}}方法get_results()
替换为查询单个列并以本机方式提供数组的get_col()
。array_combine()
我已经使用添加了自定义产品标签的挂钩函数完成了代码。
您重新访问的代码将是:
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>';
}
现在应该更好地工作。但这是自定义数据库表,因此无法测试。