This article contains PHP code and is intended for developers. We offer this code as a courtesy, but don't provide support for code customizations or 3rd party development.
Dynamically change the URL users are redirected to if more control is needed than the basic conditional statements allow, i.e. http://[if 25 equals="Option 1"]site-a.com[/if 25][if 25 equals="Option 2"]site-b.com[/if 25][if 25 equals="Option 3"]site-c.com[/if 25].
Usage
add_filter('frm_redirect_url', 'return_page', 9, 3); function return_page($url, $form, $params)
Parameters
- $url (string)
- $form (object)
- $params (array that includes $param['action'] for update vs create differentiation)
Examples
Basic example
add_filter('frm_redirect_url', 'return_page', 9, 3);
function return_page($url, $form, $params){
if($form->id == 5){ //change 5 to the ID of the form to redirect
$field_id = 125; //change 125 the the ID of the radio or dropdown field
if($_POST['item_meta'][$field_id] == 'Option 1') {
$url = 'http://example.com/redirect-here';
} else if($_POST['item_meta'][$field_id] == 'Option 2') {
$url = 'http://example.com/redirect-here';
} else {
$url = 'http://example.com/redirect-here'; //if neither Option 1 or Option2 are selected, redirect to this URL
}
}
return $url;
}
More advanced example
add_filter('frm_redirect_url', 'return_page', 9, 3);
function return_page($url, $form, $params){
if($form->id == 5){ //change 5 to the ID of the form to redirect
$field_id = 25; //change 25 the the ID of the radio or dropdown field
if($_POST['item_meta'][$field_id] == 'A'){
if($_POST['item_meta'][26] == 'Option 1'){ //change 26 to the id of second field
$url = 'http://example.com/redirect-here';
}else if($_POST['item_meta'][26] == 'Option 2'){
$url = 'http://example.com/redirect-here';
}else{
$url = 'http://example.com/redirect-here';
}
}else if($_POST['item_meta'][$field_id] == 'B'){
$url = 'http://example.com/redirect-here';
}else if($_POST['item_meta'][$field_id] == 'C'){
$url = 'http://example.com/redirect-here';
}
}
return $url;
}
Change URL when updating
Use this code to change the redirect URL when an entry is being updated.
add_filter('frm_redirect_url', 'return_page', 9, 3);
function return_page($url, $form, $params){
if(!isset($params['action'])){
$params['action'] = FrmAppHelper::get_param('frm_action');
}
if($form->id == 5 and $params['action'] == 'update'){ //change 5 to the id of your form
$url = 'http://example.com/redirect-page';
}
return $url;
}
Allow brackets in redirect URL
Some applications need to pass parameters like [6] in redirect URLs. This code example allows you to add brackets in your redirect URL.
add_filter( 'frm_redirect_url', 'partial_prepare_redirect_url', 1 );
function partial_prepare_redirect_url( $url ) {
remove_filter( 'frm_redirect_url', 'FrmEntriesController::prepare_redirect_url' );
return str_replace( array( ' ', '|', '@' ), array( '%20', '%7C', '%40' ), $url );
}
Allow ampersands in redirect URL
Use this code snippet to support ampersands from user input inside in your redirect URL.
add_filter( 'frm_redirect_url', 'replace_encoded_ampersand', 10, 2 );
function replace_encoded_ampersand( $url, $form ) {
$target_form_id = 727; // Change 727 to your form ID.
if ( $target_form_id === (int) $form->id ) {
$url = str_replace( '&', '&', $url );
}
return $url;
}