SearchWP Documentation

View the installation guide, browse the Knowledge Base, find out about SearchWP’s many hooks

\SWP_Query

Table of Contents

\SWP_Query an alternative to \SearchWP\Query with a couple of important differences:

  1. The design and implementation is modeled after WP_Query.
  2. As a result, regardless of \SearchWP\Engine configuration, results will be limited to \SearchWP\Sources based on WP_Post e.g. Posts, Pages, Media, and Custom Post Types.

Basic Usage

\SWP_Query can be used just as you would (and in some cases swapped in for usage of) WP_Query:

<?php
//@link https://searchwp.com/documentation/classes/swp_query/
global $post;
$swp_query = new SWP_Query( [
's' => 'coffee', // Search query.
'engine' => 'default', // Engine name.
] );
if ( $swp_query->have_posts() ) {
while ( $swp_query->have_posts() ) :
$swp_query->the_post();
?>
<div class="search-result">
<h3><a href="<?php echo get_permalink(); ?>">
<?php the_title(); ?>
</a></h3>
<?php the_excerpt(); ?>
</div>
<?php
endwhile;
wp_reset_postdata();
} else {
?>
<p>No results found.</p>
<?php
}
view raw functions.php hosted with ❤ by GitHub

Note: There are some caveats in that \SWP_Query does not have feature parity with WP_Query. Please refer to this documentation which outlines what methods and properties are available to you.

Also note: Because \SWP_Query was designed to be (mostly) interoperable with WP_Query there may be times (e.g. when there is no s (search query) parameter) you can swap WP_Query back in to retrieve your results like so:

<?php
// @link https://searchwp.com/documentation/classes/swp_query/
global $post;
$args = [
's' => get_search_query(),
'tax_query' => [ [
'taxonomy' => 'people',
'field' => 'slug',
'terms' => 'bob',
] ],
];
// If a search query is present use SWP_Query
// else fall back to WP_Query
if ( ! empty( $args['s'] ) ) {
$swp_query = new SWP_Query( $args );
} else {
$swp_query = new WP_Query( $args );
}
// Loop through results.
if ( $swp_query->have_posts() ) {
while ( $swp_query->have_posts() ) :
$swp_query->the_post();
?>
<div class="search-result">
<h3><a href="<?php echo get_permalink(); ?>">
<?php the_title(); ?>
</a></h3>
<?php the_excerpt(); ?>
</div>
<?php
endwhile;
wp_reset_postdata();
} else {
?>
<p>No results found.</p>
<?php
}
view raw template.php hosted with ❤ by GitHub

Arguments

When instantiating a new \SearchWP\Attribute an array of the following can be provided:

s (string)
Search query. (default: '')
engine (string)
\SearchWP\Engine name. (default: 'default')
posts_per_page (integer)
Number of posts to return per page. (default: get_option( 'posts_per_page' ))
load_posts (boolean)
Whether to return results as WP_Posts. (default: true)
fields (string)
Whether to return "all" or "ids". (default: "all")
nopaging (boolean)
Whether to disable pagination and return all results. (default: false)
page (integer)
Which page of results to return. (default: null)
paged (integer)
Which page of results to return. (default: 1)
post__in (integer[])
Limit search pool to these IDs (default: [])
post__not_in (integer[])
Limit search pool to these IDs (default: [])
post_type (string[])
Limit results to these Post Types (default: [])
post_status (string[])
Limit results to these Post statii (default: [])
tax_query ([])
See tax_query (default: [])
meta_query ([])
See meta_query (default: [])
date_query ([])
See date_query (default: [])
order (string)
Return results in "ASC" or "DESC" order. (default: "DESC")
orderby (string)
Return results sorted by "relevance", "date", or "rand". (default: "relevance")

Methods

Note: There are magic getters and setters available for properties.

get_search_results()
Update results set based on current properties.
get_posts()
Returns the current results set.

Hooks

There are a number of hooks available to further modify the behavior of \SWP_Query:

Create a Better WordPress Search Experience Today

Never lose visitors to unhelpful search results again. SearchWP makes creating your own smart WordPress search fast and easy.

Get SearchWP Now
Multiple Search Engines Icon