$rule ) { if ( isset( $rule['collector']['args']['cats'] ) ) { $cats = array(); foreach ( $rule['collector']['args']['cats'] as $term_id ) { $cats[] = pll_get_term( $term_id, $lang ); } $pricing_rules[ $k ]['collector']['args']['cats'] = $cats; } if ( isset( $rule['variation_rules']['args']['variations'] ) ) { $ids = array(); foreach ( $rule['variation_rules']['args']['variations'] as $id ) { $ids[] = $data_store->get( $id, $lang ); } $pricing_rules[ $k ]['variation_rules']['args']['variations'] = $ids; } } } return $pricing_rules; } /** * Makes sure that the product categories are displayed in only one language * on the Dynamic Pricing > category page (even when the admin languages filter requests all languages) * to avoid conflicts if inconsistent information would be given for products translations. * * @since 0.5 * * @param array $args WP_Term_Query arguments. * @param array $taxonomies Taxonomies used for the terms query. * @return array modified arguments */ public function get_terms_args( $args, $taxonomies ) { if ( in_array( 'product_cat', $taxonomies ) && empty( PLL()->curlang ) ) { $args['lang'] = PLL()->options['default_lang']; } return $args; } /** * Adds the translated categories to the pricing rules sets (Category pricing tab). * Hooked to the filter 'sanitize_option__s_category_pricing_rules'. * * @since 0.5 * * @param array $rules Pricing rules set. * @return array */ public function category_pricing_rules( $rules ) { foreach ( $rules as $set_id => $rule ) { $cat_id = (int) substr( $set_id, 4 ); foreach ( pll_get_term_translations( $cat_id ) as $lang => $tr_id ) { if ( $tr_id !== $cat_id ) { if ( isset( $rule['collector']['args']['cats'][0] ) ) { $rule['collector']['args']['cats'][0] = pll_get_term( $rule['collector']['args']['cats'][0], $lang ); } $rules[ 'set_' . $tr_id ] = $rule; } } } return $rules; } /** * Adds the translated categories to the pricing rules sets (Advanced Category pricing tab). * Hooked to the filter 'sanitize_option__a_category_pricing_rules'. * * @since 0.5 * * @param array $rules Pricing rules set. * @return array */ public function advanced_category_pricing_rules( $rules ) { foreach ( $rules as $set_id => $rule ) { if ( isset( $rule['collector']['args']['cats'] ) ) { $cats = array(); foreach ( $rule['collector']['args']['cats'] as $term_id ) { $cats = array_merge( $cats, array_values( pll_get_term_translations( $term_id ) ) ); } $rules[ $set_id ]['collector']['args']['cats'] = $cats; } if ( isset( $rule['targets'] ) ) { $cats = array(); foreach ( $rule['targets'] as $term_id ) { $cats = array_merge( $cats, array_values( pll_get_term_translations( $term_id ) ) ); } $rules[ $set_id ]['targets'] = $cats; } } return $rules; } }