2013-02-22 41 views
1

我使用WPML(Wordpress多語言插件)與自定義帖子和字段(使用高級自定義字段插件),並且我有這個「問題」: 我有一個自定義帖子用自定義字段(文本),我在字段中輸入文本並保存。現在我轉到翻譯的文章,看到相同的自定義字段是空的。然後這些字段不同步。請注意,標記字段在語言之間很好地同步。 有人可以幫忙嗎?謝謝在兩種語言之間同步自定義字段(使用WPML)

回答

1

我不認爲自定義字段的保存值默認同步。只有變量的名稱等

所以,如果你有一個自定義字段,並且它不想在所有語言上具有相同的值,那麼不要將該自定義字段添加到其他語言中。只要掌握了主要語言。

然後在模板中,你可以利用這一點,來獲得永諾從主要語言的值:

<?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

哇!謝謝,好主意,但我必須爲該語言添加自定義字段,因爲有時我需要在字段中輸入不同的值。 :(其他想法? – 2013-02-22 15:14:07

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);