fbpx
Did you miss our exclusive webinar on Attendee information? Click here to view the recorded session.
How can we help?

Add custom field in Search filter

It is possible for the users of WP Event Manager to add new filters to the event search form. In this guide we will show you how you can do it.

Creating a custom event search filter

WP Event Manager’s [Events] shortcode shows a search filter on the top. if you want to add a custom filter in the top section, you can add it via hook or overriding template files.

You can easily add new filters to the event search form by adding a field and modifying the search queries using the filters.

Here are the steps you need to follow :

  1. Open your child theme.
  2. Add the code into the funtions.php file.

    Here is an example field:

    
    /**
     * Adding via filter or you can directly add in a template file
     */
       add_action( 'event_manager_event_filters_search_events_end', 'filter_by_country_field' );
       function filter_by_country_field() { ?>
    
    <div class="wpem-row">
    	<div class="wpem-col">
    		<div class="wpem-form-group">
    				<div class="search_event_types">
    				<label for="search_event_types" class="wpem-form-label"><?php _e( 'Country', 'event_manager' ); ?></label>
    				<select name="filter_by_country" class="event-manager-filter">
    					<option value=""><?php _e( 'Select country', 'event_manager' ); ?></option>
    					<option value="de"><?php _e( 'Germany', 'event_manager' ); ?></option>
    					<option value="in"><?php _e( 'India', 'event_manager' ); ?></option>
    					<option value="us"><?php _e( 'USA', 'event_manager' ); ?></option>
    				</select>
    			</div>
    		</div>
    	</div>
    </div>
    <?php 
    }
    
    /**
     * This code gets your posted field and modifies the event search query
     */
    add_filter( 'event_manager_get_listings', 'filter_by_country_field_query_args', 10, 2 );
    function filter_by_country_field_query_args( $query_args, $args ) {
        if ( isset( $_POST['form_data'] ) ) {
            parse_str( $_POST['form_data'], $form_data );
            // If this is set, we are filtering by country
            if ( ! empty( $form_data['filter_by_country'] ) ) {
                $event_country = sanitize_text_field( $form_data['filter_by_country'] );
                $query_args['meta_query'][] = array(
                            'key'     => '_event_country',
                            'value'   => $event_country,
                            );
            }
        }
        return $query_args;
    }
    
  3. Save Changes.
  4. Create a new field in the field editor(WP-Admin >> Event Manager >> Field Editor).
  5. The field created should be with the meta key value( _event_country).
  6. The placeholder should contain the same value, as provided in the code( de | in | us).
  7. Save changes.
  8. Link your Events with the country and finally you can filter them on the frontend.
Add Custom Field In Search Filter
Ashok Dudhat

Our team constantly explores ways that technology can help us reinvent industries. We want to change the world by creating great products that transform industries. We Dream It, We Make It.

Quick Links
Close
Close