I have a field called post_title
which is present in the wp_posts
table and 2 custom fields - production_year
and movie_description
- these 2 custom fields are located inside the wp_postmeta
table.
I want to filter my posts of custom post type movies
on the archive page like: www.mydomain.com/movies?search_text=Superman
This code below in functions.php
doesn't work for post_title
, it searches only for text in movie_description
fields. Is it because $query->set('meta_query')
works only for custom post fields from wp_postmeta
table and not for standard post fields like post_title
from wp_posts
table?
functions.php:
<?php
class searchMovies{
function __construct(){
add_action( 'pre_get_posts', array( $this, 'filterquery' ) );
}
function filterquery( $query ){
global $pagenow;
global $typenow;
// THIS DOES NOT SEEM TO WORK HERE ↓↓↓
if ( is_archive()
&& $query->is_main_query()
&& isset( $_GET['search_text'] )
&& !empty( $_GET['search_text'] )
) {
$query->set(
'meta_query',
array(
'relation' => 'OR',
array(
'key' => 'post_title',
'value' => $_GET['search_text'],
'compare' => 'LIKE'
),
array(
'key' => 'movie_description',
'value' => $_GET['search_text'],
'compare' => 'LIKE'
)
)
);
}
return $main_query;
}
}
new searchMovies();