Wordpress 保存WooCoomerce订单时动态更改后端WPML语言
我试图在订单保存时根据订单上的元键值以编程方式设置后端WPML语言,以确保管理语言与订单的相同语言一致 如果订单有一个值为Wordpress 保存WooCoomerce订单时动态更改后端WPML语言,wordpress,woocommerce,wpml,Wordpress,Woocommerce,Wpml,我试图在订单保存时根据订单上的元键值以编程方式设置后端WPML语言,以确保管理语言与订单的相同语言一致 如果订单有一个值为en的元键wpml\u language,我想确保后端wpml language设置为英语 这可能吗 以下是我到目前为止试图给出我想要实现的想法: add_action( 'woocommerce_before_save_order_items', 'action_woocommerce_before_save_order_items', 10, 2 ); function
en
的元键wpml\u language
,我想确保后端wpml language设置为英语
这可能吗
以下是我到目前为止试图给出我想要实现的想法:
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,并设置正确的语言以与订单语言元键对齐,并从选项中提取正确的语言,而不管admin WPML语言设置为什么。您当前使用的挂钩允许其他插件在保存订单项之前检查订单项的更改。创建订单后激发的操作钩子是
do\u操作('woocommerce\u checkout\u order\u created',$order)代码>。我还相信您最好使用$order->get_meta('wpml_language')代码>反面get_post_meta(get_ID(),'wpml_language',true)
。我没有使用你使用的插件,所以我无法测试它