在WooCommerce订单详细信息中保存自定义结帐交货时间字段值

凯瑟琳·库里科娃(Katharine Kulikova)

在结帐页面上,有一些交付方式,如果选择了一种特定的交付方式(仅1种),则应显示一个带有交付时间的下拉列表。该字段是使用带有Repeater的ACF插件实现的,字段类型是Text。用户选择的时间应显示在WooCommerce管理面板的订单详细信息中。

根据获得的主题代码,我编写了下一个代码:

  1. 在woocommerce / checkout / form-shipping.php文件中,以下代码:
<div id="delivery_times" class="form-group d-none">
   <label class="text-bold" for="select_time">Delivery time: </label>
      <select id="select_time" class="form-control mb-1">
         <option value="" selected>Select time</option>
         <?php
            $delivery_times = get_field('delivery_times', 'options');
            $count = 0;
            foreach ($delivery_times as $delivery_time):
              echo '<option value="'.$delivery_time['range_time'].'" data-pickup="'.$count.'">'.$delivery_time['range_time'].'</option>';
              $count++;
            endforeach;
          ?>
       </select>
</div>
  1. 有一个通用的theme-checkout.js文件,在其中添加了代码:
$("#shipping_speed").change(function(){
    var delivery_time = $(this).children("option:selected").data("type");

    if(delivery_time == "tomorrow"){
       $("#delivery_times").removeClass("d-none");
    }else{
       $("#delivery_times").addClass("d-none");
       $("#select_time option[value='']").prop('selected',true);
    }
});

现在,我需要保存选定的数据,并以某种方式在管理员的订单详细信息中显示它,但是我没有在主题中实现类似的实现。请告诉我如何将这些数据从ACF字段保存到订单详细信息?

LoicTheAztec

更新:

首先在您的html上缺少<select>attibute name="select_time",因此请替换以下行:

<select id="select_time" class="form-control mb-1">

通过这一行:

<select id="select_time" name="select_time" class="form-control mb-1">

现在,您可以使用以下代码片段将所选值保存为订单元数据:

// Save the custom checkout field as the order meta
add_action( 'woocommerce_checkout_create_order', 'custom_checkout_field_update_order_meta', 10, 2 );
function custom_checkout_field_update_order_meta( $order, $data ) {
    if ( isset($_POST['select_time']) ) {
        $order->update_meta_data( 'delivery_time', esc_attr($_POST['select_time']) );
    }
}

然后将其显示在收货地址下的管理单个订单页面中:

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'display_admin_order_select_time_custom_field' );
function display_admin_order_select_time_custom_field( $order ){
    $delivery_time = $order->get_meta('delivery_time');

    if( ! empty($delivery_time) ) {
        echo '<p class="delivery_time"><strong>'. __("Delivery time", "woocommerce").'</strong>: '.$delivery_time.'</p>';
    }
}

然后,您可以在客户订单和电子邮件通知上显示此交货时间:

add_filter( 'woocommerce_get_order_item_totals', 'delivery_time_as_order_item_total_row', 10, 3 );
function delivery_time_as_order_item_total_row( $total_rows, $order, $tax_display ){
    $delivery_time  = $order->get_meta( 'delivery_time' ); // Get delivery time
    $new_total_rows = array(); // Initializing

    if( empty($delivery_time) ) {
        return $total_rows; // Exit
    }

    // Loop through total rows
    foreach( $total_rows as $key => $value ){
        if( 'payment_method' == $key ) {
            $new_total_rows['delivery_time'] = array(
                'label' => __("Delivery time", "woocommerce"),
                'value' => $delivery_time,
            );
        }
        $new_total_rows[$key] = $total_rows[$key];
    }
    return $new_total_rows;
}

代码进入活动子主题(或活动主题)的functions.php文件中。它应该工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义订单详细信息页面上的Woocommerce自定义字段

来自分类Dev

如何将自定义结帐字段打印到电子邮件订单详细信息中

来自分类Dev

保存结帐自定义字段值并将其显示在WooCommerce管理订单中

来自分类Dev

如何将我的自定义字段添加到 Woocommerce 订单流程(查看表单、订单详细信息和电子邮件流程)

来自分类Dev

在WooCommerce中将自定义结帐字段值添加到客户订单注释中

来自分类Dev

woocommerce结帐后获取订单详细信息

来自分类Dev

woocommerce结帐后获取订单详细信息

来自分类Dev

VirtueMart 2.6.6自定义字段(购物车变量)未显示在订单详细信息中

来自分类Dev

调用并显示WooCommerce自定义结帐字段值

来自分类Dev

如何在Wordpress中的自定义插件中获取订单详细信息

来自分类Dev

Paypal 购物车自定义创建订单对象和用户详细信息

来自分类Dev

Woocommerce结帐中的自定义新字段不适用于连续订单

来自分类Dev

Android:如何向联系人详细信息添加自定义字段/操作

来自分类Dev

从PayPal SOAP API获取交易详细信息(也希望自定义字段)

来自分类Dev

是否可以在“详细信息”选项卡中添加自定义字段

来自分类Dev

我如何在 wp admin 的 woocomerce 订单详细信息页面上显示自定义用户数据

来自分类Dev

电子邮件,管理员订单和“谢谢”页面上的WooCommerce 4.0自定义结帐和ACF字段值

来自分类Dev

从 Woocommerce 结帐中的自定义产品字段值中填写选择字段选项

来自分类Dev

自定义条带连接帐户的银行详细信息

来自分类Dev

自定义Pods.io详细信息页面

来自分类Dev

自定义Ubuntu Installer的详细信息指南

来自分类Dev

显示自定义实体的详细信息

来自分类Dev

如何将WooCommerce结帐自定义字段保存到用户元

来自分类Dev

如何从WooCommerce结帐保存自定义复选框字段状态?

来自分类Dev

如何用以前输入的值(如默认的WooCommerce结帐字段)填充自定义结帐字段?

来自分类Dev

如何用以前输入的值(如默认的WooCommerce结帐字段)填充自定义结帐字段?

来自分类Dev

如何在WooCommerce管理员单笔订单中显示自定义结帐账单字段

来自分类Dev

在WooCommerce订单和电子邮件通知上显示自定义交货通知

来自分类Dev

页面加载后,自定义的Woocommerce结帐字段将恢复为默认值

Related 相关文章

  1. 1

    自定义订单详细信息页面上的Woocommerce自定义字段

  2. 2

    如何将自定义结帐字段打印到电子邮件订单详细信息中

  3. 3

    保存结帐自定义字段值并将其显示在WooCommerce管理订单中

  4. 4

    如何将我的自定义字段添加到 Woocommerce 订单流程(查看表单、订单详细信息和电子邮件流程)

  5. 5

    在WooCommerce中将自定义结帐字段值添加到客户订单注释中

  6. 6

    woocommerce结帐后获取订单详细信息

  7. 7

    woocommerce结帐后获取订单详细信息

  8. 8

    VirtueMart 2.6.6自定义字段(购物车变量)未显示在订单详细信息中

  9. 9

    调用并显示WooCommerce自定义结帐字段值

  10. 10

    如何在Wordpress中的自定义插件中获取订单详细信息

  11. 11

    Paypal 购物车自定义创建订单对象和用户详细信息

  12. 12

    Woocommerce结帐中的自定义新字段不适用于连续订单

  13. 13

    Android:如何向联系人详细信息添加自定义字段/操作

  14. 14

    从PayPal SOAP API获取交易详细信息(也希望自定义字段)

  15. 15

    是否可以在“详细信息”选项卡中添加自定义字段

  16. 16

    我如何在 wp admin 的 woocomerce 订单详细信息页面上显示自定义用户数据

  17. 17

    电子邮件,管理员订单和“谢谢”页面上的WooCommerce 4.0自定义结帐和ACF字段值

  18. 18

    从 Woocommerce 结帐中的自定义产品字段值中填写选择字段选项

  19. 19

    自定义条带连接帐户的银行详细信息

  20. 20

    自定义Pods.io详细信息页面

  21. 21

    自定义Ubuntu Installer的详细信息指南

  22. 22

    显示自定义实体的详细信息

  23. 23

    如何将WooCommerce结帐自定义字段保存到用户元

  24. 24

    如何从WooCommerce结帐保存自定义复选框字段状态?

  25. 25

    如何用以前输入的值(如默认的WooCommerce结帐字段)填充自定义结帐字段?

  26. 26

    如何用以前输入的值(如默认的WooCommerce结帐字段)填充自定义结帐字段?

  27. 27

    如何在WooCommerce管理员单笔订单中显示自定义结帐账单字段

  28. 28

    在WooCommerce订单和电子邮件通知上显示自定义交货通知

  29. 29

    页面加载后,自定义的Woocommerce结帐字段将恢复为默认值

热门标签

归档