It’s possible with the free version. You need to write a function that reads in the setting user has chosen and passes them to Relevanssi. Here’s how you do that: http://www.relevanssi.com/knowledge-base/adding-a-custom-field-filter-in-the-search/
Thanks Mikko, I’m getting there with this advice. A related question to the same site: Besides a full library search with custom field limits, I also want to provide some custom search archive results. I am moving a site to WordPress. You can see how I have this working with my old site using php/MySQL. This is one of a number of unique archives: http://www.shotpeener.com/library/kirk_articles.php This page queries the author field of the library database for “kirk”. This is not the only page like this.
With the new WordPress site (in development) I have used ACF for custom fields like author and source. I’m trying to figure out how to use Relevanssi to do something similar to the old site. I’m a bit at a loss, but think that doing a direct query as you describe here (http://www.relevanssi.com/knowledge-base/relevanssi_do_query/) and using meta_query to query the custom field. I’m not sure how to put this together i.e, what kind of conditional statement to add to filter and where to call the relevanssi_do_query() function, and how to create menu item.
I’m using Wootheme Canvas. Thanks much.
Mikko, I made some progress. I created a custom template for my search php file and assigned this file to a page that I call from the menu. I’ve added the following code to a custom loop-search-customname.php file (and I checked, it is being called).
$args = array(
‘post_type’ => ‘documents’,
‘meta_query’ => array(
array(
‘key’ => ‘author’,
‘value’ => ‘kirk’,
),
),
);
$my_query = new WP_Query( $args );
$my_query->query_vars[‘s’];
relevanssi_do_query($my_query);
—
the wootheme template then goes through the Loop…
I get no results and get_search_query() returns nothing.
You’re calling Relevanssi fine, but the loop doesn’t know you want to see the posts in $my_query. It gives you the results in $wp_query.
Try renaming $my_query to $wp_query to override the global $wp_query variable and see if that helps.
Renamed and added
$wp_query->query_vars['posts_per_page'] = 30;
—
$args = array(
'post_type' => 'documents',
'meta_query' => array(
array(
'key' => 'author',
'value' => 'kirk',
'compare' => 'LIKE'
),
),
);
$wp_query = new WP_Query( $args );
$wp_query->query_vars['s'];
$wp_query->query_vars['posts_per_page'] = 30;
if ( function_exists( 'relevanssi_do_query' ) ) {
relevanssi_do_query( $query ); }
if ($wp_query->have_posts()) { $count = 0;
—
some data is appearing (there should be around 75 results) but only 10 results appear. Woo pagination isn’t working — appears, but doesn’t change the list of posts displayed.
I also have something wrong with my templates, as the results are not styled and the post-meta isn’t displaying as it should.
Here’s the page I’m working on:
http://dev.shotpeener.com/kirk-articles/
Here’s the results as done with a relevanssi search form (and searching all fields):
http://dev.shotpeener.com/?s=kirk&post_type=documents&submit=Search
Let me know if I need to buy a premium version.
The pagination is not working, because the query you have is requesting the same set of results – you need to add support for the pagination, ie. add the “paged” parameter (see https://codex.wordpress.org/Class_Reference/WP_Query) when you’re not on page 1.
Hi Mikko,
Finally go the pagination working.
$args = array(
'post_type' => 'documents',
'posts_per_page' => 30,
'meta_key' => 'anc',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'author',
'value' => 'kirk',
'compare' => 'LIKE'
),
),
);
$wp_query = new WP_Query( $args );
$wp_query->query_vars['s'];
if ( function_exists( 'relevanssi_do_query' ) ) {
relevanssi_do_query( $query ); }
Problem with number of hits displayed at the top of the page. On the regular relevant search page I use:
<?php echo 'Search results = ' . $wp_query->found_posts . ''; ?>
which works fine.
With this direct query, Search results always = 1, even though there are many hits.
Thanks
You’re setting the variables in $wp_query, yet using $query as the parameter for the relevanssi_do_query(). That should be $wp_query as well.
Relevanssi also stores the number of hits in $wp_query->found_posts, so that should work.
By the way – sorting by meta_key does not work in Relevanssi, you need to remove that meta_key parameter. There’s an example of meta_key sort here: http://www.relevanssi.com/user-manual/relevanssi_hits_filter/
When I change that to relevanssi_do_query ($wp_query) I get no results.
Ah, I see that the meta_key parameter breaks the relevanssi_do_query completely. I’ll add the filter and see what that does.
Thanks for your help.