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 / compatibility / FacebookForWc / MultilingualHooks.php
woocommerce-multilingual / compatibility / FacebookForWc Last commit date
Factory.php 1 week ago MultilingualHooks.php 1 week ago
MultilingualHooks.php
60 lines
1 <?php
2
3 namespace WCML\Compatibility\FacebookForWc;
4
5 use WPML\LIB\WP\Hooks as WPHooks;
6 use function WPML\FP\spreadArgs;
7
8 class MultilingualHooks implements \IWPML_Action {
9 private $cache_sync_product_only_allow_these_languages = null;
10 private $cache_sync_product_list = [];
11
12 public function add_hooks() {
13 WPHooks::onFilter( 'facebook_for_woocommerce_integration_prepare_product', 11, 2 )
14 ->then( spreadArgs( [ $this, 'facebook_product_url_with_correct_language' ] ) );
15
16 WPHooks::onFilter( 'wc_facebook_should_sync_product', 10, 2 )
17 ->then( spreadArgs( [ $this, 'facebook_sync_product_filtered_by_language' ] ) );
18 }
19
20 public function facebook_product_url_with_correct_language( $product_data, $id ) {
21 if ( empty( $product_data['url'] ) ) {
22 return $product_data;
23 }
24
25 $product_lang = apply_filters( 'wpml_post_language_details', null, $id );
26 if ( ! empty( $product_lang['language_code'] ) ) {
27 $product_data['url'] = apply_filters( 'wpml_permalink', $product_data['url'], $product_lang['language_code'] );
28 }
29
30 return $product_data;
31 }
32
33 public function facebook_sync_product_filtered_by_language( $should_sync, $product ) {
34 if ( null === $this->cache_sync_product_only_allow_these_languages ) {
35 $this->cache_sync_product_only_allow_these_languages = apply_filters( 'wcml_facebook_sync_products_languages', [] );
36 }
37
38 if ( empty( $this->cache_sync_product_only_allow_these_languages ) || ! is_array( $this->cache_sync_product_only_allow_these_languages ) ) {
39 return $should_sync;
40 }
41
42 $product_id = (int) $product->get_id();
43
44 if ( \in_array( $product_id, $this->cache_sync_product_list, true ) ) {
45 return false;
46 }
47
48 $product_lang = apply_filters( 'wpml_post_language_details', null, $product->get_id() );
49 $product_lang_code = $product_lang['language_code'] ?? null;
50
51 if ( ! in_array( $product_lang_code, $this->cache_sync_product_only_allow_these_languages, true ) ) {
52 $this->cache_sync_product_list[] = $product_id;
53
54 return false;
55 }
56
57 return $should_sync;
58 }
59 }
60