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 / Terms / Count / Hooks.php
woocommerce-multilingual / classes / Terms / Count Last commit date
Hooks.php 1 week ago
Hooks.php
58 lines
1 <?php
2
3 namespace WCML\Terms\Count;
4
5 use WCML\Terms\SuspendWpmlFiltersFactory;
6 use WPML\FP\Fns;
7 use WPML\FP\Obj;
8 use WPML\LIB\WP\Hooks as WpHooks;
9 use WCML\Utilities\WCTaxonomies;
10 use function WPML\FP\spreadArgs;
11
12 class Hooks implements \IWPML_Backend_Action, \IWPML_REST_Action {
13
14 public function add_hooks() {
15 WpHooks::onFilter( 'woocommerce_product_recount_terms', PHP_INT_MAX )
16 ->then( spreadArgs( [ self::class, 'disableTermFilters' ] ) );
17
18 WpHooks::onAction( 'icl_save_term_translation', 10, 2 )
19 ->then( spreadArgs( [ self::class, 'recountOnSaveTermTranslation' ] ) );
20
21 WpHooks::onAction( 'wpml_sync_term_hierarchy_done' )
22 ->then( [ self::class, 'recountAllTermsInShutdown' ] );
23 }
24
25 public static function disableTermFilters( $shouldRecountTerms ) {
26 if ( $shouldRecountTerms ) {
27 $filtersSuspend = SuspendWpmlFiltersFactory::create();
28
29 add_action( 'delete_transient_wc_term_counts', function() use ( $filtersSuspend ) {
30 $filtersSuspend->resume();
31 } );
32
33 }
34
35 return $shouldRecountTerms;
36 }
37
38 public static function recountOnSaveTermTranslation( $originalTax, $translatedTerm ) {
39 $taxonomyName = Obj::prop( 'taxonomy', $originalTax );
40
41 if ( in_array( $taxonomyName, [ WCTaxonomies::TAXONOMY_PRODUCT_CATEGORY, WCTaxonomies::TAXONOMY_PRODUCT_TAG ], true ) ) {
42 SuspendWpmlFiltersFactory::create()->runAndResume( function () use ( $translatedTerm, $taxonomyName ) {
43 _wc_term_recount( [ (int) Obj::prop( 'term_taxonomy_id', $translatedTerm ) ], get_taxonomy( $taxonomyName ) );
44 } );
45 }
46 }
47
48 public static function recountAllTermsInShutdown() {
49 WpHooks::onAction( 'shutdown' )->then( Fns::once( [ self::class, 'recountAllTerms' ] ) );
50 }
51
52 public static function recountAllTerms() {
53 SuspendWpmlFiltersFactory::create()->runAndResume( function() {
54 wc_recount_all_terms();
55 } );
56 }
57 }
58