I would like to extend the WordPress admin post search (so in back-end) in order to look at keywords in post title but also in one custom field.
I find this thread interesseting (except the custom post type because I don’t use it) : Extending the search context in the admin list post screen and adapt my function like below :
function rel_search_join( $ join ) { global $ pagenow, $ wpdb; if ( is_admin() && $ pagenow == 'edit.php' && $ _GET['post_type'] == 'post' && $ _GET['s'] != '') { $ join .= 'LEFT JOIN ' . $ wpdb->postmeta . ' ON '. $ wpdb->posts . '.ID = ' . $ wpdb->postmeta . '.post_id '; } return $ join; } add_filter('posts_join', 'rel_search_join' ); function rel_search_where( $ where ) { global $ pagenow, $ wpdb; if ( is_admin() && $ pagenow == 'edit.php' && $ _GET['post_type']=='post' && $ _GET['s'] != '' ) { $ where = preg_replace( "/\(\s*".$ wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "(".$ wpdb->posts.".post_title LIKE $ 1) OR (".$ wpdb->postmeta.".my-custom-field-meta-key LIKE $ 1)", $ where ); $ where = str_replace( "OR wp_posts.post_status = 'pending'", "", $ where ); $ where = str_replace( "OR wp_posts.post_status = 'private'", "", $ where ); $ where = str_replace( "OR wp_posts.post_status = 'draft'", "", $ where ); $ where = str_replace( "OR wp_posts.post_status = 'future'", "", $ where ); } return $ where; } add_filter( 'posts_where', 'rel_search_where' );
But this does not work at all, the search was no longer working at all.
I feel like there is a way easier solution but I am not able to find it on any forums.
I know there are other solutions like custom field filters but it is not suitable for my custom field which can have thousands of values.
PS : I use Advanced Custom Field but I don’t think there is any connection.