提问者:小点点

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


在本网站的WooCommerce中,我有2种本地提货运输方式:

  • AM取货:shipping\u method\u 0\u local\u pickup31
  • PM取货:shipping\u method\u 0\u local\u pickup32

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

可以使用:添加操作('woocommerce\u admin\u order\u data\u after\u shipping\u address','cwn\u add\u Picku\u to\u order\u item\u meta',1,2);

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>';
}

共2个答案

匿名用户

在WC_Order对象中,有两种类似的方法来获取Shipping methods数据。

1) 使用WC\u Abstract\u Orderget\u shipping\u methods()方法。2) 使用WC\u Abstract\u Order获取项目('shipping')方法。

这将输出一个WC\u Order\u Item\u Shipping对象数组。因此,您需要一个foreach循环来使用WC\u Order\u Item\u Shipping方法来获取数据,这种方式(其中$OrderWC\u 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是错误的,因为它应该是$orderWC_Order对象的实例。

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

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'cwn_add_pickup_to_order_item_meta', 10, 1 );
function cwn_add_pickup_to_order_item_meta( $order ){
    echo '<div>';
    foreach($order->get_shipping_methods() as $shipping_method ){
        echo '<p><strong>Shipping Method ID:</strong> '. $shipping_method->get_method_id().'<br>
        <strong>Shipping Method name:</strong> '. $shipping_method->get_name().'<br>
        <strong>Shipping Method title:</strong> '. $shipping_method->get_method_title().'<br>
        <strong>Shipping Method Total:</strong> '. $shipping_method->get_total().'<br>
        <strong>Shipping Method Total tax:</strong> '. $shipping_method->get_total_tax().'</p><br>';
    }
    echo '</div>';
}

代码进入函数。活动子主题(或主题)或任何插件文件中的php文件

在WooCommerce 3上测试并工作

匿名用户

我正在寻找一种在完成购买时执行命令的方法,选择的装运方式与“本地提货”不同。

你最后的代码给了我我需要的光。我的代码起作用了。

按照我的代码帮助需要的人:

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 );

谢谢你。