php 自动完成仅包含虚拟产品的WooCommerce订单。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 自动完成仅包含虚拟产品的WooCommerce订单。相关的知识,希望对你有一定的参考价值。

<?php

/**
 * Autocomplete orders that contain only virtual products.
 * If the order contains a non-virtual product the order will not be completed by this function.
 *
 * @author  Mike Hemberger @JiveDig
 *
 * @version 1.0.0
 *
 * @return  string  Order status.
 */
add_filter( 'woocommerce_payment_complete_order_status', 'prefix_autocomplete_virtual_orders', 10, 2 );
function prefix_autocomplete_virtual_orders( $order_status, $order_id ) {

	$order = wc_get_order( $order_id );

	if ( 'processing' != $order_status ) {
		return $order_status;
	}

	$all_virtual_products = false;

	if ( count( $order->get_items() ) > 0 ) {

		foreach( $order->get_items() as $item ) {

			if ( 'line_item' == $item['type'] ) {

				$_product = $order->get_product_from_item( $item );

				// If not a virtual product.
				if ( ! $_product->is_virtual() ) {
					$has_non_virtual_product = true;
					break;
				}
			}
		}
	}

	// If no non-virtual products.
	if ( ! $has_non_virtual_product ) {
		$all_virtual_products = true;
	}

	// All virtual products, mark as completed.
	if ( $all_virtual_products ) {
		return 'completed';
	}

	// Non-virtual order, return original status.
	return $order_status;
}

以上是关于php 自动完成仅包含虚拟产品的WooCommerce订单。的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用原始页面请求在 ASPX 中自动完成?

WooCommerce Quote or Enquiry Contact Form 7怎么使用

在 Woocommerce wc_get_loop_prop 产品循环中仅包含某些类别

如何删除自动完成上的清除按钮并仅显示文本

在 Woocommerce 购物车中自动添加或删除免费产品

包含文件的 NetBeans 自动完成功能不起作用?