/** * Auto-complete orders that contain ONLY virtual items, * but ONLY after payment is confirmed. * EXCLUDES EFT / Direct Bank Transfer (bacs). */ add_action( “woocommerce_payment_complete”, “vg_autocomplete_virtual_orders_after_payment”, 20 ); function vg_autocomplete_virtual_orders_after_payment( $order_id ) { if ( ! $order_id )…Continue reading
/** * Make Bricks product queries (Products element) respect * WooCommerce Wholesale Prices Premium product visibility. */ add_filter( ‘bricks/posts/query_vars’, function ( $query_vars, $settings, $element_id, $element_name ) { // Only affect product queries $post_type = $query_vars[‘post_type’] ?? null; $is_product_query = (…Continue reading
if (!function_exists(‘rd_wc_round_down_step’)) { function rd_wc_round_down_step(int $value, int $step): int { if ($stepContinue reading
if (!function_exists(‘rd_wc_customer_count_get’)) { function rd_wc_customer_count_get(array $args = array()): int { if (!function_exists(‘WC’)) { return 0; } global $wpdb; $defaults = array( ‘scope’ => ‘all’, ‘registered_only’ => false, ‘roles’ => array(‘customer’), ‘require_role’ => false, ); $args = array_merge($defaults, $args); $scope =…Continue reading
if ( ! function_exists( ‘rd_swap_products_on_subscription’ ) ) { function rd_swap_products_on_subscription( $workflow ) { // Map old SKU => new SKU (simple products only; untested with variable/bundled) $sku_mapping = array( ‘9359769001492’ => ‘9359769002352’, // AF Nando’s Chicken & Rice > Spicy…Continue reading