searchwp\sources
Since: 4.0.0
Table of Contents
Control what content can be indexed and searched by SearchWP. See also \SearchWP\Source
.
Parameters
Type | Parameter | Default | Since |
---|---|---|---|
Array | $sources |
Core Sources | 4.0.0 |
Examples
All hooks should be added to your custom SearchWP Customizations Plugin.
Add custom Source to SearchWP
This example Source is modeled upon a custom database table. See lines 46-50 for usage of this particular hook.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Adds custom SearchWP\Source for MyCustomSearchWPSource which uses a custom database table. | |
*/ | |
add_action( 'plugins_loaded', function() { | |
class MyCustomSearchWPSource extends \SearchWP\Source { | |
// Unique name for this Source. | |
protected $name = 'mycustomsource'; | |
// Database column name that provides a unique ID for each entry of the Source. | |
protected $db_id_column = 'id'; | |
function __construct() { | |
global $wpdb; | |
// The database table storing entries. | |
$this->db_table = $wpdb->get_blog_prefix() . 'my_db_table'; | |
// Labels for this Source. | |
$this->labels = [ | |
'plural' => 'My Custom Source Entries', | |
'singular' => 'My Custom Source Entry', | |
]; | |
// Attributes for this Source. Array of attributes, can be expanded. | |
$this->attributes = [ [ | |
'name' => 'content', | |
'label' => 'Entry Content', | |
'default' => \SearchWP\Utils::get_min_engine_weight(), | |
'data' => function( $entry_id ) { | |
// Note: MyWidget is an pseudo-class meant to represent | |
// a class you're using that represents something like | |
// WP_Post in that it models the data you are working with. | |
// Long story short: this method should return the content | |
// you want to index and make searchable in SearchWP. | |
return MyWidget::get_content( $entry_id ); | |
}, | |
], ]; | |
} | |
// Returns a native object e.g. formatted in a way you expect. | |
public function entry( \SearchWP\Entry $entry, $query = false ) { | |
// Note: MyWidget is a pseudo-class meant to represent a class | |
// you're using that represents something like WP_Post in that it | |
// models the data you're working with. | |
// Long story short: this method should return whatever it is you | |
// expect when working 'natively' with your data e.g. for WordPress | |
// pages a WP_Post is returned. Note that $entry->get_id() returns | |
// the value in the $db_id_column for this Source. | |
return new MyWidget( $entry->get_id() ); | |
} | |
} | |
// Append this Source to the list of available Sources in SearchWP. | |
add_filter( 'searchwp\sources', function( $sources ) { | |
$sources[] = new MyCustomSearchWPSource(); | |
return $sources; | |
} ); | |
} ); |