Добавить значения настраиваемых полей в уведомление по электронной почте Woocommerce - PullRequest
0 голосов
/ 22 ноября 2018

Я добавил в настраиваемые поля на странице оформления заказа, используя YITH checkout Manager 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 новых настраиваемых поля, но для * 1006 нет способа*

$order->get_customfield1()

1 Ответ

0 голосов
/ 23 ноября 2018

Начиная с Woocommerce 3, существует метод, унаследованный от WC_Data Class, который является get_meta () и который должен использоваться на объекте экземпляра WC_Order $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()как:

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 ) ); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...