Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 保存WooCoomerce订单时动态更改后端WPML语言_Wordpress_Woocommerce_Wpml - Fatal编程技术网

Wordpress 保存WooCoomerce订单时动态更改后端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

我试图在订单保存时根据订单上的元键值以编程方式设置后端WPML语言,以确保管理语言与订单的相同语言一致

如果订单有一个值为
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)
。我没有使用你使用的插件,所以我无法测试它