php - 动态填充两个 Gravityform 选择菜单
问题描述
我有两个使用 Gravityforms 构建的选择菜单,我正在尝试使用下面的过滤器使用 WooCommerce 订单 ID 和 WooCommerce 产品动态填充它们。第一个 foreach 循环按预期工作。我想我可以为第二个选择菜单复制循环。这些查询就像我以非重力形式尝试过的那样工作。
我怀疑它是我在第二个循环中使用的变量名?
add_filter('gform_pre_render', 'populate_rma_dropdowns');
add_filter( 'gform_pre_validation', 'populate_rma_dropdowns' );
add_filter( 'gform_admin_pre_render', 'populate_rma_dropdowns' );
add_filter( 'gform_pre_submission_filter', 'populate_rma_dropdowns' );
function populate_rma_dropdowns( $form ) {
if ( $form['title'] != "RMA" ) return $form;
foreach ( $form['fields'] as &$field ) {
if ( $field->type != 'select' || strpos( $field->cssClass, 'order-list' ) === false ) {
continue;
}
$query = new WC_Order_Query( array(
'limit' => -1,
'orderby' => 'date',
'order' => 'DESC',
'return' => 'ids',
) );
$orders = $query->get_orders();
$choices = array(array('text' => 'Please find your order number', 'value' => 0 ));
foreach ( $orders as $order ) {
$choices[] = array( 'text' => $order, 'value' => $order, 'isSelected' => false );
}
$field['choices'] = $choices;
}
foreach ( $form['fields'] as &$field2 ) {
if ( $field2->type != 'select' || strpos( $field2->cssClass, 'product-list' ) === false ) {
continue;
}
$args2 = array( 'post_type' => 'product' ,'posts_per_page' => 100);
$products = get_posts( $args2 );
$choices2 = array(array('text' => 'Please select product', 'value' => 0 ));
foreach ( $products as $product ) {
$choices2[] = array( 'text' => $product->post_title, 'value' => $product->post_title, 'isSelected' => false );
}
$field2['choices2'] = $choices2;
}
return $form;
}
解决方案
看起来你在第二个循环中犯了一个小错字。你正在设置$field2['choices2']
而不是$field2['choices']
推荐阅读
- python - 如何创建表并选择数据库中的任何列?
- javascript - 想要使用 IDE (NetBeans) 实现声音文件,但引用的是实际文件而不是 URL
- zsh - ZSH 自定义提示
- rasa-nlu - Rasa 聊天机器人可以发起对话吗?
- java - 当线程执行时,CPU 内部到底发生了什么?
- sqlite - 使用 SQFlite (Flutter) 的一对多关系
- mysql - 错误代码 1062(以及更多问题)
- python - 如何停止重复的错误消息或找出它的来源
- arrays - Ruby 程序返回错误“将字符串隐式转换为整数 (TypeError)”
- angular - 来自 ngx-bootstrap 的 Ng2BootstrapModule