Wordpress - WooCommerce - скрывайте заказы с виртуальными продуктами со страницы «Мои заказы» и отображайте их на своей странице - PullRequest
1 голос
/ 26 февраля 2020

Мы создали сайт электронной коммерции с использованием WooCommerce для некоммерческого клиента, который продает только физические продукты, например книги, компакт-диски и DVD-диски. С тех пор они попросили нас интегрировать пожертвования. Я настроил пожертвование в качестве Виртуального продукта и заставил его работать.

В настоящее время каждый заказ, который делает клиент, включая заказы на продукт пожертвования, отображается на вкладке «Заказы» в разделе «Моя учетная запись». Нам необходимо отделить заказы с помощью продукта виртуального пожертвования от обычных заказов физических продуктов. Я еще нигде не нашел решения для этого.

В идеале, если заказ содержит виртуальный продукт, мы хотим скрыть его со страницы заказов и вместо этого создать вкладку "Пожертвования", которая показывает ТОЛЬКО заказы с виртуальными продуктами в таблице. Это вообще возможно?

1 Ответ

0 голосов
/ 01 марта 2020

Заказ - это post_type, как и многие другие, такие как продукт, сообщение, купон и т. Д. c. Таким образом, вы можете просто добавить дополнительное поле в postmeta

https://developer.wordpress.org/reference/functions/add_post_meta/

Следующий код проверяет с помощью al oop порядок, содержит ли он виртуальный продукт, и этот результат записывается в базу данных.

function action_woocommerce_thankyou( $order_id ) {
    // Set variable
    $contains_virtual_product = false;

    // Get $order object
    $order = new WC_Order( $order_id );

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

    // Loop
    foreach ( $items as $item ) {
        // Get $product object
        $product = wc_get_product( $item['product_id'] );

        // Is product virtual?
        if ( $product->is_virtual('yes') ) {
            $contains_virtual_product = true;
            // a virtual product is found, stop the loop
            break;
        }
    }

    // True
    if ( $contains_virtual_product ) {
        // https://developer.wordpress.org/reference/functions/add_post_meta/
        add_post_meta( $order_id, '_contains_virtual_product', 'yes' );
    } else {
        add_post_meta( $order_id, '_contains_virtual_product', 'no' );      
    }
}
add_action( 'woocommerce_thankyou', 'action_woocommerce_thankyou', 10, 1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...