PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 / Synchronization / Component / Stock.php
woocommerce-multilingual / classes / Synchronization / Component Last commit date
Attachments.php 1 year ago Attributes.php 4 months ago DownloadableFiles.php 4 months ago Linked.php 10 months ago Meta.php 1 year ago Post.php 3 months ago Stock.php 1 year ago Synchronizer.php 1 year ago SynchronizerForMeta.php 8 months ago Taxonomies.php 4 months ago VariationAttachments.php 1 year ago VariationMeta.php 8 months ago VariationTaxonomies.php 8 months ago Variations.php 1 month ago
Stock.php
53 lines
1 <?php
2
3 namespace WCML\Synchronization\Component;
4
5 class Stock extends SynchronizerForMeta {
6
7 const STOCK_META_KEY = '_stock';
8 const STOCK_STATUS_META_KEY = '_stock_status';
9
10 /**
11 * @param \WP_Post $product
12 * @param int[] $translationsIds
13 * @param array<int,string> $translationsLanguages
14 */
15 public function run( $product, $translationsIds, $translationsLanguages ) {
16 $productObject = wc_get_product( $product->ID );
17 $productIdManagingStock = $productObject->get_stock_managed_by_id();
18
19 // Assume that the translation of the product managing stock is the product managing stock of the translations.
20 $translationsManagingStock = $translationsIds;
21 if ( $productIdManagingStock !== $product->ID ) {
22 $translationsManagingStock = $this->elementTranslations->get_element_translations( $productIdManagingStock, false, false );
23 }
24
25 $this->synchronizeMeta( $productIdManagingStock, $translationsManagingStock, self::STOCK_META_KEY );
26 $this->synchronizeMeta( $product->ID, $translationsIds, self::STOCK_STATUS_META_KEY );
27
28 if ( $productIdManagingStock !== $product->ID ) {
29 $this->deleteCache( $productIdManagingStock );
30 foreach ( $translationsManagingStock as $translationManagingStock ) {
31 $this->deleteCache( $translationManagingStock );
32 }
33 }
34
35 delete_transient( 'wc_low_stock_count' );
36 delete_transient( 'wc_outofstock_count' );
37 }
38
39 /**
40 * @param int $productId
41 *
42 * @todo Collect IDs that need cache deleting, and delete on shutdown. Note that variations might be firing this multiple times for their parent product.
43 */
44 private function deleteCache( $productId ) {
45 wp_cache_delete( $productId, 'post_meta' );
46 wp_cache_delete( 'product-' . $productId, 'products' );
47 delete_transient( 'wc_product_children_' . $productId );
48 $wcml_data_store = wcml_product_data_store_cpt();
49 $wcml_data_store->update_lookup_table_data( $productId );
50 }
51
52 }
53