以下是一个示例代码,演示如何按付款网关筛选WooCommerce订单(只筛选活跃的付款网关):
// 在functions.php文件中添加以下代码
/**
* 按付款网关筛选WooCommerce订单(仅筛选活跃的付款网关)
* @param array $args WP_Query参数
* @return array 修改后的WP_Query参数
*/
function filter_woocommerce_orders_by_payment_gateway( $args ) {
// 获取所有活跃的付款网关
$active_gateways = WC_Payment_Gateways::instance()->get_available_payment_gateways();
// 获取所有活跃的付款网关ID
$active_gateway_ids = array_keys( $active_gateways );
// 添加付款网关筛选条件
$args['meta_query'][] = array(
'key' => '_payment_method',
'value' => $active_gateway_ids,
'compare' => 'IN',
);
return $args;
}
add_filter( 'woocommerce_order_data_store_cpt_get_orders_query', 'filter_woocommerce_orders_by_payment_gateway' );
将上述代码添加到您的主题的functions.php
文件中。
这段代码将添加一个名为filter_woocommerce_orders_by_payment_gateway
的新过滤器,它将在获取WooCommerce订单的查询参数时调用。在此过滤器中,我们首先获取所有活跃的付款网关的ID,然后将它们作为筛选条件添加到查询参数中。这样,在获取订单时,只会返回使用活跃的付款网关付款的订单。
请注意,此代码只会影响获取WooCommerce订单的查询,不会影响订单的显示或功能。