2016-08-18 165 views
0

我對主題有webhook 訂單更新。 Webhook在someotherdomain.com上提供有效載荷(訂單信息)。我想添加結算表單中的額外字段,以便在someotherdomain.com上發送以及訂單信息。woocommerce webhook有效載荷的自定義值

我已經創建的自定義字段結賬:

add_action('woocommerce_after_order_notes', 'fs_custom_checkout_field'); 


function fs_custom_checkout_field($checkout) { 


echo '<div id="my_custom_checkout_field"><h2>' . __('Extra Information') . '</h2>'; 

woocommerce_form_field('fs_psid_field', array(
    'type'   => 'text', 
    'class'   => array('my-field-class form-row-wide'), 
    'label'   => __('Fill in this field'), 
    'placeholder' => __('Enter something'), 
    ), $checkout->get_value('fs_psid_field')); 

echo '</div>'; 

}

,並保存爲元:

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['fs_psid_field'])) { 
     update_post_meta($order_id, 'fs_psid_field', sanitize_text_field($_POST['fs_psid_field'])); 
    } 
} 

但場fs_psid_field不通過網絡掛接公佈。

問:如何通過Woocommerce webhook發佈此字段的值?

+0

添加自定義字段的值,你是如何讓網絡掛接有效載荷數據? –

+0

@MuhammadSumonMollaSelim我在woocommerce設置中啓用了REST API,並在那裏創建了一個Web鉤子。 –

回答

2

想通了。 首先在結帳表單上添加自定義字段。

add_action('woocommerce_after_order_notes', 'fs_custom_checkout_field'); 

function fs_custom_checkout_field($checkout) { 

    echo '<div id="my_custom_checkout_field"><h2>' . __('Extra Information') . '</h2>'; 

    woocommerce_form_field('fs_psid_field', array(
     'type'   => 'text', 
     'class'   => array('my-field-class form-row-wide'), 
     'label'   => __('Fill in this field'), 
     'placeholder' => __('Enter something'), 
     ), $checkout->get_value('fs_psid_field')); 

    echo '</div>'; 

} 

然後保存爲元

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['fs_psid_field'])) { 
     update_post_meta($order_id, 'fs_psid_field', sanitize_text_field($_POST['fs_psid_field'])); 
    } 
} 

自定義字段的值,然後在API響應

function my_custom_wc_api_order_response($order_data, $order) { 

    $psidMeta  = get_post_meta($order->id , 'fs_psid_field' , true); 
    $order_data['psid'] = $psidMeta; 
    return $order_data; 
} 

add_filter('woocommerce_api_order_response', 'my_custom_wc_api_order_response', 10, 3); 
+0

這個作品很棒,比我更進一步。在給定數據中的某些參數的情況下是否可以取消webhook調用?更具體地說,如果訂單已創建,我希望不發送POST到我的網站,如果狀態更改爲付費,那麼是的,我確實希望僅將POST發送給客戶特定的字段。對不起,如果我的術語不正確。 – Ryan

+0

在這種情況下,您將需要ajax呼叫加上網絡掛鉤。 –