WC Vendors - Version 1.9.1

Version Description

No Upgrade required at this time.

Download this release

Release Info

Developer digitalchild
Plugin Icon 128x128 WC Vendors
Version 1.9.1
Comparing to
See all releases

Code changes from version 1.9.0 to 1.9.1

changelog.txt CHANGED
@@ -1,5 +1,20 @@
1
  Changelog for WC Vendors
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  Version 1.9.0
4
 
5
  * Added: Support for WooCommerce 2.6
1
  Changelog for WC Vendors
2
 
3
+ Version 1.9.1
4
+
5
+ * Added: GitHub Plugin URI for afragen/github-updater #282 thanks Agoruh
6
+ * Added: Edit and View page settings options
7
+ * Fixed: Missing Argument WCV_Admin_Users::filter_product_types() #288
8
+ * Fixed: Critical: PHP Fatal error: Call to a member function get_children() #287
9
+ * Fixed: Date range session data is not working #285
10
+ * Fixed HTML escaped characters in PaypalAP Cancel and Return URLs: #286 thanks Nicolas
11
+ * Fixed: Post type check to trigger_new_product() function #276
12
+ * Fixed: Updated to notices instead of wordpress errors
13
+ * Fixed: Product attribute fetch and returning HTML #283 thanks Mikko
14
+ * Fixed: Vendor Mark Shipped Security Fix #280 thanks Agoruh
15
+ * Fixed: Missing argument in Vendors Class
16
+ * Fixed: Rounded product commission to avoid error 589023 when submitting to PayPal #275 thanks Nicolas
17
+
18
  Version 1.9.0
19
 
20
  * Added: Support for WooCommerce 2.6
class-wc-vendors.php CHANGED
@@ -6,8 +6,9 @@
6
  * Description: Allow vendors to sell their own products and receive a commission for each sale.
7
  * Author: WC Vendors
8
  * Author URI: https://www.wcvendors.com
 
9
  *
10
- * Version: 1.9.0
11
  * Requires at least: 4.0.0
12
  * Tested up to: 4.5.2
13
  *
@@ -98,9 +99,10 @@ if ( wcv_is_woocommerce_activated() ) {
98
  add_filter( 'plugin_row_meta', array($this, 'plugin_row_meta'), 10, 2 );
99
  add_action( self::$id . '_options_updated', array( $this, 'option_updates' ), 10, 2 );
100
 
101
- // Start a PHP session, if not yet started
102
- /* this line will initialize session to early and for each page
103
- if ( !session_id() ) session_start();*/
 
104
  }
105
 
106
 
@@ -112,6 +114,23 @@ if ( wcv_is_woocommerce_activated() ) {
112
  echo '<div class="error"><p>' . __( '<b>WC Vendors is disabled</b>. WC Vendors requires a minimum of WooCommerce v2.4.0.', 'wcvendors' ) . '</p></div>';
113
  }
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
  /**
117
  * Check whether install has ran before or not
@@ -376,4 +395,4 @@ if ( wcv_is_woocommerce_activated() ) {
376
 
377
  new WC_Vendors;
378
 
379
- }
6
  * Description: Allow vendors to sell their own products and receive a commission for each sale.
7
  * Author: WC Vendors
8
  * Author URI: https://www.wcvendors.com
9
+ * GitHub Plugin URI: https://github.com/wcvendors/wcvendors
10
  *
11
+ * Version: 1.9.1
12
  * Requires at least: 4.0.0
13
  * Tested up to: 4.5.2
14
  *
99
  add_filter( 'plugin_row_meta', array($this, 'plugin_row_meta'), 10, 2 );
100
  add_action( self::$id . '_options_updated', array( $this, 'option_updates' ), 10, 2 );
101
 
102
+ // Start a PHP session, if not yet started then destroy if logged in or out
103
+ add_action( 'init', array( $this, 'init_session'), 1 );
104
+ add_action( 'wp_logout', array( $this, 'destroy_session') );
105
+ add_action( 'wp_login', array( $this, 'destroy_session') );
106
  }
107
 
108
 
114
  echo '<div class="error"><p>' . __( '<b>WC Vendors is disabled</b>. WC Vendors requires a minimum of WooCommerce v2.4.0.', 'wcvendors' ) . '</p></div>';
115
  }
116
 
117
+ /**
118
+ * Start the session
119
+ */
120
+ public function init_session(){
121
+
122
+ if ( !session_id() ) {
123
+ session_start();
124
+ }
125
+
126
+ } //init_session()
127
+
128
+ public function destroy_session(){
129
+
130
+ session_destroy();
131
+
132
+ } // destroy_session()
133
+
134
 
135
  /**
136
  * Check whether install has ran before or not
395
 
396
  new WC_Vendors;
397
 
398
+ }
classes/admin/class-admin-users.php CHANGED
@@ -46,7 +46,7 @@ class WCV_Admin_Users
46
 
47
  add_action( 'admin_menu', array( $this, 'remove_menu_page' ), 99 );
48
  add_action( 'add_meta_boxes', array( $this, 'remove_meta_boxes' ), 99 );
49
- add_filter( 'product_type_selector', array( $this, 'filter_product_types' ), 99, 2 );
50
  add_filter( 'product_type_options', array( $this, 'filter_product_type_options' ), 99 );
51
  add_filter( 'woocommerce_product_data_tabs', array( $this, 'filter_product_data_tabs' ), 99, 2 );
52
 
@@ -164,7 +164,7 @@ class WCV_Admin_Users
164
  *
165
  * @return unknown
166
  */
167
- function filter_product_types( $types, $product_type )
168
  {
169
 
170
  $product_types = (array) WC_Vendors::$pv_options->get_option( 'hide_product_types' );
46
 
47
  add_action( 'admin_menu', array( $this, 'remove_menu_page' ), 99 );
48
  add_action( 'add_meta_boxes', array( $this, 'remove_meta_boxes' ), 99 );
49
+ add_filter( 'product_type_selector', array( $this, 'filter_product_types' ), 99 );
50
  add_filter( 'product_type_options', array( $this, 'filter_product_type_options' ), 99 );
51
  add_filter( 'woocommerce_product_data_tabs', array( $this, 'filter_product_data_tabs' ), 99, 2 );
52
 
164
  *
165
  * @return unknown
166
  */
167
+ function filter_product_types( $types )
168
  {
169
 
170
  $product_types = (array) WC_Vendors::$pv_options->get_option( 'hide_product_types' );
classes/admin/class-vendor-admin-dashboard.php CHANGED
@@ -378,6 +378,12 @@ class WCV_Vendor_Order_Page extends WP_List_Table
378
 
379
  if ( !empty( $ids ) ) {
380
  foreach ($ids as $order_id ) {
 
 
 
 
 
 
381
  $shippers = (array) get_post_meta( $order_id, 'wc_pv_shipped', true );
382
  if( !in_array($user_id, $shippers)) {
383
  $shippers[] = $user_id;
@@ -437,11 +443,13 @@ class WCV_Vendor_Order_Page extends WP_List_Table
437
  $products = '';
438
 
439
  foreach ( $valid as $key => $item ) {
 
 
440
 
441
  $products .= '<strong>'. $item['qty'] . ' x ' . $item['name'] . '</strong><br />';
442
 
443
  if ( $metadata = $order->has_meta( $item['product_id'] ) ) {
444
- echo '<table cellspacing="0" class="wcv_display_meta">';
445
  foreach ( $metadata as $meta ) {
446
 
447
  // Skip hidden core fields
@@ -470,12 +478,12 @@ class WCV_Vendor_Order_Page extends WP_List_Table
470
  $meta['meta_key'] = wc_attribute_label( wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
471
  $meta['meta_value'] = isset( $term->name ) ? $term->name : $meta['meta_value'];
472
  } else {
473
- $meta['meta_key'] = apply_filters( 'woocommerce_attribute_label', wc_attribute_label( $meta['meta_key'], $_product ), $meta['meta_key'] );
474
  }
475
 
476
- echo '<tr><th>' . wp_kses_post( rawurldecode( $meta['meta_key'] ) ) . ':</th><td>' . wp_kses_post( wpautop( make_clickable( rawurldecode( $meta['meta_value'] ) ) ) ) . '</td></tr>';
477
  }
478
- echo '</table>';
479
  }
480
 
481
  }
378
 
379
  if ( !empty( $ids ) ) {
380
  foreach ($ids as $order_id ) {
381
+ $order = wc_get_order( $order_id );
382
+ $vendors = WCV_Vendors::get_vendors_from_order( $order );
383
+ $vendor_ids = array_keys( $vendors );
384
+ if ( !in_array( $user_id, $vendor_ids ) ) {
385
+ wp_die( __( 'You are not allowed to modify this order.', 'wcvendors' ) );
386
+ }
387
  $shippers = (array) get_post_meta( $order_id, 'wc_pv_shipped', true );
388
  if( !in_array($user_id, $shippers)) {
389
  $shippers[] = $user_id;
443
  $products = '';
444
 
445
  foreach ( $valid as $key => $item ) {
446
+
447
+ $wc_product = new WC_Product( $item['product_id'] );
448
 
449
  $products .= '<strong>'. $item['qty'] . ' x ' . $item['name'] . '</strong><br />';
450
 
451
  if ( $metadata = $order->has_meta( $item['product_id'] ) ) {
452
+ $products .= '<table cellspacing="0" class="wcv_display_meta">';
453
  foreach ( $metadata as $meta ) {
454
 
455
  // Skip hidden core fields
478
  $meta['meta_key'] = wc_attribute_label( wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
479
  $meta['meta_value'] = isset( $term->name ) ? $term->name : $meta['meta_value'];
480
  } else {
481
+ $meta['meta_key'] = apply_filters( 'woocommerce_attribute_label', wc_attribute_label( $meta['meta_key'], $wc_product ), $meta['meta_key'] );
482
  }
483
 
484
+ $products .= '<tr><th>' . wp_kses_post( rawurldecode( $meta['meta_key'] ) ) . ':</th><td>' . wp_kses_post( wpautop( make_clickable( rawurldecode( $meta['meta_value'] ) ) ) ) . '</td></tr>';
485
  }
486
+ $products .= '</table>';
487
  }
488
 
489
  }
classes/admin/emails/class-emails.php CHANGED
@@ -34,7 +34,7 @@ class WCV_Emails
34
  {
35
  global $woocommerce;
36
 
37
- if ( $from != $to && $post->post_status == 'pending' && WCV_Vendors::is_vendor( $post->post_author ) ) {
38
  $mails = $woocommerce->mailer()->get_emails();
39
  if ( !empty( $mails ) ) {
40
  $mails[ 'WC_Email_Notify_Admin' ]->trigger( $post->post_id, $post );
34
  {
35
  global $woocommerce;
36
 
37
+ if ( $from != $to && $post->post_status == 'pending' && WCV_Vendors::is_vendor( $post->post_author ) && $post->post_type == 'product' ) {
38
  $mails = $woocommerce->mailer()->get_emails();
39
  if ( !empty( $mails ) ) {
40
  $mails[ 'WC_Email_Notify_Admin' ]->trigger( $post->post_id, $post );
classes/admin/settings/classes/sf-class-settings.php CHANGED
@@ -779,11 +779,14 @@ if ( !class_exists( 'SF_Settings_API' ) ) {
779
 
780
  echo str_replace( "'>", "'><option></option>", wp_dropdown_pages( $args ) );
781
 
 
 
 
782
  echo $description;
783
 
784
  if ( $select2 ) : ?>
785
  <script type="text/javascript">jQuery(function () {
786
- jQuery("#<?php echo $id; ?>").select2({ allowClear: true, placeholder: "<?php _e( 'Select a page...', 'geczy' ); ?>", width: '350px' });
787
  });</script>
788
  <?php endif;
789
 
779
 
780
  echo str_replace( "'>", "'><option></option>", wp_dropdown_pages( $args ) );
781
 
782
+ echo '<a href="post.php?post='.$selected.'&action=edit" class="button">'.__( 'Edit Page', 'wcvendors' ).'</a>';
783
+ echo '<a href="'.get_permalink( $selected ). '" class="button">'.__( 'View Page', 'wcvendors' ).'</a>';
784
+
785
  echo $description;
786
 
787
  if ( $select2 ) : ?>
788
  <script type="text/javascript">jQuery(function () {
789
+ jQuery("#<?php echo $id; ?>").select2({ allowClear: true, placeholder: "<?php _e( 'Select a page...', 'wcvendors' ); ?>", width: '350px' });
790
  });</script>
791
  <?php endif;
792
 
classes/class-vendors.php CHANGED
@@ -499,7 +499,7 @@ class WCV_Vendors
499
  'tax' => $item['line_tax'],
500
  'subtotal_tax' => $item['line_subtotal_tax'],
501
  'tax_data' => maybe_unserialize( $item['line_tax_data'] ),
502
- 'commission' => WCV_Commission::calculate_commission( $item['line_subtotal'], $item['product_id'], $order ),
503
  );
504
  }
505
  }
499
  'tax' => $item['line_tax'],
500
  'subtotal_tax' => $item['line_subtotal_tax'],
501
  'tax_data' => maybe_unserialize( $item['line_tax_data'] ),
502
+ 'commission' => WCV_Commission::calculate_commission( $item['line_subtotal'], $item['product_id'], $order, $item['qty'] ),
503
  );
504
  }
505
  }
classes/front/dashboard/class-vendor-dashboard.php CHANGED
@@ -32,10 +32,15 @@ class WCV_Vendor_Dashboard
32
  $user_id = get_current_user_id();
33
 
34
  if ( !empty( $_GET['wc_pv_mark_shipped'] ) ) {
35
- $shop_name = WCV_Vendors::get_vendor_shop_name( $user_id );
36
  $order_id = $_GET['wc_pv_mark_shipped'];
 
 
 
 
 
 
 
37
  $shippers = (array) get_post_meta( $order_id, 'wc_pv_shipped', true );
38
- $order = new WC_Order( $order_id );
39
 
40
  // If not in the shippers array mark as shipped otherwise do nothing.
41
  if( !in_array($user_id, $shippers)) {
@@ -46,6 +51,7 @@ class WCV_Vendor_Dashboard
46
  }
47
  do_action('wcvendors_vendor_ship', $order_id, $user_id);
48
  wc_add_notice( __( 'Order marked shipped.', 'wcvendors' ), 'success' );
 
49
  $order->add_order_note( apply_filters( 'wcvendors_vendor_shipped_note', __( $shop_name . ' has marked as shipped. ', 'wcvendors') ), $user_id ) ;
50
  } elseif ( false != ( $key = array_search( $user_id, $shippers) ) ) {
51
  unset( $shippers[$key] ); // Remove user from the shippers array
32
  $user_id = get_current_user_id();
33
 
34
  if ( !empty( $_GET['wc_pv_mark_shipped'] ) ) {
 
35
  $order_id = $_GET['wc_pv_mark_shipped'];
36
+ $order = wc_get_order( $order_id );
37
+ $vendors = WCV_Vendors::get_vendors_from_order( $order );
38
+ $vendor_ids = array_keys( $vendors );
39
+ if ( !in_array( $user_id, $vendor_ids ) ) {
40
+ wc_add_notice( __( 'You are not allowed to modify this order.', 'wcvendors' ) );
41
+ return null;
42
+ }
43
  $shippers = (array) get_post_meta( $order_id, 'wc_pv_shipped', true );
 
44
 
45
  // If not in the shippers array mark as shipped otherwise do nothing.
46
  if( !in_array($user_id, $shippers)) {
51
  }
52
  do_action('wcvendors_vendor_ship', $order_id, $user_id);
53
  wc_add_notice( __( 'Order marked shipped.', 'wcvendors' ), 'success' );
54
+ $shop_name = WCV_Vendors::get_vendor_shop_name( $user_id );
55
  $order->add_order_note( apply_filters( 'wcvendors_vendor_shipped_note', __( $shop_name . ' has marked as shipped. ', 'wcvendors') ), $user_id ) ;
56
  } elseif ( false != ( $key = array_search( $user_id, $shippers) ) ) {
57
  unset( $shippers[$key] ); // Remove user from the shippers array
classes/front/orders/class-orders.php CHANGED
@@ -53,11 +53,17 @@ class WCV_Orders
53
  $products = array( $this->product_id );
54
 
55
  $_product = get_product( $this->product_id );
56
- $children = $_product->get_children();
57
- if ( !empty( $children ) ) {
58
- $products = array_merge($products, $children);
59
- $products = array_unique($products);
60
- }
 
 
 
 
 
 
61
 
62
  $this->orders = WCV_Queries::get_orders_for_products( $products, array( 'vendor_id' => get_current_user_id() ) );
63
 
@@ -111,7 +117,7 @@ class WCV_Orders
111
  }
112
 
113
  if ( !$this->orders ) {
114
- return __( 'No orders.', 'wcvendors' );;
115
  }
116
 
117
  if ( !empty( $_POST[ 'submit_comment' ] ) ) {
53
  $products = array( $this->product_id );
54
 
55
  $_product = get_product( $this->product_id );
56
+
57
+
58
+ if ( is_object( $_product ) ) {
59
+
60
+ $children = $_product->get_children();
61
+
62
+ if ( !empty( $children ) ) {
63
+ $products = array_merge($products, $children);
64
+ $products = array_unique($products);
65
+ }
66
+ }
67
 
68
  $this->orders = WCV_Queries::get_orders_for_products( $products, array( 'vendor_id' => get_current_user_id() ) );
69
 
117
  }
118
 
119
  if ( !$this->orders ) {
120
+ return __( 'No orders.', 'wcvendors' );
121
  }
122
 
123
  if ( !empty( $_POST[ 'submit_comment' ] ) ) {
classes/gateways/PayPal_AdvPayments/paypal_ap.php CHANGED
@@ -296,14 +296,14 @@ class WC_PaypalAP extends WC_Payment_Gateway
296
  */
297
  private function get_receivers( $order )
298
  {
299
- $response = array();
300
 
301
- // Process the payment and split as required
302
- if ( $this->instapay ) {
303
 
304
  $receivers = WCV_Vendors::get_vendor_dues_from_order( $order );
305
  $i = 0;
306
-
307
  foreach ( $receivers as $author => $values ) {
308
  if ( empty( $values[ 'total' ] ) ) continue;
309
 
@@ -315,15 +315,15 @@ class WC_PaypalAP extends WC_Payment_Gateway
315
  $i++;
316
  }
317
 
318
- } else {
319
  // Send all monies to the site admin
320
  $single_receiver = new Receiver();
321
  $single_receiver->email = $this->main_paypal;
322
- $single_receiver->amount = $order->get_total();
323
  $single_receiver->primary = false;
324
  $single_receiver->invoiceId = $order->id;
325
- // Set a single reciever for the transaction
326
- $response[] = $single_receiver;
327
  }
328
 
329
  if ( $this->debug_me ) {
@@ -353,9 +353,9 @@ class WC_PaypalAP extends WC_Payment_Gateway
353
  $receiverList = new ReceiverList( $receivers );
354
 
355
  $actionType = 'CREATE';
356
- $cancelUrl = $order->get_cancel_order_url();
357
  $currencyCode = get_woocommerce_currency();
358
- $returnUrl = esc_url( add_query_arg( 'key', $order->order_key, add_query_arg( 'order-received', $order->id, $order->get_checkout_order_received_url() ) ) );
359
 
360
  $payRequest = new PayRequest( new RequestEnvelope( "en_US" ), $actionType, $cancelUrl, $currencyCode, $receiverList, $returnUrl );
361
 
@@ -425,6 +425,8 @@ class WC_PaypalAP extends WC_Payment_Gateway
425
  $shipping_given += $product[ 'shipping' ];
426
  $tax_given += $product[ 'tax' ];
427
 
 
 
428
  if ( !empty( $product[ 'commission' ] ) ) {
429
  $item = new InvoiceItem();
430
  $item->name = get_the_title( $product_id );
296
  */
297
  private function get_receivers( $order )
298
  {
299
+ $response = array();
300
 
301
+ // Process the payment and split as required
302
+ if ( $this->instapay ) {
303
 
304
  $receivers = WCV_Vendors::get_vendor_dues_from_order( $order );
305
  $i = 0;
306
+
307
  foreach ( $receivers as $author => $values ) {
308
  if ( empty( $values[ 'total' ] ) ) continue;
309
 
315
  $i++;
316
  }
317
 
318
+ } else {
319
  // Send all monies to the site admin
320
  $single_receiver = new Receiver();
321
  $single_receiver->email = $this->main_paypal;
322
+ $single_receiver->amount = $order->get_total();
323
  $single_receiver->primary = false;
324
  $single_receiver->invoiceId = $order->id;
325
+ // Set a single reciever for the transaction
326
+ $response[] = $single_receiver;
327
  }
328
 
329
  if ( $this->debug_me ) {
353
  $receiverList = new ReceiverList( $receivers );
354
 
355
  $actionType = 'CREATE';
356
+ $cancelUrl = $order->get_cancel_order_url_raw();
357
  $currencyCode = get_woocommerce_currency();
358
+ $returnUrl = esc_url_raw( add_query_arg( 'key', $order->order_key, add_query_arg( 'order-received', $order->id, $order->get_checkout_order_received_url() ) ) );
359
 
360
  $payRequest = new PayRequest( new RequestEnvelope( "en_US" ), $actionType, $cancelUrl, $currencyCode, $receiverList, $returnUrl );
361
 
425
  $shipping_given += $product[ 'shipping' ];
426
  $tax_given += $product[ 'tax' ];
427
 
428
+ $product[ 'commission' ] = round( $product[ 'commission' ] , 2);
429
+
430
  if ( !empty( $product[ 'commission' ] ) ) {
431
  $item = new InvoiceItem();
432
  $item->name = get_the_title( $product_id );
readme.txt CHANGED
@@ -6,7 +6,7 @@ Author URI: http://www.wcvendors.com/
6
  Plugin URI: http://www.wcvendors.com/
7
  Requires at least: 4.0
8
  Tested up to: 4.5.2
9
- Stable tag: 1.9.0
10
  License: GPLv2 or later
11
 
12
  The free multi-vendor plugin for WooCommerce. Now you can allow anyone to open a store on your site!
@@ -120,6 +120,21 @@ No Upgrade required at this time.
120
 
121
  == Changelog ==
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  = Version 1.9.0 - 25th of May 2016
124
 
125
  * Added: Support for WooCommerce 2.6
6
  Plugin URI: http://www.wcvendors.com/
7
  Requires at least: 4.0
8
  Tested up to: 4.5.2
9
+ Stable tag: 1.9.1
10
  License: GPLv2 or later
11
 
12
  The free multi-vendor plugin for WooCommerce. Now you can allow anyone to open a store on your site!
120
 
121
  == Changelog ==
122
 
123
+ = Version 1.9.1 - 17th of June 2016
124
+
125
+ * Added: GitHub Plugin URI for afragen/github-updater #282 thanks Agoruh
126
+ * Added: Edit and View page settings options
127
+ * Fixed: Missing Argument WCV_Admin_Users::filter_product_types() #288
128
+ * Fixed: Critical: PHP Fatal error: Call to a member function get_children() #287
129
+ * Fixed: Date range session data is not working #285
130
+ * Fixed HTML escaped characters in PaypalAP Cancel and Return URLs: #286 thanks Nicolas
131
+ * Fixed: Post type check to trigger_new_product() function #276
132
+ * Fixed: Updated to notices instead of wordpress errors
133
+ * Fixed: Product attribute fetch and returning HTML #283 thanks Mikko
134
+ * Fixed: Vendor Mark Shipped Security Fix #280 thanks Agoruh
135
+ * Fixed: Missing argument in Vendors Class
136
+ * Fixed: Rounded product commission to avoid error 589023 when submitting to PayPal #275 thanks Nicolas
137
+
138
  = Version 1.9.0 - 25th of May 2016
139
 
140
  * Added: Support for WooCommerce 2.6
templates/dashboard/orders.php CHANGED
@@ -127,6 +127,9 @@ jQuery(function () {
127
  foreach ($valid as $key => $item):
128
 
129
  $product_id = !empty( $item['variation_id'] ) ? $item['variation_id'] : $item['product_id'];
 
 
 
130
  $item_meta = new WC_Order_Item_Meta( $item );
131
  $item_meta = $item_meta->display( false, true ); ?>
132
  <?php echo $item['qty'] . 'x ' . $item['name']; ?>
127
  foreach ($valid as $key => $item):
128
 
129
  $product_id = !empty( $item['variation_id'] ) ? $item['variation_id'] : $item['product_id'];
130
+
131
+ $_product = $order->get_product_from_item( $item );
132
+
133
  $item_meta = new WC_Order_Item_Meta( $item );
134
  $item_meta = $item_meta->display( false, true ); ?>
135
  <?php echo $item['qty'] . 'x ' . $item['name']; ?>