Отображать пользовательский текст на странице полученных заказов WooCommerce, если используются определенные купоны - PullRequest
1 голос
/ 23 апреля 2019

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

Наша версия Woocommerce - 2.6.11.

Я пробовал несколько вариантов приведенного ниже кода, но не могу заставить его работать, я что-то делаю неправильно?

//show custom coupon thankyou
function coupon_thankyou($order_id) {
    $coupon_id = '1635';
    $order = wc_get_order($order_id);
    foreach( $order->get_items('coupon') as $coupon_item ){
        if( $coupon_item->get_code() = $coupon_id ){
            echo '<p>This is an custom thank you.</p>';
        }
    }
}
add_action('woocommerce_thankyou','coupon_thankyou');

1 Ответ

0 голосов
/ 23 апреля 2019

В вашем условии оператора IF есть ошибка, когда = необходимо заменить на == или ===. Также с купонами необходимо использовать слаг-код купона (но не почтовый идентификатор).

Чтобы отобразить сообщение на странице Заказа, лучше использовать woocommerce_thankyou_order_received_text фильтр-хук, таким образом (для Woocommerce 3 +) :

// On "Order received" page (add a message)
add_filter( 'woocommerce_thankyou_order_received_text', 'thankyou_applied_coupon_message', 10, 2 );
function thankyou_applied_coupon_message( $text, $order ) {
    $coupon_code = '1635'; // coupon code name

    foreach( $order->get_items('coupon') as $coupon ){
        if( $coupon->get_code() === $coupon_code ){
            $text .= '<p>'.__("This is an custom thank you.").'</p>';
        }
    }
    return $text;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Это должно работать сейчас.


Обновлено

Для версий Woocommerce до 3.0 вместо этого следует использовать следующее:

// On "Order received" page (add a message)
add_action( 'woocommerce_thankyou', 'thankyou_applied_coupon_message', 10, 1 );
function thankyou_applied_coupon_message( $order_id ) {
    $coupon_code = '1635'; // coupon code name

    $order = wc_get_order( $order_id );

    foreach( $order->get_items('coupon') as $coupon ){
        if( $coupon['name'] === $coupon_code ){
            echo '<p>'.__("This is an custom thank you.").'</p>';
        }
    }
}

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

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