2016-08-18 3 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は、ウェブフックを経て掲載されていません。

Q:Woocommerce webhook経由でこのフィールドの値を転記するにはどうすればよいですか?

+0

にカスタムフィールドの値を追加するメタ

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'])); } } 

などのカスタムフィールドの値を保存しますか? –

+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>'; 

} 

は、次に次に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コールとWebフックが必要になります。 –

関連する問題