Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
woocommerce-multilingual
/
classes
/
Multicurrency
/
Shipping
:
ShippingClasses.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace WCML\Multicurrency\Shipping; class ShippingClasses { /** * Adds shipping classes for currencies fields to shipping method wp-admin GUI. * * @param array $field * @param \WCML_Multi_Currency $wcmlMultiCurrency * * @return array */ public static function addFields( array $field, \WCML_Multi_Currency $wcmlMultiCurrency ) { $shippingClasses = WC()->shipping()->get_shipping_classes(); if ( ! empty( $shippingClasses ) ) { foreach ( $wcmlMultiCurrency->get_currency_codes() as $currencyCode ) { if ( $wcmlMultiCurrency->get_default_currency() === $currencyCode ) { continue; } foreach ( $shippingClasses as $shippingClass ) { $classSourceLanguageCode = self::getSourceLanguageCode( $shippingClass ); if ( $classSourceLanguageCode === null ) { $field = self::addShippingClassField( $field, $shippingClass, $currencyCode ); } else { $field = self::askToSwitchLanguage( $field, $shippingClass, $classSourceLanguageCode ); } } $field = self::addNoShippingClassField( $field, $currencyCode ); } } return $field; } /** * Returns source language of the shipping class which was created originally. * * @param \WP_Term $shippingClass * * @return string|null */ protected static function getSourceLanguageCode( $shippingClass ) { $classLanguageDetails = apply_filters( 'wpml_element_language_details', false, [ 'element_id' => $shippingClass->term_id, 'element_type' => $shippingClass->taxonomy, ] ); return isset( $classLanguageDetails->source_language_code ) ? $classLanguageDetails->source_language_code : null; } /** * Adds field to the GUI which explains user should switch to the other language to provide the data. * * @param array $field * @param \WP_Term $shippingClass * @param string $classSourceLanguageCode * * @return array */ protected static function askToSwitchLanguage( $field, $shippingClass, $classSourceLanguageCode ) { $field[ 'wcml_ask_to_switch_language_' . $shippingClass->term_id ] = [ 'title' => '', /* translators: %1$s is a shipping class name and %2$s is a language code */ 'description' => sprintf( __( 'Your shipping class %1$s has been created in %2$s language. Please switch your language if you want to provide shipping costs in different currencies for this class.', 'woocommerce-multilingual' ), $shippingClass->name, $classSourceLanguageCode), 'type' => 'title' ]; return $field; } protected static function addShippingClassField( $field, $shippingClass, $currencyCode ) { $field[ 'class_cost_' . $shippingClass->term_id . '_' . $currencyCode ] = [ /* translators: %1$s is a shipping class name and %2$s is a currency code */ 'title' => sprintf( __( '"%1$s" shipping class cost in %2$s', 'woocommerce-multilingual' ), esc_html( $shippingClass->name ), esc_html( $currencyCode ) ), 'type' => 'text', 'placeholder' => __( 'N/A', 'woocommerce-multilingual' ), 'class' => 'wcml-shipping-cost-currency' ]; return $field; } protected static function addNoShippingClassField( $field, $currencyCode ) { $field[ 'no_class_cost_' . $currencyCode ] = [ /* translators: %s is a currency code */ 'title' => sprintf( __( 'No shipping class cost in %s', 'woocommerce-multilingual' ), esc_html( $currencyCode ) ), 'type' => 'text', 'placeholder' => __( 'N/A', 'woocommerce-multilingual' ), 'default' => '', 'class' => 'wcml-shipping-cost-currency' ]; return $field; } }