register( new Indexable\Post\Post() ); /** * Handle features */ Features::factory()->register_feature( new Feature\Search\Search() ); Features::factory()->register_feature( new Feature\InstantResults\InstantResults() ); Features::factory()->register_feature( new Feature\Autosuggest\Autosuggest() ); Features::factory()->register_feature( new Feature\WooCommerce\WooCommerce() ); Features::factory()->register_feature( new Feature\Facets\Facets() ); Features::factory()->register_feature( new Feature\RelatedPosts\RelatedPosts() ); Features::factory()->register_feature( new Feature\SearchOrdering\SearchOrdering() ); Features::factory()->register_feature( new Feature\ProtectedContent\ProtectedContent() ); Features::factory()->register_feature( new Feature\Documents\Documents() ); if ( version_compare( $wp_version, '5.3', '>=' ) || 0 === stripos( $wp_version, '5.3-' ) ) { Features::factory()->register_feature( new Feature\Comments\Comments() ); } if ( version_compare( $wp_version, '5.1', '>=' ) || 0 === stripos( $wp_version, '5.1-' ) ) { Features::factory()->register_feature( new Feature\Users\Users() ); } if ( version_compare( $wp_version, '5.3', '>=' ) || 0 === stripos( $wp_version, '5.3-' ) ) { Features::factory()->register_feature( new Feature\Terms\Terms() ); } /** * Register search algorithms */ SearchAlgorithms::factory()->register( new SearchAlgorithm\DefaultAlgorithm() ); SearchAlgorithms::factory()->register( new SearchAlgorithm\Version_350() ); SearchAlgorithms::factory()->register( new SearchAlgorithm\Version_400() ); } add_action( 'plugins_loaded', __NAMESPACE__ . '\register_indexable_posts' ); /** * Set the availability of dashboard sync functionality. Defaults to true (enabled). * * Sync can be disabled by defining EP_DASHBOARD_SYNC as false in wp-config.php. * NOTE: Must be defined BEFORE `require_once(ABSPATH . 'wp-settings.php');` in wp-config.php. * * @since 2.3 */ if ( ! defined( 'EP_DASHBOARD_SYNC' ) ) { define( 'EP_DASHBOARD_SYNC', true ); } /** * Setup installer */ Installer::factory(); /** * Setup screen */ Screen::factory(); /** * Setup dashboard */ require_once __DIR__ . '/includes/dashboard.php'; Dashboard\setup(); /** * WP CLI Commands */ if ( defined( 'WP_CLI' ) && WP_CLI ) { WP_CLI::add_command( 'elasticpress', __NAMESPACE__ . '\Command' ); } /** * Setup upgrades */ Upgrades::factory(); /** * Handle upgrades. Certain version require a re-sync on upgrade. * Deprecated in favor of `\ElasticPress\Upgrades::factory()`. * * @since 2.2 */ function handle_upgrades() { _deprecated_function( __CLASS__, '3.5.2', '\ElasticPress\Upgrades::factory()' ); } /** * Load text domain and handle debugging * * @since 2.2 */ function setup_misc() { load_plugin_textdomain( 'elasticpress', false, basename( __DIR__ ) . '/lang' ); // Load any available translations first. if ( is_user_logged_in() && ! defined( 'WP_EP_DEBUG' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; define( 'WP_EP_DEBUG', is_plugin_active( 'debug-bar-elasticpress/debug-bar-elasticpress.php' ) ); } } add_action( 'plugins_loaded', __NAMESPACE__ . '\setup_misc' ); /** * Fires after Elasticpress plugin is loaded * * @since 2.0 * @hook elasticpress_loaded */ do_action( 'elasticpress_loaded' );