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.
You must be logged in to reply to this topic.
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’re reaching out to our multilingual users to ask for help in translating ACF 6.1. Help make sure the latest features are available in your language here: https://t.co/TkEc2Exd6U
— Advanced Custom Fields (@wp_acf) May 22, 2023
© 2023 Advanced Custom Fields.
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.