将自定义字段值添加到Woocommerce电子邮件通知

时间:2018-11-22 15:00:09

标签: php wordpress woocommerce custom-fields orders

我已使用YITH结帐管理器billing_customfield1和billing_customfield2在结帐页面上的自定义字段中添加了内容。 我需要在woocommerce发送的电子邮件中显示此字段。

这种方式是,结帐字段显示在电子邮件模板上:

<?php if ( $order->get_billing_first_name() ) : ?>
                <br/><?php echo '<b>Nombre: </b>'.esc_html( $order->get_billing_first_name().' '.$order->get_billing_last_name() ); ?>
            <?php endif; ?>             


            <?php if ( $order->get_billing_phone() ) : ?>
                <br/><?php echo '<b>Teléfono: </b>'.esc_html( $order->get_billing_phone() ); ?>
            <?php endif; ?>

            <?php if ( $order->get_billing_company() ) : ?>
                <br/><?php echo '<b>Nombre de la empresa: </b>'.esc_html( $order->get_billing_company() ); ?>
            <?php endif; ?>

            <?php if ( $order->get_billing_address_1() ) : ?>
                <br/><?php echo '<b>Dirección: </b>'.esc_html( $order->get_billing_address_1() ); ?>
            <?php endif; ?>

            <?php if ( $order->get_billing_address_2() ) : ?>
                <br/><?php echo '<b>Dirección 2: </b>'.esc_html( $order->get_billing_address_2() ); ?>
            <?php endif; ?>

            <?php if ( $order->get_billing_city() ) : ?>
                <br/><?php echo '<b>Ciudad: </b>'.esc_html( $order->get_billing_city() ); ?>
            <?php endif; ?>

我还需要显示新的2个自定义字段,但是没有方法

$order->get_customfield1()

1 个答案:

答案 0 :(得分:1)

自Woocommerce 3起,有一种方法继承自WC_Data类,该方法为 get_meta(),必须在WC_Order $order实例上使用对象。

  

在大多数情况下,订单自定义字段都是使用元关键字在数据库中注册的,该关键字以wp_postmeta表中的下划线开始。
  因此,我将使用: _billing_customfield1 _billing_customfield2

这是您重新访问的代码:

<?php 
if ( $order->get_formatted_billing_full_name() ) {
    echo '<br/><b>'.__("Nombre", "woocommerce") . ': </b>' . esc_html( $order->get_formatted_billing_full_name() );
}             
if ( $order->get_billing_phone() ) {
    echo '<br/><b>'.__("Teléfono", "woocommerce") . ': </b>' . esc_html( $order->get_billing_phone() );
}
if ( $order->get_billing_company() ) {
    echo '<br/><b>'.__("Nombre de la empresa", "woocommerce") . ': </b>' . esc_html( $order->get_billing_company() );
}
if ( $order->get_billing_address_1() ) {
    echo '<br/><b>'.__("Dirección", "woocommerce") . ': </b>' . esc_html( $order->get_billing_address_1() ); 
}
if ( $order->get_billing_address_2() ) {
    echo '<br/><b>'.__("Dirección 2", "woocommerce") . ': </b>' . esc_html( $order->get_billing_address_2() );
}
if ( $order->get_billing_city() ) {
    echo '<br/><b>'.__("Ciudad", "woocommerce") . ': </b>' . esc_html( $order->get_billing_city() ); 
}
if ( $order->get_meta('_billing_customfield1') ) {
    echo '<br/><b>'.__("Campo personalizado 1", "woocommerce") . ': </b>' . esc_html( $order->get_meta('_billing_customfield1') ); 
}
if ( $order->get_meta('_billing_customfield2') ) {
    echo '<br/><b>'.__("Campo personalizado 2", "woocommerce") . ': </b>' . esc_html( $order->get_meta('_billing_customfield2') ); 
}
?>

如果这些自定义字段的子段是_billing_customfield1_billing_customfield2

,它应该可以工作

您应该在数据库wp_postmeta下的数据库中验证正确的meta_key_billing_customfield1_billing_customfield2

否则,您将用正确的替换它们。


您还可以使用WordPress get_post_meta()函数,该函数需要$order->get_id()可以具有的订单ID,例如:

if ( get_post_meta( $order->get_id(), '_billing_customfield1', true ) ) {
    echo '<br/><b>'.__("Campo personalizado 1", "woocommerce") . ': </b>' . esc_html( get_post_meta( $order->get_id(), '_billing_customfield1', true ) ); 
}
if ( get_post_meta( $order->get_id(), '_billing_customfield2', true ) ) {
    echo '<br/><b>'.__("Campo personalizado 2", "woocommerce") . ': </b>' . esc_html( get_post_meta( $order->get_id(), '_billing_customfield2', true ) ); 
}