首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WooCommerce function.php -如何将优惠券代码保存到自定义字段?

WooCommerce function.php -如何将优惠券代码保存到自定义字段?
EN

Stack Overflow用户
提问于 2016-02-18 09:54:06
回答 1查看 1.2K关注 0票数 1

How to add Custom Product Fields in WooCommerce

我遵循上面的指南,将下面的代码添加到我的functions.php中。这样做效果很好。我的问题是,如何修改此代码以保存(结帐时)输入的优惠券代码$_POST' coupon _ code‘,并将其保存到自定义字段?我被困在这一点上,因为我的总体目标是测试优惠券代码,并使用向客户推广优惠券代码的销售人员填充自定义字段。

谢谢你的帮助!

代码语言:javascript
复制
/**
 * Add the field to the checkout
 */
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );

function my_custom_checkout_field( $checkout ) {

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

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

    echo '</div>';

}

/**
 * Update the order meta with 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 ) {
    if ( ! empty( $_POST['my_field_name'] ) ) {
        update_post_meta( $order_id, 'My Field', sanitize_text_field( $_POST['my_field_name'] ) );
    }
}

/**
 * Display field value on the order edit page
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('My Field').':</strong> ' . get_post_meta( $order->id, 'My Field', true ) . '</p>';
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-02 23:34:55

如果你还在寻找答案,我从我自己的问题中得到了一些帮助,让你的代码更有趣,因为我也遇到了类似的情况。

Fill out custom field with used coupon code WooCommerce

您的代码和我的编辑已更改为实际将优惠券保存为自定义值的位置。你的代码中的一个问题是你如何尝试使用'My field‘来访问自定义字段。我已经用字段的实际名称替换了它们。

代码语言:javascript
复制
/**
 * Add the field to the checkout
 */
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );

function my_custom_checkout_field( $checkout ) {

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

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

    echo '</div>';

}

/**
 * Update the order meta with 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 );
      foreach( $order->get_used_coupons() as $coupon) {
                $coupons .= $coupon.', ';
                }
    update_post_meta( $order_id, 'my_field_name', $coupons);
  }

}

/**
 * Display field value on the order edit page
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('My Field').':</strong> ' . get_post_meta( $order->id, 'my_field_name', true ) . '</p>';
}

在使用此代码之前,您可能需要清理一下。;)

来源:Fill out custom field with used coupon code WooCommerce

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35471336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档