vapvarun icon

Add a custom heading based on referrer URL and fetch title

vapvarun | PRO | 06/07/24 06:03:32 AM UTC | 0 ⭐ | 1154 👁️ | Never ⏰ | [Gravity from]
PHP |

2.52 KB

|

None

|

0 👍

/

0 👎

// Add a custom heading based on referrer URL and fetch title
function wbcom_add_custom_heading_based_on_referrer($form) {
    // Get the referrer URL
    $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
 
    // Define the default heading
    $default_heading = 'Please navigate to the event page to click on the Buy Ticket button.';
 
    // Fetch the post title and ID from the referrer URL
    $post_data = wbcom_fetch_post_data_from_url($referrer, $default_heading);
    $headingToDisplay = $post_data['title'];
    $post_id = $post_data['id'];
 
    // Add the heading to the form description
    $form['description'] = '<h2>' . esc_html($headingToDisplay) . '</h2>' . $form['description'];
 
    // Populate hidden fields with post title and post ID
    foreach ($form['fields'] as &$field) {
        if ($field->type == 'hidden') {
            if ($field->id == 15) { // field_4_15
                $field->defaultValue = esc_attr($headingToDisplay);
            } elseif ($field->id == 16) { // field_4_16
                $field->defaultValue = esc_attr($post_id);
            }
        }
    }
 
    return $form;
}
 
// Function to fetch post data from URL using WordPress REST API
function wbcom_fetch_post_data_from_url($url, $default) {
    if (empty($url)) {
        return array('title' => $default, 'id' => '');
    }
 
    // Parse the URL to get the path
    $path = parse_url($url, PHP_URL_PATH);
    if (empty($path)) {
        return array('title' => $default, 'id' => '');
    }
 
    // Remove leading and trailing slashes
    $path = trim($path, '/');
 
    // Get the last part of the path, assuming it's the post name (slug)
    $post_name = basename($path);
 
    // Fetch the post by name
    $post = get_page_by_path($post_name, OBJECT, 'tribe_events');
 
    // If post is found, return the title and ID, otherwise return the default
    if ($post) {
        return array('title' => $post->post_title, 'id' => $post->ID);
    } else {
        return array('title' => $default, 'id' => '');
    }
}
 
// Apply the custom heading function to the specific form using gform_pre_render
add_filter('gform_pre_render_4', 'wbcom_add_custom_heading_based_on_referrer'); // Form ID 4
add_filter('gform_pre_process_4', 'wbcom_add_custom_heading_based_on_referrer'); // Form ID 4
add_filter('gform_pre_validation_4', 'wbcom_add_custom_heading_based_on_referrer'); // Form ID 4
add_filter('gform_pre_submission_filter_4', 'wbcom_add_custom_heading_based_on_referrer'); // Form ID 4
 

Comments