我遇到了一个我似乎无法解决的奇怪问题。它与我试图添加到WooCommerce结帐页面的自定义字段有关。
首先,我创建了一个生成数组的函数:
function eci_get_events() {
$args = array(
'post_type' => 'tribe_events',
'posts_per_page' => -1,
'post_status' => 'publish',
'order' => 'ASC',
'orderby' => 'meta_value_num',
'meta_key' => '_EventStartDate'
);
$event_query = new WP_Query($args);
$event_list = array();
if ($event_query->have_posts()) : while ($event_query->have_posts()) : $event_query->the_post();
$event_list[get_the_id()] = get_the_title();
endwhile; endif; wp_reset_postdata();
return $event_list;
}
然后在此函数中使用:
function ecitpm_checkout_fields( $fields ) {
$fields['billing']['eci_event'] = array(
'type' => 'select',
'label' => __('Event', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true,
'options' => eci_get_events() // Here's that function
);
return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'ecitpm_checkout_fields' );
然而,无论我尝试什么,当我在第一个函数中使用$event_query
循环时,这个东西都不会在前端呈现。例如:
使用:
$event_list = array();
$event_list[get_the_id()] = get_the_title();
不是否有效:
$event_list = array();
if ($event_query->have_posts()) : while ($event_query->have_posts()) : $event_query->the_post();
$event_list[get_the_id()] = get_the_title();
endwhile; endif; wp_reset_postdata();
根据要求,这是var_dump
函数生成的数组的快速eci_get_events()
:
array(2) {
[11]=>
string(11) "Hello There"
[23]=>
string(12) "Another Test"
}
我已尝试过所有事情,但未能找到解决方案。
如何解决这个问题?
谢谢! 托马斯