在WooCommerce中的订单编辑页面上显示送货方法数据

时间:2017-11-06 08:55:02

标签: php wordpress woocommerce shipping orders

this website的WooCommerce中,我有2种本地提货运送方式:

  • AM提货:shipping_method_0_local_pickup32
  • PM提货:function cwn_add_pickup_to_order_item_meta($shipping_method) { echo "<h4>Pickup Time</h4>"; echo '<p><strong>' . __('AM pickup') . ':</strong><br> ' . get_post_meta($shipping_method->id, '_shipping_method_0_local_pickup31', true) . '</p>'; echo '<p><strong>' . __('PM pickup') . ':</strong><br> ' . get_post_meta($shipping_method->id, '_shipping_method_0_local_pickup32', true) . '</p>'; }

不幸的是,这种送货方式没有显示在管理员订单编辑页面上

可以使用:     add_action('woocommerce_admin_order_data_after_shipping_address','cwn_add_pickup_to_order_item_meta',1,2);

function person(name) {
  return people.find(function(p) {
    return p.name == name;
  });
}
console.log(person("Samantha"));

2 个答案:

答案 0 :(得分:2)

有两种类似的方法可以在WC_Order对象中获取Shipping方法数据。

1)使用 WC_Abstract_Order get_shipping_methods()方法。 2)使用 WC_Abstract_Order get_items( 'shipping' )方法。

这将输出WC_Order_Item_Shipping个对象的数组。所以你需要一个foreach循环来使用 WC_Order_Item_Shipping 方法来获取数据,这样(其中 $order 是一个实例 WC_Order 对象)

foreach($order->get_items( 'shipping' ) as $shipping_method ){
    $method_id = $shipping_method->get_method_id().'<br>';
    $shipping_method_name = $shipping_method->get_name().'<br>';
    $shipping_method_title = $shipping_method->get_method_title().'<br>';
    $shipping_method_total = $shipping_method->get_total().'<br>';
    $shipping_method_total_tax = $shipping_method->get_total_tax().'<br>';
}

//Or:

foreach($order->get_shipping_methods() as $shipping_method ){
    $method_id = $shipping_method->get_method_id().'<br>';
    $shipping_method_name = $shipping_method->get_name().'<br>';
    $shipping_method_title = $shipping_method->get_method_title().'<br>';
    $shipping_method_total = $shipping_method->get_total().'<br>';
    $shipping_method_total_tax = $shipping_method->get_total_tax().'<br>';
}
  

在您的代码中, $shipping_method 挂钩函数参数错误,因为它应该是 $order {{的一个实例1}}

所以现在你可以在你的钩子函数中使用它,例如:

WC_Order object

代码进入活动子主题(或主题)的function.php文件或任何插件文件

经过测试并适用于WooCommerce 3+

答案 1 :(得分:0)

我正在寻找一种在完成购买时 执行命令 的方法,并且所选择的运输方式不同于“ 本地取货 ”。

您的最后一个代码给了我所需的光线。 我的代码有效。

关注我的代码以帮助需要它的人:

function showpopup($order_id){
    $order = wc_get_order($order_id);
    $order->get_shipping_methods(); 
    if( ! $order->has_shipping_method('local_pickup') ) {
    
        echo '
<script>
function myFunction() {
  alert("Retirada no local NÃO SELECIONADA!");
}
myFunction()
</script>
        ';
    
    }
}   
add_action( 'woocommerce_thankyou', 'showpopup', 10, 1 );

谢谢。