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

Попытка получить расширенное настраиваемое поле в продукте woocommerce, чтобы передать его по электронной почте для нового администратора.Это только для справки администратора и характерно для каждого продукта.Я пытался, и это получает его на сервер, но не в электронной почте.

add_action( 'woocommerce_before_order_itemmeta', 'product_size', 10, 3 );
function product_size( $item_id, $item, $product ){
    // Only in backend Edit single Order pages
    if( current_user_can('edit_shop_orders') ):

    // The product ID 
    $product_id = $product->get_id();

    // Get your ACF product value 
    $acf_value = __('Size: ') . get_field( 'package_size', $product_id );

    // Outputing the value of the "package size" for this product item
    echo '<div class="wc-order-item-custom"><strong>'. $acf_value .'</strong></div>';

    endif;
}

Я пытался использовать это, чтобы добраться до электронной почты, но это убило процесс заказа.Он прошел через бэкэнд, но после размещения заказа на место он просто обновляет страницу оформления заказа и не переходит на страницу благодарности или генерирует электронное письмо.

add_action( 'woocommerce_email_order_details', 'display', 10, 4 );
function display( $order, $sent_to_admin, $plain_text, $email ) {
global $product;
$id = $product->get_id();
    $value = get_field( "package_size", $id );

    if($value)  {
        echo "<p>Package Size : ".$value ."</p>";
    }

}

Любые предложения или помощь приветствуются.

1 Ответ

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

Объект WC_Product $product не может быть определен как глобальная переменная.Вы должны использовать цикл foreach, чтобы сначала получить элементы заказа.

Но так как в заказе может быть много предметов (продуктов), вы можете получить много дисплеев для этого поля ACF.

Ваш повторный код:

add_action( 'woocommerce_email_order_details', 'display_package_size_email_order_details', 10, 4 );
function display_package_size_email_order_details( $order, $sent_to_admin, $plain_text, $email ) {
    // Only admin notifications
    if( ! $sent_to_admin )
         return; // Exit

    foreach( $order->get_items() as $item ) {
        if( $package_size = get_field( "package_size", $item->get_product_id() ) ){
            echo '<p><strong>'.__('Package Size').': </strong>'.$package_size.'</p>';
        }
    }
}

Код входит в функциюФайл .php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Связано: Отображение значения из поля ACF в электронном письме заказа Woocommerce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...