我使用 WooCommerce 和 WPML 开发了一个网站。使用 ACF,我创建了几个字段,当我使用默认语言时,这些字段会检索正确的输出。但是当我切换语言时,这些就不起作用了。
$terms = get_the_terms($product_id, 'pa_establecimiento');
$telephone = get_field('establishment_phone', 'pa_establecimiento_' . $terms[0]->term_id);
在上面的代码片段中,它适用于默认语言,但当我更改语言时它不起作用。 我试过了
function get_acf_field_multilanguage($field_name, $post_id) {
// Get the current language code
$current_language = ICL_LANGUAGE_CODE;
// Get the translated post ID for the current language
$translated_post_id = apply_filters('wpml_object_id', $post_id, 'post', true, $current_language);
// Retrieve the ACF field value using the translated post ID
$field_value = get_field($field_name, $translated_post_id);
return $field_value;
}
$telephone = get_acf_field_multilanguage('establishment_phone', $product_id);
但这也行不通。由于此结账页面显示空白页面,并显示消息“哎呀!由于某些原因,您正在查找的页面丢失了。请返回主页”以及网站的页眉和页脚。知道该怎么做吗?
wpml_current_language
钩子尝试以下操作来获取当前语言。
function get_acf_field_multilanguage($field_name, $post_id) {
// Get the current display language
$current_language= apply_filters( 'wpml_current_language', NULL );
// Get the translated post ID for the current language
$translated_post_id = apply_filters('wpml_object_id', $post_id, 'post', true, $current_language);
// Return the ACF field value using the translated post ID
return get_field($field_name, $translated_post_id);
}
// Usage:
$telephone = get_acf_field_multilanguage('establishment_phone', $product_id);
它可以工作。