WooCommerce管理员->订单| 在每个产品上添加复选框

cli*_*ere 5 php wordpress checkbox input woocommerce

没有运气就浪费了超过12个小时来使它工作。在这里找到了其他一些线程,也有一些类似的问题,但是都没有回应。

// 我需要的?

我需要在WooCommerce Admin订单视图上的每个产品复选框,如果checked值是yes:否应存储为order_item_meta。因此,客户可以检查所有订购的物品是否都已完整运送。要挂入,动作woocommerce_after_order_itemmeta看起来像正确的位置。

//为什么不简单地将Meta添加到项目?

是的,它可以工作-但是有一个复选框可以吗?:)

//到目前为止我做了什么?

在这里阅读了很多帖子,尤其是这个-> WooCommerce-admin-order-details-show-custom-data-order-details-page页面

我不知道该从哪里开始以及如何开始-最终在我的functions.php中获得了这种和平的代码。

<?php

add_action( 'woocommerce_after_order_itemmeta', 'item_shipped',
10, 3 );
function item_shipped() {
?>
<input type="checkbox" name="custom-meta-box[]" value="yes" <?php if(isset($_POST['is-shipped-meta']['is_shipped'])) echo 'checked="checked"'; ?>  /> is shipped?
<?php  
 }

 add_action( 'woocommerce_add_order_item_meta', 'save_is_shipped_meta' );
 function save_is_shipped_meta()
 {

     global $item_id, $item, $product;
     // Get our form field
     if(isset( $_POST['is-shipped-meta'] ))
     {
         $value = $_POST['is-shipped-meta'];
         $old_meta = get_metadata($item->id, 'is-shipped-meta', true);
         // Update order item meta
         if(!empty($old_meta)){
         woocommerce_add_order_item_meta($item->id, 'is-shipped-meta', $value);
         } else {
            woocommerce_add_order_item_meta($item->id, 'is-shipped-meta', $value);
         }
     }
 }

?>
Run Code Online (Sandbox Code Playgroud)

在前端,我的帐户实际上看起来像这样。 前端-我的帐户 带有绿点的指示器,客户可以检查订购的商品是否已经发货!

任何想法,我怎样才能使它工作?

感谢您的宝贵时间和帮助。谢谢!