我正在使用WPML(Wordpress多语言插件)和自定义帖子和字段(使用高级自定义字段插件),我有这个“问题”: 我有一个自定义字段(文本)的自定义帖子,我在字段中输入文本并保存。现在我转到已翻译的帖子,看到相同的自定义字段为空。然后字段不同步。请注意,Tag字段在语言之间很好地同步。 有人可以帮忙吗?感谢
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
以下是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才能使用同步功能。
答案 2 :(得分:0)
你好在你的函数中使用它.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 );