| 1 |
<?php |
| 2 |
|
| 3 |
// $strings_to_translate = apply_filters( 'deepl_translate_post_link_strings', $strings_to_translate, $WP_Post ); |
| 4 |
add_filter( 'deepl_translate_post_link_strings', 'idg_add_meta_data_to_translate', 10, 4 ); |
| 5 |
function idg_add_meta_data_to_translate( $strings_to_translate, $WP_Post, $target_lang, $source_lang ) { |
| 6 |
$debug = false; |
| 7 |
if ( $multi_titles = get_post_meta( $WP_Post->ID, 'multi_title', true ) ) { |
| 8 |
$multi_titles = json_decode( $multi_titles, true ); |
| 9 |
if ( $debug ) plouf($multi_titles); |
| 10 |
foreach ( $multi_titles['titles'] as $multi_title => $multi_title_data ) { |
| 11 |
$key = 'mtitle#' . $multi_title; |
| 12 |
$strings_to_translate[$key] = $multi_title_data['value']; |
| 13 |
if ( isset( $multi_title_data['additional'] ) ) foreach ( $multi_title_data['additional'] as $sub_multi_title => $sub_multi_title_value ) { |
| 14 |
$sub_key = 'mtitle#' . $multi_title . '#' . $sub_multi_title; |
| 15 |
$strings_to_translate[$sub_key] = $sub_multi_title_value; |
| 16 |
|
| 17 |
|
| 18 |
} |
| 19 |
} |
| 20 |
|
| 21 |
} |
| 22 |
if ( $debug ) plouf($strings_to_translate); |
| 23 |
|
| 24 |
return $strings_to_translate; |
| 25 |
} |
| 26 |
|
| 27 |
//do_action('deepl_translate_post_link_translation_success', $response, $WP_Post ); |
| 28 |
add_action('deepl_translate_post_link_translation_success', 'idg_update_meta_data_translated', 10, 2 ); |
| 29 |
function idg_update_meta_data_translated( $response, $WP_Post ) { |
| 30 |
|
| 31 |
$debug = false; |
| 32 |
if ( $multi_titles = get_post_meta( $WP_Post->ID, 'multi_title', true ) ) { |
| 33 |
$multi_titles = json_decode( $multi_titles, true ); |
| 34 |
if ( $debug ) plouf($multi_titles, " original"); |
| 35 |
foreach ( $response['translations'] as $key => $translation ) { |
| 36 |
|
| 37 |
$translation = deepl_unicode_decode( $translation ); |
| 38 |
if ( substr( $key, 0, 7 ) == 'mtitle#' ) { |
| 39 |
$explode_key = explode( '#', $key ); |
| 40 |
if ( count( $explode_key ) == 2 ) { |
| 41 |
$main_key = $explode_key[1]; |
| 42 |
$multi_titles['titles'][$main_key]['value'] = $translation; |
| 43 |
//echo "\n on update $main_key value = '$translation'"; |
| 44 |
|
| 45 |
} |
| 46 |
elseif ( count( $explode_key ) == 3 ) { |
| 47 |
$main_key = $explode_key[1]; |
| 48 |
$additionnal_key = $explode_key[2]; |
| 49 |
$multi_titles['titles'][$main_key]['additional'][$additionnal_key] = $translation; |
| 50 |
//echo "\n on update $main_key / add $additionnal_key value = '$translation'"; |
| 51 |
} |
| 52 |
else { |
| 53 |
//plouf($explode_key, " no 2 3"); |
| 54 |
} |
| 55 |
} |
| 56 |
else { |
| 57 |
//echo " no match on $key"; |
| 58 |
} |
| 59 |
} |
| 60 |
if ( $debug ) plouf($multi_titles); |
| 61 |
$json_data = json_encode( $multi_titles, JSON_UNESCAPED_UNICODE); |
| 62 |
if ( $debug ) {echo __FUNCTION__; var_dump( $json_data ); } |
| 63 |
update_post_meta( $WP_Post->ID, 'multi_title', $json_data ); |
| 64 |
|
| 65 |
if ( $debug ) die('zeroijrij'); |
| 66 |
return true; |
| 67 |
} |
| 68 |
|
| 69 |
return false; |
| 70 |
} |