'at_biz_dir', 'post_status' => array( 'publish', 'pending', 'draft', ), 'author' => $user_id, 'posts_per_page' => -1, 'fields' => 'ids', ) ); } /** * Set / remove Featured status. */ function medcz_set_directorist_featured( $user_id, $featured = true ) { $listing_ids = medcz_get_user_directorist_listings( $user_id ); if ( empty( $listing_ids ) ) { return; } foreach ( $listing_ids as $listing_id ) { update_post_meta( $listing_id, '_featured', $featured ? 1 : 0 ); } } /** * Get the user ID from a WP Swings subscription. */ function medcz_get_wps_subscription_user( $subscription_id ) { return absint( wps_sfw_get_meta_data( $subscription_id, 'wps_customer_id', true ) ); } /** * Check whether this WP Swings subscription is one of * our Featured products. */ function medcz_is_featured_wps_subscription( $subscription_id ) { $product_id = absint( wps_sfw_get_meta_data( $subscription_id, 'product_id', true ) ); return in_array( $product_id, medcz_featured_subscription_products(), true ); } /** * Turn Featured ON when WP Swings activates the subscription. * * WP Swings fires: * wps_wsp_after_subscription_active */ add_action( 'wps_wsp_after_subscription_active', function( $status, $subscription_id ) { if ( 'active' !== $status ) { return; } if ( ! medcz_is_featured_wps_subscription( $subscription_id ) ) { return; } $user_id = medcz_get_wps_subscription_user( $subscription_id ); if ( ! $user_id ) { return; } medcz_set_directorist_featured( $user_id, true ); }, 10, 2 ); /** * Turn Featured OFF when subscription expires. * * WP Swings fires: * wps_sfw_expire_subscription_scheduler */ add_action( 'wps_sfw_expire_subscription_scheduler', function( $subscription_id ) { if ( ! medcz_is_featured_wps_subscription( $subscription_id ) ) { return; } $user_id = medcz_get_wps_subscription_user( $subscription_id ); if ( ! $user_id ) { return; } medcz_set_directorist_featured( $user_id, false ); }, 10, 1 ); /** * Turn Featured OFF when the subscription is cancelled. * * WP Swings fires: * wps_sfw_subscription_cancel */ add_action( 'wps_sfw_subscription_cancel', function( $subscription_id, $reason ) { if ( ! medcz_is_featured_wps_subscription( $subscription_id ) ) { return; } $user_id = medcz_get_wps_subscription_user( $subscription_id ); if ( ! $user_id ) { return; } medcz_set_directorist_featured( $user_id, false ); }, 10, 2 ); /** * Turn Featured OFF when a renewal payment puts * the subscription on-hold. * * WP Swings stores the subscription ID on the renewal order. */ add_action( 'woocommerce_order_status_changed', function( $order_id, $old_status, $new_status ) { if ( $old_status === $new_status ) { return; } $order = wc_get_order( $order_id ); if ( ! $order ) { return; } /* * Only process WP Swings renewal orders. */ if ( 'yes' !== $order->get_meta( 'wps_sfw_renewal_order' ) ) { return; } /* * Payment failed / renewal order pending. */ if ( ! in_array( $new_status, array( 'failed', 'pending' ), true ) ) { return; } $subscription_id = absint( $order->get_meta( 'wps_sfw_subscription' ) ); if ( ! $subscription_id ) { return; } if ( ! medcz_is_featured_wps_subscription( $subscription_id ) ) { return; } $user_id = medcz_get_wps_subscription_user( $subscription_id ); if ( ! $user_id ) { return; } medcz_set_directorist_featured( $user_id, false ); }, 10, 3 ); /** * Turn Featured back ON when a previously on-hold * subscription becomes active again. * * WP Swings fires: * wps_sfw_subscription_active_renewal */ add_action( 'wps_sfw_subscription_active_renewal', function( $subscription_id ) { if ( ! medcz_is_featured_wps_subscription( $subscription_id ) ) { return; } $user_id = medcz_get_wps_subscription_user( $subscription_id ); if ( ! $user_id ) { return; } medcz_set_directorist_featured( $user_id, true ); }, 10, 1 );
You cannot copy content of this page