WooCommerce 更新后,不再包含自定义帐单字段

问题描述

更新 WooCommerce 和 wordpress 后,许多自定义设置被覆盖,因此我试图恢复与旧版本相同的功能。 (使用 childtheme 所以为什么它首先丢失了我不明白) 修复了除此之外的所有内容。在结帐时的帐单信息中,几个字段丢失了,认的 company_name 我又开始工作了,由于某种原因它在主题 functions.PHP 中被停用。但是,为 IVA 编号和组织编号保留了两个自定义字段

因此,我使用了 WooCommerce 的 Checkout Manager 将自定义字段添加到帐单信息中。 它适用于结账页面,信息最终出现在订单上。但它不会显示在感谢页面上,更重要的是它不会显示在给客户的电子邮件中。

尝试将其添加到 themesfunctions.PHP 但没有成功。

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['billing_wooccm13'] = array(
        'label' => __( 'Moms/IVA' ),'value' => get_post_meta( $order->id,'billing_wooccm13',true ),);
    return $fields;
}

也试过这个:

add_action('woocommerce_email_customer_details','add_custom_checkout_field_to_emails_notifications',25,4 );
function add_custom_checkout_field_to_emails_notifications( $order,$plain_text,$email ) {

    $output = '';
    $billing_field_testing = get_post_meta( $order->id,true );

    if ( !empty($billing_wooccm13) )
        $output .= '<div><strong>' . __( "Some text:","woocommerce" ) . '</strong> <span class="text">' . $billing_wooccm13 . '</span></div>';

    echo $output;
}

有什么想法可以解决这个问题吗?

解决方法

由于 WoooCommerce 3 $order->id$order->get_id() 取代……还有其他一些方法。

确保您的自定义字段的元键是 billing_wooccm13 (因为它可以改为以下划线开头,例如 _billing_wooccm13

尝试以下操作:

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 ) {
    if ( $value  = $order->get_meta( 'billing_wooccm13' ) ) {
        $fields['billing_wooccm13'] = array(
            'label' => __( 'Moms/IVA' ),'value' => $value,);
    }
    return $fields;
}

代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。


或者这也是:

add_action('woocommerce_email_customer_details','add_custom_checkout_field_to_emails_notifications',25,4 );
function add_custom_checkout_field_to_emails_notifications( $order,$plain_text,$email ) {
    if ( $value  = $order->get_meta( 'billing_wooccm13' ) ) {
        echo '<div><strong>' . __( "Some text:","woocommerce" ) . '</strong> <span class="text">' . $value . '</span></div>';
    }
}

代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。

,

非常感谢 LoicTheAztec。

这两种解决方案都有效,但第一个解决方案的文本最终在发票地址之前升高。第二个在下面结束,不幸的是之前有一些空白行但没什么大不了的。假设我必须使用电子邮件模板来删除这些行。我最终得到的代码:


add_action('woocommerce_email_customer_details',$email ) {
    if ( $value  = $order->get_meta( '_billing_wooccm11' ) ) {
        echo '<div><strong>' . __( "Ert organisationsnummer","woocommerce" ) . '</strong> <span class="text">' . $value . '</span></div>';

    if ( $value  = $order->get_meta( '_billing_wooccm13' ) ) {
        echo '<div><strong>' . __( "Ert Moms/IVA:","woocommerce" ) . '</strong> <span class="text">' . $value . '</span></div>';
    }
    }
}