PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / product / Hooks.php
woocommerce-multilingual / classes / product Last commit date
Hooks.php 1 week ago class-wcml-product-data-store-cpt.php 1 week ago
Hooks.php
38 lines
1 <?php
2
3 namespace WCML\Products;
4
5 use WPML\FP\Obj;
6 use WPML\LIB\WP\Hooks as WpHooks;
7 use function WPML\FP\spreadArgs;
8
9 class Hooks implements \IWPML_Frontend_Action, \IWPML_Backend_Action {
10 public function add_hooks() {
11 WpHooks::onFilter( 'woocommerce_variable_children_args' )
12 ->then( spreadArgs( self::forceProductLanguageInQuery() ) );
13
14 WpHooks::onAction( 'woocommerce_after_product_object_save' )
15 ->then( spreadArgs( [ $this, 'flushPostVariationCache' ] ) );
16 }
17
18 private static function forceProductLanguageInQuery() {
19 return function( $args ) {
20 return Obj::assoc(
21 'wpml_lang',
22 apply_filters( 'wpml_element_language_code', '', [ 'element_id' => Obj::prop( 'post_parent', $args ), 'element_type' => 'product_variation' ] ),
23 $args
24 );
25 };
26 }
27
28 public function flushPostVariationCache( $product ) {
29 if ( ! $product instanceof \WC_Product_Variable ) {
30 return;
31 }
32
33 foreach ( (array) $product->get_children() as $variationId ) {
34 wp_cache_delete( $variationId, 'posts' );
35 }
36 }
37 }
38