2016-03-02 4 views
0

Сейчас я работаю с плагином mailchimp, которому требуется настраиваемое поле для проверки/сегментации.Заполнить настраиваемое поле с использованием кода купона WooCommerce

Для этого сегмента я хочу проверить, какой купон используется. Поэтому я продуваемый следующий код, который должен заполнить мое пользовательское поле с отработанными купонами:

add_action('woocommerce_checkout_update_order_meta', 
'my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id) { 
if (empty($_POST['my_field_name'])) { 
    $coupons = $order->get_used_coupons(); 
    update_post_meta($order_id, 'my_field_name', $coupons); 
} 
} 

К сожалению, это только врезаться моим сайт.

Любая помощь была бы принята с благодарностью.

+0

Можете ли вы добавить ошибку PHP? любой журнал? – Skatox

+0

Я не могу, однако я что-то понял. change: '$ coupons = $ order-> get_used_coupons();' To: '$ coupons = $ order_id-> get_used_coupons();' не позволяет ему сбой, но все равно не заполнит мое поле. Возможно, это связано с тем, что $ order никогда не определялся. –

ответ

0

Есть несколько проблем с кодом:

  • Вы не проверяющими, если поле имеет какую-либо информацию, так что вам нужно , чтобы проверить, если $_POST имеет my_field_name ключа
  • Вы должны загрузить $order переменной, чтобы получить использованные купоны.
  • Что происходит, когда есть значение my_field_value? Вы храните его?

Вот измененный код:

add_action('woocommerce_checkout_update_order_meta', 
'my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id, $posted) { 
    if (isset($_POST['my_field_name']) && empty($_POST['my_field_name'])) { 
    $order = new WC_Order($order_id); 
    $coupons = $order->get_used_coupons(); 
    update_post_meta($order_id, 'my_field_name', $coupons); 
    } 

} 
+0

Хорошо, что ваш код работает, однако он возвращает «массив» в качестве поля купона, и значение никогда не отображается в фактическом поле на интерфейсе. Здесь я думаю, что мне нужно, чтобы мой плагин мог проверить, содержит ли пользовательское поле определенные коды купонов. –

+0

путем замены '$ coupons = $ order-> get_used_coupons();' с 'foreach ($ order-> get_used_coupons() как $ купон) { \t \t $ coupons. = $ Coupon. '\ N'; } 'Я больше не получаю« массив »в моей области, а фактический купон. Итак, эта часть решена. –

+0

Да, вам тоже нужно это проверить. Также помните, что вы можете хранить массивы в сообщении meta – Skatox

Смежные вопросы