Home › Forums › General Issues › Searching with ACF and the_title()
Hi there,
I have the following code to search custom ACF fields which works fine:-
// array of filters (field key => field name)
$GLOBALS['my_query_filters'] = array(
'field_1' => 'job_sector',
'field_2' => 'job_type',
'field_3' => 'job_location',
'field_4' => 'job_salary_from',
'field_5' => 'job_salary_to',
);
// action
add_action('pre_get_posts', 'my_pre_get_posts', 10, 1);
function my_pre_get_posts( $query ) {
// bail early if is in admin
if( is_admin() ) {
return;
}
// get meta query
$meta_query = $query->get('meta_query');
// loop over filters
foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
// continue if not found in url
if( empty($_GET[ $name ]) ) {
continue;
}
// get the value for this filter
// eg: http://www.website.com/events?city=melbourne,sydney
$value = explode(',', $_GET[ $name ]);
// append meta query
$meta_query[] = array(
'key' => $name,
'value' => $value,
'compare' => 'IN',
);
}
// update meta query
$query->set('meta_query', $meta_query);
}
However, within this search I also need to search ‘the_title’, how is it possible to do this?
Hi @nsilva
I believe you can get the post based on the keyword using the “s” parameter. This page should give you more idea about it: https://codex.wordpress.org/Class_Reference/WP_Query#Search_Parameter. Something like this:
// update meta query
$query->set('s', 'the keyword');
$query->set('meta_query', $meta_query);
Hope this helps.
When I use the above, and for example search the following:-
http://46.101.2.132/jobs/?s=Buying
It now loads a different page template, it needs to search the archive only, I don’t know if this makes it any different.
Usually the template loads as follows:-
http://46.101.2.132/jobs/?job_sector=&job_salary_from=&job_type=&job_location=
Hi @nsilva
The ?s= parameter is used by WordPress’ search function so you will get redirected to the search page when you are accessing that URL. You need to use another parameter like “search”, for example, so your link will look like this: http://46.101.2.132/jobs/?job_sector=&job_salary_from=&job_type=&job_location=$search=thekeyword
For the code, you can use something like this:
// update meta query
if( !empty($_GET[ 'search' ]) ) {
$query->set('s', $_GET[ 'search' ]);
}
// update meta query
$query->set('meta_query', $meta_query);
I hope this helps.
The topic ‘Searching with ACF and the_title()’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.