【问题标题】:Insert a custom field value as a new row on email order totals table in Woocommerce在 Woocommerce 的电子邮件订单总计表中插入自定义字段值作为新行
【发布时间】:2019-01-23 11:00:44
【问题描述】:

我正在帮助我妈妈为她在丹麦的商店创建网站。 一切顺利,但现在我遇到了一个问题。 我需要能够在订单完成电子邮件中创建一个自定义字段,该字段显示一个跟踪编号,我已在管理订单页面上插入。到目前为止我所做的一切都没有奏效,因此我寻求您的帮助。

我已经添加了一个名为 Track & Trace Pakkenr. 的自定义字段(参见屏幕截图 1) 但问题是在订单完整的电子邮件中得到这个,在运输下(forsendelse 丹麦语,见截图 2)

我也是一个完整的编码初学者,所以如果你们中的任何人可以提供任何帮助或建议,请让它几乎万无一失。

这里是screenshot 1screenshot 2

【问题讨论】:

    标签: php wordpress woocommerce custom-fields email-notifications


    【解决方案1】:

    要在电子邮件通知的订单总计表中显示此订单自定义字段值,请使用以下命令:

    add_filter( 'woocommerce_get_order_item_totals', 'insert_custom_line_order_item_totals', 10, 3 );
    function insert_custom_line_order_item_totals( $total_rows, $order, $tax_display ){
        // Only on emails notifications
        if( is_wc_endpoint_url() ) return $total_rows; // Exit
    
        $tracking_label = 'Track & Trace Pakkenr.'; // The tracking label name
        $tracking_value = $order->get_meta( $tracking_label ); // Get the tracking value (custom field).
    
        if( empty($tracking_value) ) return $total_rows; // Exit
    
        $new_total_rows  = array(); // Initializing
    
        // Loop through total rows
        foreach( $total_rows as $key => $value ){
            if( 'payment_method' == $key && ! empty($tracking_value) ) {
                $new_total_rows['tracking_parcel'] = array(
                    'label' => $tracking_label,
                    'value' => $tracking_value,
                );
            }
            $new_total_rows[$key] = $total_rows[$key];
        }
    
        return sizeof($new_total_rows) > 0 ? $new_total_rows : $total_rows;
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且有效。

    你会得到类似的东西:

    从这里:

    【讨论】:

    • 非常感谢!
    【解决方案2】:

    您可以在订单邮件中添加自定义字段,您需要在代码中有meta_key的地方使用field key

    /**
     * Add a custom field (in an order) to the emails
     */
    add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
    
    function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
        $fields['meta_key'] = array(
            'label' => __( 'Label' ),
            'value' => get_post_meta( $order->id, 'meta_key', true ),
        );
        return $fields;
    }
    

    参考:https://docs.woocommerce.com/document/add-a-custom-field-in-an-order-to-the-emails/

    【讨论】:

      【解决方案3】:

      以下是添加自定义元字段以订购电子邮件的简单但实用的示例

      add_filter( 'woocommerce_email_order_meta_fields', 'woocommerce_email_order_meta_fields_func', 10, 3 );
      
      function woocommerce_email_order_meta_fields_func( $fields, $sent_to_admin, $order ) {
      
          $fields['Track_Field'] = array(
              'label' => __( 'Track', 'woocommerce' ),
              'value' => wptexturize( get_post_meta( $order->id, 'Track_Field', true ) )
          );
      
      
          //... more meta fields goes here
      
          return $fields;
      }
      

      在订单后电子邮件表中:

      add_action( 'woocommerce_email_after_order_table', 'woocommerce_email_after_order_table_func' );
      function woocommerce_email_after_order_table_func( $order ) {
          ?>
      
          <h3>Track</h3>
          <table>
              <tr>
                  <td>Track Fields </td>
                  <td><?php echo wptexturize( get_post_meta( $order->id, 'Track_Field', true ) ); ?></td>
              </tr>
      
              <!--additional custom meta and HTML code goes here-->
          </table>
      
          <?php
      }
      

      如需更多帮助,请参阅此链接:Click here

      【讨论】:

      • 谢谢!但是我在哪里插入呢?
      • @AndreasPedersen 请在您当前活动的主题functions.php文件中添加代码
      • 如果它对您有帮助,则标记为解决方案,这样它也可以帮助其他开发人员。谢谢
      • 我会记得这样做的。两个代码都在functions.php文件中吗?
      • @AndreasPedersen 是的
      猜你喜欢
      • 2021-08-14
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2020-09-09
      • 2022-01-14
      相关资源
      最近更新 更多