ldc-groupe/content/plugins/acfml/classes/class-wpml-acf-worker.php
Vincent BRIDIER 134507db43 - Backup DEV
- Add DotEnv
- Fix Bato
- Etc..
2020-05-04 15:59:02 +02:00

61 lines
1.8 KiB
PHP

<?php
class WPML_ACF_Worker {
private $duplicated_post;
public function __construct($duplicated_post) {
$this->register_hooks();
$this->duplicated_post = $duplicated_post;
}
public function register_hooks() {
add_filter('wpml_duplicate_generic_string', array($this, 'duplicate_post_meta'), 10, 3);
add_filter('wpml_sync_parent_for_post_type', array($this, 'sync_parent_for_post_type'), 10, 2);
add_action('wpml_after_copy_custom_field', array($this, 'after_copy_custom_field'), 10, 3);
}
public function after_copy_custom_field($post_id_from, $post_id_to, $meta_key) {
$meta_value = get_post_meta($post_id_to, $meta_key, true);
$args['element_id'] = $post_id_to;
$args['element_type'] = get_post_type($post_id_to);
$target_lang = apply_filters( 'wpml_element_language_code', null, $args );
$is_serialized = is_serialized( $meta_value );
$meta_data = array(
'context' => 'custom_field',
'attribute' => 'value',
'key' => $meta_key,
'is_serialized' => $is_serialized,
'post_id' => $post_id_to,
'master_post_id' => $post_id_from
);
$meta_value_converted = $this->duplicate_post_meta($meta_value, $target_lang, $meta_data);
if ( $meta_value !== $meta_value_converted ) {
update_post_meta($post_id_to, $meta_key, $meta_value_converted, $meta_value);
}
}
public function duplicate_post_meta($meta_value, $target_lang, $meta_data) {
$processed_data = new WPML_ACF_Processed_Data($meta_value, $target_lang, $meta_data);
$field = $this->duplicated_post->resolve_field($processed_data);
$meta_value_converted = $field->convert_ids();
return $meta_value_converted;
}
public function sync_parent_for_post_type($sync, $post_type) {
if ("acf-field" == $post_type || "acf-field-group" == $post_type) {
$sync = false;
}
return $sync;
}
}