wordpress - 保存 WooCoomerce 订单时动态更改后端 WPML 语言
问题描述
我尝试在根据订单上的元键值保存订单时以编程方式设置后端 WPML 语言,以确保管理语言与订单的相同语言对齐。
如果订单有wpml_language
一个值为en
我想确保后端 wpml 语言设置为英语的元键。
这可能吗?
到目前为止,这是我试图给出的一个想法,我想实现什么:
add_action( 'woocommerce_before_save_order_items', 'action_woocommerce_before_save_order_items', 10, 2 );
function action_woocommerce_before_save_order_items( $order_id, $items ) {
$language = get_post_meta( get_the_ID(), 'wpml_language', true );
if ($language == 'en') {
global $sitepress;
$sitepress->switch_lang('en');
} else {
global $sitepress;
$sitepress->switch_lang('nl');
}
};
我可以看到,如果我只在函数中设置这个:
global $sitepress;
$sitepress->switch_lang('en');
它将后端设置为英语。为什么订单保存上没有设置?
编辑:以这种方式解决:
$language = get_post_meta( get_the_ID(), 'wpml_language', true );
if ($language == 'en') {
add_filter('acf/settings/current_language', function(){return 'en';});
} elseif ($language == 'nl') {
add_filter('acf/settings/current_language', function(){return 'nl';});
} elseif ($language == 'de') {
add_filter('acf/settings/current_language', function(){return 'de';});
} else {
add_filter('acf/settings/current_language', function(){return 'nl';});
}
$img = get_field('logo', 'option');
$text = get_field('textfield', 'option');
将此添加到 customer-invoice.php 并设置正确的语言以与订单语言元键对齐并从选项中提取正确的语言,无论管理员 WPML 语言设置为什么。
解决方案
推荐阅读
- python - 如何创建免费送货功能?
- javascript - 使用单独的输入标签拖放多个文件
- swift - 将参数值传递给应用程序/播放商店下载的链接
- python - 每次我调用它时都会从“源模块”中获取一个函数吗?
- javascript - React.js 可以 onChange 合成事件中断垃圾收集吗?
- javascript - 来自另一个“数据”列的 Javascript 链接名称
- python - 当学习率降低时增加 epochs 数
- r - 如何从单词列表中提取第一个单词?
- mapbox - 如何将过滤器添加到 Mapbox 地图?
- docker - Docker 容器中的 SocketIO 客户端