カスタムチェックアウトフィールドの値をユーザーデータとしてWooCommerceに保存します

ダビデ

オプションのニュースレターサブスクリプション用に、WooCommerceショップのチェックアウトページにカスタムチェックボックスを追加しました。

add_action( 'woocommerce_after_order_notes', 'add_checkout_newsletter_subscribe', 9 );

function add_checkout_newsletter_subscribe() {

    woocommerce_form_field( 'checkout_newsletter', array(
       'type'          => 'checkbox',
       'class'         => array('form-row checkout-newsletter-box'),
       'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
       'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
       'required'      => false,
       'label'         => 'Subscribe me.',
    )); 

    }

[マイアカウント]ページにも同様のチェックボックスを作成しました。

add_action( 'woocommerce_edit_account_form', 'display_checkbox_in_account_page' );
function display_checkbox_in_account_page() {

    woocommerce_form_field( 'newsletter-account', array(
        'type'  => 'checkbox',
        'class' => array('form-row-wide'),
        'label' => __( 'Subscribe me.', 'woocommerce' ),
        'clear' => true,
    ), get_user_meta(get_current_user_id(), 'newsletter-account', true ) );
}

add_action( 'woocommerce_save_account_details', 'save_checkbox_value_to_account_details', 10, 1 );
function save_checkbox_value_to_account_details( $user_id ) {
    $value = isset( $_POST['newsletter-account'] ) ? '1' : '0';
    update_user_meta( $user_id, 'newsletter-account', $value );
}

今、私は2つのチェックボックスを接続する方法を探しています。

私が取得したいのは、顧客がチェックアウトページのチェックボックスにフラグを立て、それが登録ユーザーである場合、[マイアカウント]ページのチェックボックスにもフラグを立てる必要があるということです。

woocommerce_edit_account_formフックを使用する必要があると思いますが、残念ながら、そのような結果を取得する方法について他の手がかりはありません。

皆さんは私を正しい方向に向けることができますか?

ご助力ありがとうございます!

LoicTheAztec

以下は、顧客がまだサブスクライブしていない場合、チェックアウトページのサブスクリプションチェックボックスを表示し、送信時にユーザーメタデータとして保存します。

// Display custom checkout field on checkout page
add_action( 'woocommerce_after_order_notes', 'add_checkout_newsletter_subscribe', 9 );
function add_checkout_newsletter_subscribe() {

    $user_id    = (int) get_current_user_id();
    $newsletter = get_user_meta( $user_id, 'newsletter-account', true );

    // If newsletter hasn't been subscribed yet we show the subscription checkbox on checkout
    if ( $user_id > 0 && ! $newsletter ) :

    woocommerce_form_field( 'checkout_newsletter', array(
       'type'          => 'checkbox',
       'class'         => array('form-row checkout-newsletter-box'),
       'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
       'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
       'required'      => false,
       'label'         => __('Subscribe me'),
    )  );

    endif;
}

// Save custom checkout field value as user meta data
add_action('woocommerce_checkout_update_customer','custom_checkout_checkbox_update_customer', 10, 2 );
function custom_checkout_checkbox_update_customer( $customer, $data ){
    if ( ! is_user_logged_in() || is_admin() )
        return;

    // Update user meta data
    if ( isset($_POST['checkout_newsletter']) )
        update_user_meta( $customer->get_id(), 'newsletter-account', '1' );
}

コードは、アクティブな子テーマ(またはアクティブなテーマ)のfunctions.phpファイルに入ります。テストされ、動作します。


それは私のアカウントページのあなたの質問コードで動作します:

add_action( 'woocommerce_edit_account_form', 'display_checkbox_in_account_page' );
function display_checkbox_in_account_page() {

    woocommerce_form_field( 'newsletter-account', array(
        'type'  => 'checkbox',
        'class' => array('form-row-wide'),
        'label' => __( 'Subscribe me.', 'woocommerce' ),
        'clear' => true,
    ), get_user_meta(get_current_user_id(), 'newsletter-account', true ) );
}

add_action( 'woocommerce_save_account_details', 'save_checkbox_value_to_account_details', 10, 1 );
function save_checkbox_value_to_account_details( $user_id ) {
    $value = isset( $_POST['newsletter-account'] ) ? '1' : '0';
    update_user_meta( $user_id, 'newsletter-account', $value );
}

注文時にチェックアウトオプションがチェックされている場合、アカウント編集フォームのチェックボックスもチェックされます…

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

値をWooCommerceの既存のフィールドにマージするチェックアウトカスタムフィールドを保存します

分類Dev

Woocommerce3でカスタムメタデータの注文としてカスタムチェックアウトフィールドを追加します

分類Dev

チェックアウトページとWooCommerceデータフィールドに集荷場所のカスタムフィールドを追加します

分類Dev

商品のカスタムフィールド値をカートに保存し、カートに表示してチェックアウトします

分類Dev

カート内のカスタムフォームフィールドとWoocommerceのチェックアウトでデータを取得します

分類Dev

カートとチェックアウトのWooCommerce製品名にカスタムフィールド値を追加します

分類Dev

カスタムチェックアウトの配達時間フィールドの値をWooCommerceの注文の詳細に保存します

分類Dev

WooCommerceのカスタムチェックアウトフィールドからユーザー表示名を更新します

分類Dev

カートおよびチェックアウトにWooCommerceカスタム製品フィールドのメタデータを表示します

分類Dev

woocommerceはカスタムチェックアウトフィールドをメールに追加します

分類Dev

Woocommerceのカートアイテムの数量に基づいてカスタムチェックアウトフィールドを追加します

分類Dev

Woocommerceチェックアウトからのカスタム値をカスタムオーダーメタデータとして保存する

分類Dev

WooCommerceチェックアウトカスタムフィールドをユーザーメタに保存する方法

分類Dev

チェックアウトカスタムフィールド値を保存し、WooCommerce管理者注文に表示します

分類Dev

チェックアウトおよび登録時のmy_accountユーザーの詳細にカスタムフィールドを追加します

分類Dev

商品のカスタムフィールドを設定し、カートに値を表示し、チェックアウトして注文を表示します

分類Dev

Woocommerceユーザー登録フォームに追加のチェックボックスを追加し、ユーザーの追加データとしてバックエンドでチェックされているかどうかを保存/表示します

分類Dev

Woocommerceユーザー登録フォームに追加のチェックボックスを追加し、ユーザーの追加データとしてバックエンドでチェックされているかどうかを保存/表示します

分類Dev

woocommerceのデフォルト値でカスタム非表示チェックアウトフィールドを追加します

分類Dev

特定の商品がWoocommerceのカートに入っている場合は、カスタムチェックアウトフィールドを表示します

分類Dev

WooCommerce:特定の商品IDがカートに入っている場合、カスタムチェックアウトフィールドを表示します

分類Dev

デフォルトのWooCommerceチェックアウトフィールドのように、カスタムチェックアウトフィールドに以前に入力した値を入力するにはどうすればよいですか?

分類Dev

Woocommerceチェックアウトのカスタム商品フィールド値から選択フィールドオプションを入力します

分類Dev

WooCommerceカスタムチェックアウトフィールド値の呼び出しと表示

分類Dev

WooCommerceチェックアウトにユーザーカスタムアカウントフィールドを追加する

分類Dev

追加されたカスタムカートアイテムデータをWoocommerceカート、チェックアウト、注文に表示して保存します

分類Dev

APIを使用してwoocommerceチェックアウトフォームデータをカスタムテーブルに保存する

分類Dev

WooCommerceの顧客注文メモにカスタムチェックアウトフィールド値を追加します

分類Dev

WP_Queryを使用してWooCommerceカスタムチェックアウトフィールドを表示する

Related 関連記事

  1. 1

    値をWooCommerceの既存のフィールドにマージするチェックアウトカスタムフィールドを保存します

  2. 2

    Woocommerce3でカスタムメタデータの注文としてカスタムチェックアウトフィールドを追加します

  3. 3

    チェックアウトページとWooCommerceデータフィールドに集荷場所のカスタムフィールドを追加します

  4. 4

    商品のカスタムフィールド値をカートに保存し、カートに表示してチェックアウトします

  5. 5

    カート内のカスタムフォームフィールドとWoocommerceのチェックアウトでデータを取得します

  6. 6

    カートとチェックアウトのWooCommerce製品名にカスタムフィールド値を追加します

  7. 7

    カスタムチェックアウトの配達時間フィールドの値をWooCommerceの注文の詳細に保存します

  8. 8

    WooCommerceのカスタムチェックアウトフィールドからユーザー表示名を更新します

  9. 9

    カートおよびチェックアウトにWooCommerceカスタム製品フィールドのメタデータを表示します

  10. 10

    woocommerceはカスタムチェックアウトフィールドをメールに追加します

  11. 11

    Woocommerceのカートアイテムの数量に基づいてカスタムチェックアウトフィールドを追加します

  12. 12

    Woocommerceチェックアウトからのカスタム値をカスタムオーダーメタデータとして保存する

  13. 13

    WooCommerceチェックアウトカスタムフィールドをユーザーメタに保存する方法

  14. 14

    チェックアウトカスタムフィールド値を保存し、WooCommerce管理者注文に表示します

  15. 15

    チェックアウトおよび登録時のmy_accountユーザーの詳細にカスタムフィールドを追加します

  16. 16

    商品のカスタムフィールドを設定し、カートに値を表示し、チェックアウトして注文を表示します

  17. 17

    Woocommerceユーザー登録フォームに追加のチェックボックスを追加し、ユーザーの追加データとしてバックエンドでチェックされているかどうかを保存/表示します

  18. 18

    Woocommerceユーザー登録フォームに追加のチェックボックスを追加し、ユーザーの追加データとしてバックエンドでチェックされているかどうかを保存/表示します

  19. 19

    woocommerceのデフォルト値でカスタム非表示チェックアウトフィールドを追加します

  20. 20

    特定の商品がWoocommerceのカートに入っている場合は、カスタムチェックアウトフィールドを表示します

  21. 21

    WooCommerce:特定の商品IDがカートに入っている場合、カスタムチェックアウトフィールドを表示します

  22. 22

    デフォルトのWooCommerceチェックアウトフィールドのように、カスタムチェックアウトフィールドに以前に入力した値を入力するにはどうすればよいですか?

  23. 23

    Woocommerceチェックアウトのカスタム商品フィールド値から選択フィールドオプションを入力します

  24. 24

    WooCommerceカスタムチェックアウトフィールド値の呼び出しと表示

  25. 25

    WooCommerceチェックアウトにユーザーカスタムアカウントフィールドを追加する

  26. 26

    追加されたカスタムカートアイテムデータをWoocommerceカート、チェックアウト、注文に表示して保存します

  27. 27

    APIを使用してwoocommerceチェックアウトフォームデータをカスタムテーブルに保存する

  28. 28

    WooCommerceの顧客注文メモにカスタムチェックアウトフィールド値を追加します

  29. 29

    WP_Queryを使用してWooCommerceカスタムチェックアウトフィールドを表示する

ホットタグ

アーカイブ