【问题标题】:Multiple woocommerce custom order checkout fields多个 woocommerce 自定义订单结帐字段
【发布时间】:2016-07-22 11:02:12
【问题描述】:

所以,我无法在我的商店中添加第二个自定义结帐字段。

第一个自定义字段是单选按钮,它直接添加到模板字段中。另一个是相同的单选按钮,但 id 和名称不同。

运送部分工作正常,但私人标签没有保存,订单完成后也不会显示在管理区域。

这是我已经拥有的,我做错了什么?

/**
 * Update the user meta with field value
 **/
add_action('woocommerce_checkout_update_user_meta', 'my_custom_checkout_field_update_user_meta');
function my_custom_checkout_field_update_user_meta( $user_id ) {
    if ($user_id && $_POST['shippinng']) update_user_meta( $user_id, 'shippinng', esc_attr($_POST['shippinng']) );
    if ($user_id && $_POST['private']) update_user_meta( $user_id, 'private', esc_attr($_POST['private']) );
}


/**
 * 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 ($_POST['shippinng']) update_post_meta( $order_id, 'Transport', esc_attr($_POST['shippinng']));
    if ($_POST['private']) update_post_meta( $order_id, 'Private label', esc_attr($_POST['private']));
}


/**
 * 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>'.__('Transport').':</strong> ' . get_post_meta( $order->id, 'Transport', true ) . '</p>';
    echo '<p><strong>'.__('Private label').':</strong> ' . get_post_meta( $order->id, 'Private label', true ) . '</p>';
}


/**
 * Add the field to order emails
 **/
add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys');
function my_custom_checkout_field_order_meta_keys( $keys ) {
    $keys[] = 'Transport';
    $keys[] = 'Private label';
    return $keys;
}

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce


    【解决方案1】:

    您必须注册私人标签才能保存它。我建议下载结帐字段编辑器并检查代码以用于学习目的。从我的经验来看,比较一直是一个很好的模型:)

    【讨论】:

      【解决方案2】:

      这不是一个完整的答案,但我可以看到您如何将字段添加到电子邮件中的一个问题。这是一个老问题,但我想我会在 6 个月后不可避免地不得不用 Google 搜索时回答它以帮助自己。

      这样做:

      $keys[] = 'Transport';
      $keys[] = 'Private label';
      

      第二行覆盖第一行,因此 $keys 数组变为 array( "Private label" );

      请尝试像这样格式化它:

      $keys = array("Transport", "Private label");
      

      这是我当前的项目:

      /* Add custom field to emails */
      add_filter('woocommerce_email_order_meta_keys', 'my_custom_order_meta_keys');
      
      function my_custom_order_meta_keys( $keys ) {
           $keys = array("Purchase Order Number", "Preferred Delivery Date"); // This will look for both of the specified fields and add them to the emails
           return $keys;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-12
        • 2013-07-07
        • 2018-02-06
        • 2023-04-10
        • 2017-09-17
        • 2018-08-04
        • 2017-03-21
        相关资源
        最近更新 更多