trendwerk / search
Basic extensions for searching in WordPress.
Installs: 371
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/trendwerk/search
Requires
- php: >=5.6
 
Requires (Dev)
- 10up/wp_mock: dev-master
 - phpunit/phpunit: 5.7.*
 - squizlabs/php_codesniffer: 2.*
 
README
Basic extensions for searching in WordPress.
Quick links: Install | Usage | Dimensions | Example
Note: This basic extension is not very scalable and meant for smaller databases. This package could get slow for complex searches. In that case, Elasticsearch would be a better solution.
Install
composer require trendwerk/search
Usage
Initialize
$search = new \Trendwerk\Search\Search(); $search->init();
This code should be run when bootstrapping your theme.
Dimensions
Currently this package supports metadata and terms as search dimensions. Dimensions can be added by using addDimension:
$search->addDimension($dimension);
| Parameter | Default | Required | Description | 
|---|---|---|---|
$dimension | 
null | 
Yes | Should be an instance of a class that implements Dimension\Dimension. | 
Meta
$metaDimension = new \Trendwerk\Search\Dimension\Meta($wpdb, [ 'key' => 'firstName', ]); $search->addDimension($metaDimension);
Available options for constructing an instance of Meta:
| Parameter | Default | Required | Description | 
|---|---|---|---|
key | 
null | 
Yes | The meta_key to search for | 
compare | 
= | 
No | The database comparison that should be made for the meta key. Currently supports LIKE and =. When using LIKE, make sure to include a percent symbol (%) in your key parameter as a wildcard. See Example | 
Terms
$search->addDimension(new \Trendwerk\Search\Dimension\Term($wpdb, [ 'taxonomy' => 'taxonomyName', ]));
Available options for constructing an instance of Term:
| Parameter | Default | Required | Description | 
|---|---|---|---|
taxonomy | 
null | 
Yes | The taxonomy which terms should be included in search | 
Example
use Trendwerk\Search\Dimension\Meta; use Trendwerk\Search\Dimension\Term; use Trendwerk\Search\Search; $search = new Search(); $search->init(); $search->addDimension(new Meta($wpdb, [ 'compare' => 'LIKE', 'key' => 'lastNames%', ])); $search->addDimension(new Meta($wpdb, [ 'key' => 'firstName', ])); $search->addDimension(new Term($wpdb, [ 'taxonomy' => 'category', ]));