/includes/wc-order-item-functions.php

  1. <?php 
  2. /** 
  3. * WooCommerce Order Item Functions 
  4. * 
  5. * Functions for order specific things. 
  6. * 
  7. * @author WooThemes 
  8. * @category Core 
  9. * @package WooCommerce/Functions 
  10. */ 
  11. if ( ! defined( 'ABSPATH' ) ) { 
  12. exit; 
  13.  
  14. /** 
  15. * Add a item to an order (for example a line item). 
  16. * 
  17. * @param int $order_id 
  18. * @param array $item_array 
  19. * @return int|bool Item ID or false 
  20. */ 
  21. function wc_add_order_item( $order_id, $item_array ) { 
  22. if ( ! $order_id = absint( $order_id ) ) { 
  23. return false; 
  24.  
  25. $defaults = array( 
  26. 'order_item_name' => '',  
  27. 'order_item_type' => 'line_item',  
  28. ); 
  29.  
  30. $item_array = wp_parse_args( $item_array, $defaults ); 
  31. $data_store = WC_Data_Store::load( 'order-item' ); 
  32. $item_id = $data_store->add_order_item( $order_id, $item_array ); 
  33. $item = WC_Order_Factory::get_order_item( $item_id ); 
  34.  
  35. do_action( 'woocommerce_new_order_item', $item_id, $item, $order_id ); 
  36.  
  37. return $item_id; 
  38.  
  39. /** 
  40. * Update an item for an order. 
  41. * 
  42. * @since 2.2 
  43. * @param int $item_id 
  44. * @param array $args either `order_item_type` or `order_item_name` 
  45. * @return bool true if successfully updated, false otherwise 
  46. */ 
  47. function wc_update_order_item( $item_id, $args ) { 
  48. $data_store = WC_Data_Store::load( 'order-item' ); 
  49. $update = $data_store->update_order_item( $item_id, $args ); 
  50.  
  51. if ( false === $update ) { 
  52. return false; 
  53.  
  54. do_action( 'woocommerce_update_order_item', $item_id, $args ); 
  55.  
  56. return true; 
  57.  
  58. /** 
  59. * Delete an item from the order it belongs to based on item id. 
  60. * 
  61. * @access public 
  62. * @param int $item_id 
  63. * @return bool 
  64. */ 
  65. function wc_delete_order_item( $item_id ) { 
  66.  
  67. if ( ! $item_id = absint( $item_id ) ) { 
  68. return false; 
  69.  
  70. $data_store = WC_Data_Store::load( 'order-item' ); 
  71.  
  72. do_action( 'woocommerce_before_delete_order_item', $item_id ); 
  73.  
  74. $data_store->delete_order_item( $item_id ); 
  75.  
  76. do_action( 'woocommerce_delete_order_item', $item_id ); 
  77.  
  78. return true; 
  79.  
  80. /** 
  81. * WooCommerce Order Item Meta API - Update term meta. 
  82. * 
  83. * @access public 
  84. * @param mixed $item_id 
  85. * @param mixed $meta_key 
  86. * @param mixed $meta_value 
  87. * @param string $prev_value (default: '') 
  88. * @return bool 
  89. */ 
  90. function wc_update_order_item_meta( $item_id, $meta_key, $meta_value, $prev_value = '' ) { 
  91. $data_store = WC_Data_Store::load( 'order-item' ); 
  92. if ( $data_store->update_metadata( $item_id, $meta_key, $meta_value, $prev_value ) ) { 
  93. $cache_key = WC_Cache_Helper::get_cache_prefix( 'order-items' ) . 'object_meta_' . $item_id; 
  94. wp_cache_delete( $cache_key, 'order-items' ); 
  95. return true; 
  96. return false; 
  97.  
  98. /** 
  99. * WooCommerce Order Item Meta API - Add term meta. 
  100. * 
  101. * @access public 
  102. * @param mixed $item_id 
  103. * @param mixed $meta_key 
  104. * @param mixed $meta_value 
  105. * @param bool $unique (default: false) 
  106. * @return int New row ID or 0 
  107. */ 
  108. function wc_add_order_item_meta( $item_id, $meta_key, $meta_value, $unique = false ) { 
  109. $data_store = WC_Data_Store::load( 'order-item' ); 
  110. if ( $meta_id = $data_store->add_metadata( $item_id, $meta_key, $meta_value, $unique ) ) { 
  111. $cache_key = WC_Cache_Helper::get_cache_prefix( 'order-items' ) . 'object_meta_' . $item_id; 
  112. wp_cache_delete( $cache_key, 'order-items' ); 
  113. return $meta_id; 
  114. return 0; 
  115.  
  116. /** 
  117. * WooCommerce Order Item Meta API - Delete term meta. 
  118. * 
  119. * @access public 
  120. * @param mixed $item_id 
  121. * @param mixed $meta_key 
  122. * @param string $meta_value (default: '') 
  123. * @param bool $delete_all (default: false) 
  124. * @return bool 
  125. */ 
  126. function wc_delete_order_item_meta( $item_id, $meta_key, $meta_value = '', $delete_all = false ) { 
  127. $data_store = WC_Data_Store::load( 'order-item' ); 
  128. if ( $data_store->delete_metadata( $item_id, $meta_key, $meta_value, $delete_all ) ) { 
  129. $cache_key = WC_Cache_Helper::get_cache_prefix( 'order-items' ) . 'object_meta_' . $item_id; 
  130. wp_cache_delete( $cache_key, 'order-items' ); 
  131. return true; 
  132. return false; 
  133.  
  134. /** 
  135. * WooCommerce Order Item Meta API - Get term meta. 
  136. * 
  137. * @access public 
  138. * @param mixed $item_id 
  139. * @param mixed $key 
  140. * @param bool $single (default: true) 
  141. * @return mixed 
  142. */ 
  143. function wc_get_order_item_meta( $item_id, $key, $single = true ) { 
  144. $data_store = WC_Data_Store::load( 'order-item' ); 
  145. return $data_store->get_metadata( $item_id, $key, $single ); 
  146.  
  147. /** 
  148. * Get order ID by order item ID. 
  149. * 
  150. * @param int $item_id 
  151. * @return int 
  152. */ 
  153. function wc_get_order_id_by_order_item_id( $item_id ) { 
  154. $data_store = WC_Data_Store::load( 'order-item' ); 
  155. return $data_store->get_order_id_by_order_item_id( $item_id ); 
.