woocommerce изменить идентификатор варианта на имя атрибута продукта - PullRequest
1 голос
/ 07 апреля 2020

Я хотел бы восстановить код, работая с именами атрибутов продукта вместо идентификаторов вариантов.

Из этого кода:

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 );

Я хотел бы восстановить код, работая с именами атрибутов продукта вместо идентификаторов вариантов

Как изменить этот код

с

variation_id

до

product name attribute

точнее эти строки:

if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9647 )

if ( isset( $item[ 'variation_id' ] ) && $item[ 'variation_id' ] == 9648 )

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

1 Ответ

1 голос
/ 07 апреля 2020

Предполагая, что вы имеете в виду это?

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 ) {
        // The WC_Product object
        $product = $item->get_product();

        // Add whatever attribute you want below here.
        if ( !empty( $product->get_attribute( 'pa_kleur' ) ) ) {
            $output = 'Thank you...1';
            $found = true;
            break;
        }

        if ( !empty( $product->get_attribute( 'pa_jaar' ) ) ) {
            $output = 'Thank you...2';
            $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 );
...