2013-02-22 5 views
1

Я использую WPML (многоязычный плагин Wordpress) с настраиваемыми сообщениями и полями (с плагином дополнительных пользовательских полей), и у меня есть эта проблема: У меня есть пользовательский пост с настраиваемым полем (текстом), я ввожу текст в поле и сохраняю. Теперь я перехожу к переведенному сообщению и вижу, что одно и то же настраиваемое поле пуст. Тогда поля ar не синхронизируются. Обратите внимание, что вместо этого поле Tag хорошо синхронизировано между языками. Кто-то может помочь? СпасибоСинхронизация настраиваемых полей между 2-мя языками (с WPML)

ответ

1

Я не думаю, что сохраненное значение настраиваемого поля синхронизируется по умолчанию. Только имя переменной и т. Д.

Итак, если у вас есть настраиваемое поле и он не будет иметь одинаковое значение на всех языках, просто не добавляйте это настраиваемое поле на другие языки. Просто имейте это на главном языке.

Затем в шаблоне вы можете использовать это, чтобы Allways получить значение из основного языка:

<?php the_field('fieldname',lang_page_original_id($post->ID));?> 

Затем добавить это functions.php

function lang_page_original_id($id){ 
    if(function_exists('icl_object_id')) { 
    return icl_object_id($id,'page', false, "MAIN LANGUAGE CODE EX: SV"); 
    } else { 
     return $id; 
    } 
} 
+0

Wow! Спасибо, хорошая идея, но я должен добавить настраиваемое поле также для языка, потому что иногда мне нужно вводить различное значение в поле. :(Другие идеи? –

0

Вот ACF документы: http://www.advancedcustomfields.com/resources/multilingual-custom-fields/

Но это не работает так хорошо, как вы можете ожидать. Синхронизация - это только «один путь» от оригинала до переведенных версий. См.: https://wordpress.stackexchange.com/questions/181338/fixed-values-for-same-post-translations/214120#214120 для более подробной информации.

Для использования функции синхронизации вам понадобится многоязычная CMS WPML.

0

Привет использовать это в вашем function.php работает 100%:

function sync_field_meta($post_id, $post, $update) { 

    $post_type = get_post_type($post_id); 
    // use this if u have muti custom post type 
    $posts_type = array('your_custom_post_type1', 'your_custom_post_type2', 'your_custom_post_type3', 'your_custom_post_type4'); 

    if(! in_array($post_type, $posts_type)) return; 

    $en = apply_filters('wpml_object_id', $post_id, 'any', FALSE, 'en'); 
    $fr = apply_filters('wpml_object_id', $post_id, 'any', FALSE, 'fr'); 

    // your acf key like (field_58136c9dc9963) you can check documention 
    $field = get_field('acf_key',$post_id); 

    if($en){ 
     update_field('acf_key',$field,$en); 
    } 
    if($fr){ 
     update_field('acf_key',$field,$fr); 
    } 


} 
add_action('save_post', 'sync_field_meta', 10, 3);