使用 WPML 从 WooCommerce 翻译产品中获取 ACF 字段值

问题描述 投票:0回答:1

我使用 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);

但这也行不通。由于此结账页面显示空白页面,并显示消息“哎呀!由于某些原因,您正在查找的页面丢失了。请返回主页”以及网站的页眉和页脚。知道该怎么做吗?

php wordpress woocommerce advanced-custom-fields wpml
1个回答
0
投票

使用

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

它可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.