以重力形式获取Woocommerce订单号

Kco*_*itk 5 php forms wordpress woocommerce

我正在处理一种重力形式,需要从Woocommerce获得订单号。当用户下达成功订单时,应该将订单号传递到表单,以便用户可以管理该订单的其他内容。我正在使用以下插件:1. Woocommerce 2. Gravity Form 3. Gravity Form产品附加组件

我需要在重力表单选择中动态显示订单号,如下所示:

<select>
  <option value="">Please Select the Order Number</option>
  <option value="28">28</option>
  <option value="30">30</option>
</select>
Run Code Online (Sandbox Code Playgroud)

以下是我用来从wordpress模板文件中获得此功能的代码。对于此模板页面,我使用Gravity表单简码显示表单。这段代码使用该登录用户的订单号创建一个选择标签class =“ hide”,我使用CSS隐藏该标签,并调用函数clone和append,以便克隆字段值并将其附加到重力形式select字段ID #input_3_2。

<?php if ( is_user_logged_in() ) {
$customer_orders = get_posts( apply_filters( 'woocommerce_my_account_my_orders_query', array(
    'numberposts' => $order_count,
    'meta_key'    => '_customer_user',
    'meta_value'  => get_current_user_id(),
    'post_type'   => 'shop_order',
    'post_status' => 'publish'
) ) );?>

<?PHP if ( $customer_orders ) : ?>
    <select class="hide">

    <?php
            foreach ( $customer_orders as $customer_order ) {
                $order = new WC_Order();

                $order->populate( $customer_order );
                $item_count = $order->get_item_count();

                ?>

                    <option value="<?php echo $order->get_order_number(); ?>"><?php echo $order->get_order_number(); ?></option>



                <?php
            }
        ?>
<?php endif; ?>
</select>
<script>
    jQuery(document).ready(function() {
        jQuery('select.hide').find('option').clone().appendTo('#input_3_2');
    });
</script>
Run Code Online (Sandbox Code Playgroud)

该代码有效,但有缺点,我知道这不是完美的方法。我希望functions.php可以像下面的代码一样处理此功能,但是要动态处理。

add_filter('gform_field_content', 'modify_field', 10, 5);
function modify_field($modify_html, $field){
    if($field['formId'] == 6){
    if($field['id'] == 5){$modify_html = str_replace("<option value='' >Please Select Your Order Number</option>","<option value='27'>27</option><option value='30'>30</option>",$modify_html);}
    }
    return $modify_html;
}
Run Code Online (Sandbox Code Playgroud)

Wis*_*abs -2

在您的情况下动态加载选项的功能可以使用以下方法来实现。

  • 一个 php 函数,它将返回当前用户的所有订单号。
  • 对此函数的 ajax 调用,间隔设置为 x 秒。(这将调用 php 函数每秒运行一次,以与服务器检查所有订单号)。
  • 在设置间隔函数中更新下拉列表的所有选项。