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 / WcProductAddons / SharedHooks.php
woocommerce-multilingual / compatibility / WcProductAddons Last commit date
Factory.php 1 month ago JobHooks.php 1 month ago MulticurrencyHooks.php 1 month ago SharedHooks.php 1 month ago class-wcml-product-addons.php 1 month ago
SharedHooks.php
57 lines
1 <?php
2
3 namespace WCML\Compatibility\WcProductAddons;
4
5 use WPML\FP\Fns;
6
7 class SharedHooks implements \IWPML_Action {
8
9 const TEMPLATE_FOLDER = '/templates/compatibility/';
10 const ADDONS_OPTION_KEY = '_product_addons';
11
12 public function add_hooks() {
13 $withoutRecursion = Fns::withoutRecursion( Fns::noop() );
14
15 add_action( 'init', [ $this, 'loadAssets' ] );
16 add_action( 'updated_post_meta', $withoutRecursion( [ $this, 'triggerGlobalAddonUpdated' ] ), 10, 4 );
17 add_action( 'added_post_meta', $withoutRecursion( [ $this, 'triggerGlobalAddonUpdated' ] ), 10, 4 );
18 }
19
20 public function loadAssets() {
21 global $pagenow;
22
23 $isProductPage = 'post.php' === $pagenow && isset( $_GET['post'] );
24 $isProductNewPage = 'post-new.php' === $pagenow && isset( $_GET['post_type'] ) && 'product' === $_GET['post_type'];
25
26 if ( $isProductPage || $isProductNewPage || self::isGlobalAddonEditPage() ) {
27 wp_enqueue_script( 'wcml-product-addons', WCML_PLUGIN_URL . '/compatibility/res/js/wcml-product-addons' . WCML_JS_MIN . '.js', [ 'jquery' ], WCML_VERSION );
28 wp_enqueue_style( 'wcml-product-addons', WCML_PLUGIN_URL . '/compatibility/res/css/wcml-product-addons.css', [ 'wpml-dialog' ], WCML_VERSION );
29 }
30 }
31
32 public static function isGlobalAddonEditPage() {
33 global $pagenow;
34
35 return 'edit.php' === $pagenow &&
36 isset( $_GET['post_type'] ) &&
37 'product' === $_GET['post_type'] &&
38 isset( $_GET['page'] ) &&
39 ( 'global_addons' === $_GET['page'] || 'addons' === $_GET['page'] );
40 }
41
42 public function triggerGlobalAddonUpdated( $metaId, $id, $metaKey, $addons ) {
43 if ( self::ADDONS_OPTION_KEY === $metaKey && self::isGlobalAddon( $id ) ) {
44 do_action( 'wcml_product_addons_global_updated', $metaId, $id, $metaKey, $addons );
45 }
46 }
47
48 public static function isGlobalAddon( $postId ) {
49 return 'global_product_addon' === get_post_type( $postId );
50 }
51
52 public static function getProductAddons( $productId ) {
53 $data = get_post_meta( $productId, self::ADDONS_OPTION_KEY, true );
54 return $data ? maybe_unserialize( $data ) : [];
55 }
56 }
57