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

В woocommerce я пытаюсь получить определенное значение атрибута продукта и отобразить его в строке темы для уведомления администратора о новом заказе по электронной почте.

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

add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);
function change_admin_email_subject( $subject, $order ) {

    global $woocommerce;
    global $product;       
    {
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
        $subject = sprintf( '[%s] New customer order (# %s) from %s %s',
                               $blogname, $order->id,
                               $order->billing_first_name, $order->billing_last_name );
    } 
    return $subject;
}

Я попробовал также этот (где xxxxx - это кусок моегоатрибут) :

add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);
function change_admin_email_subject( $subject, $order ) {

    global $woocommerce;
    global $product;       
    {  
        $pa_xxxxx_value = get_order_meta($order->id, 'pa_xxxxx', true);
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
        $subject = sprintf( '[%s] [%s] New customer order (# %s) from %s %s',
                              $pa_xxxxx_value, $blogname, $order->id,
                              $order->billing_first_name, $order->billing_last_name );
    } 
    return $subject;
}

Но это не работает, eitheir.

Как я могу получить и отобразить определенное значение атрибута продукта из элемента заказа в теме электронной почты Woocommerce?

1 Ответ

0 голосов
/ 20 сентября 2018

В заказах может быть много элементов, и в вашем коде начиная с Woocommerce 3. есть некоторые ошибки.

Приведенный ниже код будет искать в элементах заказа определенный атрибут продукта (таксономия), и если он будет найден, он будетотобразить новую пользовательскую тему со значением атрибута «имя продукта»:

add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);
function change_admin_email_subject( $subject, $order ) {
    // HERE define the product attribute taxonomy (start always with "pa_")
    $taxonomy = 'pa_color'; //

    // Loop through order items searching for the product attribute defined taxonomy
    foreach( $order->get_items() as $item ){
        // If product attribute is found
        if( $item->get_meta($taxonomy) ){
            // Custom new subject including the product attribute term name
            $subject = sprintf( '[%s] [%s] New customer order (# %s) from %s %s',
                get_term_by('slug', $item->get_meta($taxonomy), $taxonomy )->name, // Term name
                wp_specialchars_decode(get_option('blogname'), ENT_QUOTES),
                $order->get_id(),
                $order->get_billing_first_name(),
                $order->get_billing_last_name()
            );
            break; // Stop the loop
        }
    }

    return $subject;
}

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

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