Using WordPress ‘post_search_columns’ PHP filter

The post_search_columns WordPress PHP filter allows you to modify the columns to search in a WP_Query search. By default, it searches in the post_title, post_excerpt, and post_content columns.

Usage

add_filter('post_search_columns', 'my_custom_search_columns', 10, 3);

function my_custom_search_columns($search_columns, $search, $query) {
    // your custom code here
    return $search_columns;
}

Parameters

  • $search_columns (string[]): Array of column names to be searched.
  • $search (string): Text being searched.
  • $query (WP_Query): The current WP_Query instance.

More information

See WordPress Developer Resources: post_search_columns

Examples

Exclude post_excerpt from search

Exclude the post_excerpt column from the search results:

function exclude_post_excerpt_from_search($search_columns, $search, $query) {
    $key = array_search('post_excerpt', $search_columns);
    if ($key !== false) {
        unset($search_columns[$key]);
    }
    return $search_columns;
}
add_filter('post_search_columns', 'exclude_post_excerpt_from_search', 10, 3);

Include post_meta in search

Include a custom post_meta field in the search results:

function include_post_meta_in_search($search_columns, $search, $query) {
    $search_columns[] = 'post_meta_key';
    return $search_columns;
}
add_filter('post_search_columns', 'include_post_meta_in_search', 10, 3);

Include only post_title in search

Limit the search to only the post_title column:

function search_only_post_title($search_columns, $search, $query) {
    return array('post_title');
}
add_filter('post_search_columns', 'search_only_post_title', 10, 3);

Exclude post_content from search

Exclude the post_content column from the search results:

function exclude_post_content_from_search($search_columns, $search, $query) {
    $key = array_search('post_content', $search_columns);
    if ($key !== false) {
        unset($search_columns[$key]);
    }
    return $search_columns;
}
add_filter('post_search_columns', 'exclude_post_content_from_search', 10, 3);

Include a custom table column in the search results:

function include_custom_table_column_in_search($search_columns, $search, $query) {
    $search_columns[] = 'custom_table_column';
    return $search_columns;
}
add_filter('post_search_columns', 'include_custom_table_column_in_search', 10, 3);