ExpressionEngine Docs

Anatomy of a Pro Search Filter

Below is the skeleton of a Pro Search Filter, containing the default properties and methods.

class Pro_search_filter_foo extends Pro_search_filter {

    protected $params;
    protected $fields;
    protected $priority = 5;

    public function filter($entry_ids)
        return $entry_ids;

    public function fixed_order()
        return FALSE;

    public function exclude()
        return NULL;

    public function results($rows)
        return $rows;




(object) — a shortcut to the ee()->pro_search_params object for easy access to the current search parameters. Use $this->params in your methods.

$fields (v4.2.0)

(object) — a shortcut to the ee()->pro_search_fields object for easy access to the Fields library. Use $this->fields in your methods.


(int) — indicates when this filter should be executed regarding other filters. Filters with priority 1 will be executed before filters with priority 2, and so on. If the priority of your filter is irrelevant, you can omit it from your class. Defaults to 5.



Use this method to filter channel entries.



An array of entry IDs, an empty array (no results), or NULL (if given and your filter is not triggered).


Should return TRUE or FALSE depending on whether the entry IDs returned by the filter method are in the order they should appear in the Results tag. Defaults to FALSE.



exclude (v5.2.0)

Should return an array of entry IDs that should be excluded from the search results or NULL if no specific entries should be excluded.


Array or NULL


This method is called before displaying the search results in the Results tag so you can add your own custom variables to the search results. It basically piggy-backs on the channel_entries_query_result extension hook.



The (modified) array of entries.