Reason
FiboSearch Pro uses a custom AJAX endpoint URL to send requests for search results. This endpoint has the following URL structure:
https://your-domain.com/wp-content/plugins/ajax-search-for-woocommerce-premium/includes/Engines/TNTSearchMySQL/Endpo'ints/search.php?s=test
Some security plugins or firewalls such as Securi Security or firewall from GoDaddy WordPress hosting might prevent the execution of PHP files that are located in wp-content or wp-content/plugins
directories.
Solution
We have come up with some solutions for popular security plugins. If you use iThemes Security, Sucuri Security, or WP Defender and your endpoint is blocked, learn more about possible solutions for these plugins. If you don’t have these plugins and your endpoint is still blocked, read on.
The solution is to create another endpoint in the root directory where your WordPress is installed and set FiboSearch to use the new endpoint URL.
Step 1 – Create a new directory /fibosearch
in the WordPress root directory and add there index.php
file
Create a directory with the name
in the WordPress root directory. It should be the same level where you have the fibosearch
wp-config.php
For many hosting providers, this will be public_html/fibosearch
Go to the directory /fibosearch
and create an empty index.php
. The path should be /fibosearch/index.php
.
Step 2 – Add the following snippet to the /fibosearch/index.php
file
<?php /** * Custom FiboSearch endpoint */ define( 'SHORTINIT', true ); $wp_load = '../wp-load.php'; if ( file_exists( $wp_load ) ) { require_once $wp_load; $endpoint = '../wp-content/plugins/ajax-search-for-woocommerce-premium/includes/Engines/TNTSearchMySQL/Endpoints/search.php'; if ( file_exists( $endpoint ) ) { require_once $endpoint; } }
Step 3 – Set the new endpoint
Add the following snippet.
- Open the
functions.php
file in your child theme and add the code at the end - Or install the Code Snippets plugin and apply this code as a snippet.
add_filter( 'dgwt/wcas/endpoint/search', function ( $endpoint ) { return home_url( '/fibosearch/' ); } );
Step 4 – Check if the endpoint works
Go to WooCommerce
→ FiboSearch
If you don’t see a “Troubleshooting” tab, it means that the problem has been solved. If you see the “Troubleshooting” tab
→ click the “Check status again” button
If everything is ok, this tab should disappear.
Multisite with different sites in directories and Nginx
The combination of Nginx and Multisite when the sites are different directories requires extra configuration. Otherwise, the search results on every site will return products from the main site. Add the following lines to the Nginx configuration file:
if (!-e $request_filename) { rewrite ^(/[^/]+)?(/search\.php) /$2 last; }
If it still doesn’t work, scroll down to the Alternative solution section.
Alternative solution
If the above solution doesn’t work, we have one more quick fix. You can enable the WooCommerce AJAX endpoint instead of our custom endpoint. Add the following constant to the wp-config.php
file:
define( 'DGWT_WCAS_ALTERNATIVE_SEARCH_ENDPOINT', true );
Using this alternative endpoint, you will be able to use all pro features, but the search might be a bit slower.
Why do we use a custom AJAX endpoint instead of using admin-ajax.php or WP REST API? (only for geeks)
Every time someone types something in the FiboSearch bar, JavaScript sends a request to this endpoint for search results.
Why do we use a custom endpoint instead of using admin-ajax.php
or WP REST API
? The answer is simple. Speed, speed, and once again speed.
Using a custom search endpoint, WordPress can be loaded in special SHORTINIT
mode by defining a constant define( 'SHORTINIT', true );
Then WordPress reduces initializing to a minimum. No plugins are loaded. No theme is loaded and a lot of WordPress core files aren’t loaded. You can use the $wpdb
object and your own scripts.
This means that every search query doesn’t need to load unnecessary files that are redundant in the search context. It’s a huge benefit. Imagine you have 50 plugins and every search query requires all of these plugins to be loaded as well as plenty of SQLs and calculations that are not related to the search request. It’s ridiculous, but this happens in WordPress by default if you use admin-ajax.php
or WP REST API
As a result, the search is always fast, no matter how many plugins you have or how your website is optimized or not optimized.