Woocommerce - печать текста на странице «Спасибо» в зависимости от атрибута продукта и способа оплаты - PullRequest
1 голос
/ 06 апреля 2020

Мой вопрос именно такой: - Распечатать текст на странице «Спасибо» на основе атрибута продукта и способа оплаты

У меня есть этот код, который отлично работает:

add_action( 'woocommerce_thankyou', 'show_custom_text_by_variation_id', 1 ); 
function show_custom_text_by_variation_id( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach( $order->get_items() as $item ) {
        // Add whatever variation id you want below here.
        if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9647 ) {
            echo '<br/>Example text - Thank you for buy VARIABLE A-9647 !<br/>';
        }
        if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9648 ) {
            echo '<br/>Example text - Thank you for buy VARIABLE B-9648 !<br/>';
        }
    }
}

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

Пример A:

  • Продукт куплен - Переменная 9647
  • Выбранный способ оплаты - Bacs

, поэтому только в этом случае будет отображаться текст на странице с благодарностью:

  • Пример текста - Спасибо за покупку VARIABLE A-9647 - С методом оплаты Bacs!

или

Пример B:

  • Продукт куплен - Переменная 9648
  • Выбранный способ оплаты - Bacs

, поэтому только в этом случае будет отображаться текст на странице с благодарностью:

  • Пример текста - Спасибо за покупку VARIABLE B-9648 - С Способом оплаты Bacs!

Заранее спасибо!

1 Ответ

2 голосов
/ 06 апреля 2020

Использование: $order->get_payment_method();

function action_woocommerce_thankyou( $order_id ) {
    // Get $order object
    $order = wc_get_order( $order_id );

    // Get items
    $items = $order->get_items();

    // Set variable
    $found = false;

    // Set variable
    $output = '';

    // Loop
    foreach ( $items as $item ) {
        // Add whatever variation id you want below here.
        if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9647 ) {
            $output = 'Thank you for buy VARIABLE A-9647';
            $found = true;
            break;
        }

        if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9648 ) {
            $output = 'Thank you for buy VARIABLE B-9648';
            $found = true;
            break;
        }
    }

    // Get payment method
    $payment_method = $order->get_payment_method();

    // Payment method = basc & found = true
    if ( $payment_method == 'bacs' && $found ) {
        $output .= ' YOUR PAYMENT IS BACS';
    }

    // Print result
    echo $output;
}
add_action( 'woocommerce_thankyou', 'action_woocommerce_thankyou', 10, 1 );

РЕДАКТИРОВАТЬ

показать текст вверху страницы, до деталей заказа

function change_order_received_text( $str, $order ) {
    // Get items
    $items = $order->get_items();

    // Set variable
    $found = false;

    // Loop
    foreach ( $items as $item ) {
        // Add whatever variation id you want below here.
        if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9647 ) {
            $str = 'Thank you for buy VARIABLE A-9647';
            $found = true;
            break;
        }

        if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9648 ) {
            $str = 'Thank you for buy VARIABLE B-9648';
            $found = true;
            break;
        }
    }

    // Get payment method
    $payment_method = $order->get_payment_method();

    // Payment method = basc & found = true
    if ( $payment_method == 'bacs' && $found ) {
        $str .= ' YOUR PAYMENT IS BACS';
    }

    return $str;
}
add_filter('woocommerce_thankyou_order_received_text', 'change_order_received_text', 10, 2 );

Result

...