class-wcml-woobe.php
45 lines
| 1 | <?php |
| 2 | |
| 3 | class WCML_Woobe implements \IWPML_Action { |
| 4 | |
| 5 | private $sitepress; |
| 6 | |
| 7 | private $post_translations; |
| 8 | |
| 9 | |
| 10 | public function __construct( SitePress $sitepress, WPML_Post_Translation $post_translations ) { |
| 11 | $this->sitepress = $sitepress; |
| 12 | $this->post_translations = $post_translations; |
| 13 | } |
| 14 | |
| 15 | public function add_hooks() { |
| 16 | add_action( 'woobe_after_update_page_field', [ $this, 'replace_price_in_translations' ], 10, 5 ); |
| 17 | } |
| 18 | |
| 19 | public function replace_price_in_translations( $product_id = null, $product = null, $field_key = null, $value = null, $field_type = null ) { |
| 20 | if ( $this->is_price_updated( $product_id, $field_key, $value ) |
| 21 | && $this->is_field_set_to_copy( $field_key ) |
| 22 | ) { |
| 23 | $translations = $this->post_translations->get_element_translations( $product_id, false, true ); |
| 24 | if ( ! empty( $translations ) ) { |
| 25 | foreach ( $translations as $translation ) { |
| 26 | update_post_meta( $translation, '_' . $field_key, $value ); |
| 27 | update_post_meta( $translation, '_price', $value ); |
| 28 | } |
| 29 | } |
| 30 | } |
| 31 | } |
| 32 | |
| 33 | private function is_price_updated( $product_id, $field_key, $value ) { |
| 34 | return is_numeric( $product_id ) |
| 35 | && 'regular_price' === $field_key |
| 36 | && is_numeric( $value ); |
| 37 | } |
| 38 | |
| 39 | private function is_field_set_to_copy( $field_key ) { |
| 40 | $settings = $this->sitepress->get_settings(); |
| 41 | $field_translation_setting = isset( $settings['translation-management']['custom_fields_translation'][ '_' . $field_key ] ) ? $settings['translation-management']['custom_fields_translation'][ '_' . $field_key ] : null; |
| 42 | return $field_translation_setting === $this->sitepress->get_wp_api()->constant( 'WPML_COPY_CUSTOM_FIELD' ); |
| 43 | } |
| 44 | } |
| 45 |