2

我正在使用带有自定义帖子和字段(带有高级自定义字段插件)的 WPML(Wordpress 多语言插件)并且我有这个“问题”:我有一个带有自定义字段(文本)的自定义帖子,我在字段中输入文本并保存。现在我转到翻译后的帖子,看到相同的自定义字段是空的。然后字段不同步。请注意,相反,标签字段在语言之间很好地同步。有人可以帮忙吗?谢谢

4

3 回答 3

2

我不认为自定义字段的保存值默认同步。只有变量的名称等。

因此,如果您有一个自定义字段并且不希望它在所有语言上都具有相同的值,只需不要将该自定义字段添加到其他语言。把它放在主要语言上。

然后在模板中,您可以使用它来始终从主要语言中获取值:

<?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;
    }
}
于 2013-02-22T15:02:27.050 回答
1

以下是 ACF 文档: http: //www.advancedcustomfields.com/resources/multilingual-custom-fields/

但它并没有你想象的那么好。同步只是从原始版本到翻译版本的“一种方式”。有关更多详细信息,请参阅:https ://wordpress.stackexchange.com/questions/181338/fixed-values-for-same-post-translations/214120#214120 。

您将需要 WPML 多语言 CMS 才能使用同步功能。

于 2016-01-09T00:51:00.403 回答
1

嗨,在你的 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 );
于 2016-11-08T17:42:00.573 回答