Membership 2 Pro custom redirect

The Membership 2 Pro redirect to "Thank you" page after signup. The redirect add-on doesn't take effect in this case as it only works with login/logout and if we don't want to use any 3rd-party solutions, how can this be overriden?

There's this function in /app/model/class-ms-model-pages.php file that seems to be handling all redirects:

There's the function that performs all the redirects based on the parameters that it gets, in /membership/app/model/class-ms-model-pages.php file around line 534:
/**
* Redirect the user the specified membership page.
*
* @since 1.0.0
* param string $page_type The page-type.
* param array $args Optional. Additional URL parameters.
*/
static public function redirect_to( $page_type, $args = array() ) {
self::create_missing_pages();
$url = self::get_page_url( $page_type );

$url = esc_url_raw( add_query_arg( $args, $url ) );

/**
* Opportunity for other plugins to redirect to a different page.
*/
$url = apply_filters(
'ms_model_pages_redirect_to',
$url,
$page_type,
$args
);

wp_safe_redirect( $url );
exit;
}

There's a "ms_model_pages_redirect_to" filter that most likely could be used for this from mu-plugin so how do I use it to redirect freshly registered member to a specified page on site instead of the default "Thank You" page?

  • Majid
    • Syntax Hero

    Hey Jonathan !

    I hope you are doing great today :slight_smile:

    The following php code can be added to your theme's functions.php file or inside and mu-plugin.
    You just need to replace your-page-url-here text with your page url, and the redirection should work.

    add_filter( 'ms_model_pages_redirect_to', function( $url ) {
    	return 'your-page-url-here';
    });

    Let me know if this helps.

    Cheers,
    Majid

    • Ellis Benus
      • Site Builder, Child of Zeus

      Majid's solution will redirect everyone to that page. I've added some code to check for the Membership Name and redirect based off that. You could make a custom redirect for every membership level if you wanted.

      // Membership 2 Custom Redirect
      add_filter( 'ms_model_pages_redirect_to', 'custom_thank_you_page', 10, 2 );
      function custom_thank_you_page( $url, $page_type ) {
      
      	// Get the current member/user
      	$member = MS_Model_Member::get_current_member();
      
      	// Iterate through all the user's memberships
      	foreach ( $member->subscriptions as $subscription ) {
      		$membership = $subscription->get_membership();
      		$memberships[] = $membership->name;
      	}
      	// If the user is in "Membership Name" membership, then redirect to custom Thank You page
      	if ( in_array('Membership Name', $memberships ) ) {
      		$url = 'http://domain.com/custom-page/';
      		return $url;
      	}
      
      	// If none of the above are met, redirect to default URL
      	return $url;
      }

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.