Advertisement
mariovalney

WooCommerce Shipping Additional Days - Stand Alone

Mar 6th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.05 KB | None | 0 0
  1. <?php
  2.  
  3. function mytheme_get_max_shipping_classes_additional_time( $shipping_classes_ids = array() ) {
  4.     if ( ! is_array( $shipping_classes_ids ) ) {
  5.         return 0;
  6.     }
  7.  
  8.     $shipping_classes_ids = array_filter( $shipping_classes_ids, function( $id ) {
  9.         return ! is_nan( intval( $id ) );
  10.     } );
  11.  
  12.     if ( empty( $shipping_classes_ids ) ) {
  13.         return 0;
  14.     }
  15.  
  16.     $shipping_class = get_terms( array(
  17.         'taxonomy'      => 'product_shipping_class',
  18.         'hide_empty'    => true,
  19.         'include'       => (array) $shipping_classes_ids,
  20.         'number'        => 1,
  21.         'order'         => 'DESC',
  22.         'orderby'       => 'meta_value_num',
  23.         'meta_key'      => WCSAD_SHIPPING_CLASS_ADDITIONAL_TIME,
  24.     ) );
  25.  
  26.     if ( is_wp_error( $shipping_class ) || empty( $shipping_class ) ) {
  27.         return 0;
  28.     }
  29.  
  30.     return get_shipping_class_additional_time( $shipping_class[0]->term_id );
  31. }
  32.  
  33.  
  34. function mytheme_woocommerce_correios_shipping_additional_time( $package ) {
  35.     if ( empty( $package['contents'] ) ) {
  36.         return 0;
  37.     }
  38.  
  39.     $shipping_classes_ids = array();
  40.     $product_additional_days = array();
  41.  
  42.     foreach ( $package['contents'] as $product_data ) {
  43.         $shipping_classes_ids[] = $product_data['data']->get_shipping_class_id();
  44.         $product_additional_days = get_products_additional_time( $product_data['product_id'] );
  45.     }
  46.  
  47.  
  48.     $shipping_classes_ids = array_unique( array_values( array_filter( $shipping_classes_ids ) ) );
  49.     $max_additional_time = mytheme_get_max_shipping_classes_additional_time( $shipping_classes_ids );
  50.  
  51.     return max( $max_additional_time, $product_additional_days );
  52. }
  53.  
  54. function mytheme_get_additional_days() {
  55.     $packages = WC_Cart::get_shipping_packages();
  56.  
  57.     $additional_days = 0;
  58.     foreach ( $packages as $package ) {
  59.         $package_additional_days = mytheme_woocommerce_correios_shipping_additional_time( $package );
  60.  
  61.         $additional_days = max( $additional_days, $package_additional_days );
  62.     }
  63.  
  64.     return $additional_days;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement