Store Locator WordPress Hooks/Filters
Store Locator for WordPress offers multiple hooks or filters to change the behavior of the event or change in the dataset, below are the available filters that can be used in WordPress.
List of Store Locator Filters
Filter | Description |
asl_filter_stores_result | The purpose of the above filter is to change the dataset of the stores that are thrown to the store locator in JSON format. |
asl_filter_locator_attrs | To change the shortcode attributes of the store locator, for example, you want to hide the list of the store locator via a hook, that can be performed with it. |
asl_filter_locator_words | In case you want to change or replace any word text of the store locator that is injected in the JS file, it can be done via this filter without modifying any core file. |
asl_filter_search_widget_words | In case you want to change or replace any word text of the Search widget can be done via this filter. |
asl_parse_csv | This filter can be used to manipulate the data before it is imported via the CSV importer tool. |
asl_woocommerce_store_settings | This filter is being used in the Multi-Store Addons for WooCommerce before the Store data is saved through the form. |
asl_filter_store_detail | This filter will be fired when the store detail widget is being used on some page. |
asl_filter_store_form | This filter will be fired during the rendering of the Store Registration form, you can change the configuration of the form using it. |
asl_filter_locator_config | This filter will be fired before the rendering of the Store Locator, you can tweak the configs using it. |
asl_filter_pre_register_store | This filter will be fired before the store registration form values are saved, so you can manipulate the data before saving it, since version (4.9.15) |
asl_action_store_registered | This action will be fired after the store registration form is saved, it provides the ID of the saved store, since version (4.9.15) |
asl_before_stores_import | An action that executes before the import of the CSV file, you can delete existing stores as given in the example below, since version (4.9.15) |
How to use the above filters?
The above filters can be used in the functions.php file of your active theme, below is an example of the filter usage.
In this example, we have changed the category id to the category name, that is used in the query parameter.
/**
* [asl_filter_locator_method description]
* @param [type] $attrs [description]
* @return [type] [description]
*/
function asl_filter_locator_method($attrs) {
global $wpdb;
$q_category = isset($_GET['locator-category']) && $_GET['locator-category']? $_GET['locator-category']: null;
if($q_category) {
$locator_category = $wpdb->get_results($wpdb->prepare("SELECT * FROM ".ASL_PREFIX."categories WHERE category_name = %s", $q_category));
if($locator_category && isset($locator_category[0])) {
$attrs['select_category'] = $locator_category[0]->id;
}
}
return $attrs;
};
add_filter('asl_filter_locator_attrs', 'asl_filter_locator_method');
Apply your own CSS file for the Search Widget
/**
* [asl_filter_search_widget_words_method Used this filter to change the CSS file]
* @param [type] $words [description]
* @return [type] [description]
*/
function asl_filter_search_widget_words_method($words) {
// Dequeue the plugin search css file
wp_dequeue_style('agile-store-locator-asl-search');
// Add your customized search file
wp_enqueue_style('asl-search-widget', get_template_directory_uri().'/asl_search-updated.css', array(), '4.9.12', 'all' );
return $words;
}
add_filter('asl_filter_search_widget_words', 'asl_filter_search_widget_words_method');
Store Results Filter to Manipulate or Change the Store Data
/**
* [asl_add_additional_column Use this Method to add a new field to the data]
* @param [type] $all_stores [description]
* @return [type] [description]
*/
function asl_add_additional_column($all_stores) {
foreach($all_stores as $store) {
$store->agent = 'John Doe';
}
return $all_stores;
}
add_filter('asl_filter_stores_result', 'asl_add_additional_column');
Another example of asl_filter_stores_result is to through the data from some API or custom CPT.
/**
* [asl_add_additional_column Custom data rendered using CPT or API endpoint]
* @param [type] $all_stores [description]
* @return [type] [description]
*/
function asl_stores_custom_data($all_stores) {
// Array of stores
$my_stores = [];
// Add the Store 1
//$my_stores[]
// Add the Store 2
//$my_stores[]
return $my_stores;
}
add_filter('asl_filter_stores_result', 'asl_stores_custom_data');
Truncate/Delete all my existing stores data before the import process
// Delete all my stores before the import of new files, Tested with version 4.9.15
add_action('asl_before_stores_import', function() {
// Create an instance
$store_inst = new \AgileStoreLocator\Admin\Store();
// Must be returned as object, else it will die
$store_inst->as_object = true;
// Yes, delete everything, CAN'T be restored!
$store_inst->admin_delete_all_stores();
});