Skip to content

Instantly share code, notes, and snippets.

@crstauf
Created January 28, 2017 02:39
Show Gist options
  • Save crstauf/6b125c487a9436d42f9db3361a437aa6 to your computer and use it in GitHub Desktop.
Save crstauf/6b125c487a9436d42f9db3361a437aa6 to your computer and use it in GitHub Desktop.
filter function to add postmeta field '_sections' to search
function posts_clauses( $clauses, $wp_query ) {
/* reference: https://adambalee.com/search-wordpress-by-custom-fields-without-a-plugin/ */
if ( !$wp_query->is_search() )
return $clauses;
global $wpdb;
$clauses['join'] .=
' LEFT JOIN ' . $wpdb->postmeta .
' ON (' .
$wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ' .
'AND ' . $wpdb->postmeta . '.meta_key = "_sections"' .
')';
$clauses['where'] = preg_replace(
"/\(\s*" . $wpdb->posts . ".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
"(" . $wpdb->posts . ".post_title LIKE $1) OR (" . $wpdb->postmeta . ".meta_value LIKE $1)",
$clauses['where']
);
$clauses['distinct'] = "DISTINCT";
return $clauses;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment