PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 month ago MultilingualHooks.php 1 month 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