Получить язык заказа клиента Woocommerce

Я разрабатываю дополнительный плагин для woocommerce. У меня есть запрос sql, который получает всю информацию о заказе и клиенте, но мне нужно получить язык из заказа.

Как я могу определить, на каком языке говорил покупатель, когда делал заказ? Это где-то прописано?

В других CMS подобных prestashop он хранится как id_lang в таблицах заказов и клиентов.


person Pau Mompó    schedule 20.04.2015    source источник
comment
Вам нужно будет сохранить язык как мета для заказа. WooCommerce не делает этого по умолчанию, потому что по умолчанию он не многоязычный. Таким образом, определение используемого языка будет зависеть от того, какой плагин вы используете, чтобы сделать свой сайт многоязычным.   -  person helgatheviking    schedule 20.04.2015
comment
Итак, давайте подумаем о наиболее часто используемых многоязычных плагинах, я думаю, это wpml и qtranslate. Или есть способ заставить woocommerce сохранять это мета-значение каждый раз, когда пользователь делает заказ из моего настраиваемого плагина?   -  person Pau Mompó    schedule 23.04.2015
comment
Вы можете сохранить любые данные в качестве метаданных для заказа.   -  person helgatheviking    schedule 23.04.2015
comment
Просто хочу сказать, что WPML уже сохраняет постмету для заказов с пользовательским языком. мета называется wpml_language   -  person bluantinoo    schedule 14.11.2016


Ответы (2)


Не разбираясь в том, какой плагин вы выберете и как он работает, вот как вы можете сохранить некоторые дополнительные данные в заказе.

// save the extra field when checkout is processed
function kia_save_extra_checkout_fields( $order_id, $posted ){
    $language = detect_language_with_your_plugin_of_choice() ? detect_language_with_your_plugin_of_choice() : "en";
    update_post_meta( $order_id, '_order_language', $language );
}
add_action( 'woocommerce_checkout_update_order_meta', 'kia_save_extra_checkout_fields', 10, 2 );

И поскольку у меня было ужасное время, когда я однажды попытался использовать WPML, возможно, стоит попробовать Multilingual Press .

person helgatheviking    schedule 23.04.2015

Наконец решено, оба решения в порядке.

С помощью плагина WPML вы можете получить значение в таблице postmeta с помощью meta_key = wpml_language

Просто добавил левое соединение в свой SQL-запрос:

SELECT O.ID as id_order, O.post_date_gmt as date, M.meta_value as email, M2.meta_value as firstname, M3.meta_value as lastname, M4.meta_value as iso_code
    FROM ".$prefix."posts O 
    LEFT JOIN ".$prefix."postmeta M ON M.post_id = O.ID AND M.meta_key = '_billing_email'
    LEFT JOIN ".$prefix."postmeta M2 ON M2.post_id = O.ID AND M2.meta_key = '_billing_first_name'
    LEFT JOIN ".$prefix."postmeta M3 ON M3.post_id = O.ID AND M3.meta_key = '_billing_last_name'
    LEFT JOIN ".$prefix."postmeta M4 ON M3.post_id = O.ID AND M4.meta_key = 'wpml_language'
    WHERE O.post_type = 'shop_order' AND O.post_status = 'wc-completed'
person Pau Mompó    schedule 08.06.2017