Premier Boundaries shown on Settings

Enterprise customers are seeing the boundaries setting even when Boundaries Influences Guess is set to None.

Dev Notes

Premier Admin Tab JS Not Loading

The Premier Admin JavaScript should be managing that information and hiding the div when the setting is none.

Turns out the JS was not loading due to the page name change with the menu update. It also requires Google Maps to be loaded for this JavaScript to initialize.

Had to add a new SLP Google Maps loader as the existing enqueue_google_maps is really designed for the front end and attached to the ‘google_maps’ handle. A new gmaps handle and enqueue without an init callback is in place to allow for non-user presentation (admin) maps.

Add Location With Lat/Lng Does Not Save

Fixed in SLP 2502.19.01

Reproduction

Got to Location Details | Add
Name: Test
Latitude: 32.8393273773774
Longitude: -79.85448363551637

Code Tracing

In \SLPlus_Location::MakePersistent

$dataTooWrite = 
array (
  'sl_store' => 'Test',
  'sl_address' => '',
  'sl_address2' => '',
  'sl_city' => '',
  'sl_state' => '',
  'sl_zip' => '',
  'sl_country' => '',
  'sl_latitude' => '32.8393273773774',
  'sl_longitude' => '-79.85448363551637',
  'sl_tags' => '',
  'sl_description' => '',
  'sl_email' => '',
  'sl_url' => '',
  'sl_hours' => '',
  'sl_phone' => '',
  'sl_fax' => '',
  'sl_image' => '',
  'sl_private' => '',
  'sl_neat_title' => '',
  'sl_linked_postid' => 0,
  'sl_pages_url' => '',
  'sl_pages_on' => '',
  'sl_option_value' => '',
  'sl_initial_distance' => 943.4293089967016,
)

Error Logs

Database insert error:

WordPress database error: Processing the values for the following fields failed: sl_latitude, sl_longitude. The supplied values may be too long or contain invalid data.

Resolution

The problem is that Google is falsely creating GPS coordinates on the Google Maps interface likely in an effort to thwart data harvesting.

The latitude/longitude combination 32.8393273773774, -79.85448363551637 represents 14 places after the decimal.

9 places after the decimal represents a length on the earth’s surface of approximately 110 microns.

Anything after the sixth decimal place, about 11cm is fairly useless for general map locations.

In Store Locator Plus 2502.19.01 the \SLP_Admin_Locations_Actions::add_location() method was updated to format incoming latitude and longitude data to present no more than 9 places after the decimal. This is necessary to fit the data into a 14 character data field which is stored as a string.

This can include values with negative representation including “-180.123456789”.

SaaS Returning Wrong Location List

Users are seeing the wrong locations when logged in, seeing the main super admin locations.

Reproduction

  • Login as a super admin (CiCi?)
  • Bring up the customer list and switch to any customer (bhinson)

The default location list is not correct. For bhinson it shows 2 locations that belong to super admin. bhinson has 0 locations.

Testing Update : 2024.11.14

  • Correct locations show up on MySLP menu, but NOT the SLP menu.

Dev Notes

SaaS is using a custom REST endpoint to find locations: …/myslp/v2/locations

This is running a custom interface in the MySLP Dashboard defined wp-content/plugins/myslp-dashboard/include/class.myslp.rest.api.php which fetches locations from include/location/MySLP_Location.php get_locations();

This leverages wp-content/plugins/store-locator-plus/include/module/location/SLP_Location_Utilities.php to provide the location data interface.

In MySLP_Locations the slptbl is set in __construct() which may be too early.
it is coming back as wp_store_locator which is incorrect
It appears switch_to_blog() has not yet been called.
The call stack at this point..

switch_to_blog is called in MySLP class via perform_init_actions()
which is attached to the WP hook ‘init’ with no order of precedence set

SLP not returning proper locations

The SLP Location Manager is rendered via SLP_Admin_Locations::display_manage_locations_table()
./wp-content/plugins/store-locator-plus/include/module/admin/SLP_Admin_Locations.php

It is pulling locations vis the $slplus->database property which is an instantiation of SLP_Data::
./wp-content/plugins/store-locator-plus/include/module/data/SLP_Data.php

SLP_Data::initialize is setting the SLP_Data::from_slp_table property via SLP_Data::set_database_meta()
This pulls from SLP_Data::db which is an instantiation of the WordPress wpdb class. The table is set by adding wpdb->prefix to the ‘store_locator’ fixed string.

wpdb->prefix is not pulling the proper user prefix , likely due to switch_to_blog() not being called yet.

Call Sequence

  • store-locator-plus.php is loaded…
  • slp_setup_environment() is called…
  • SLPLUS::initialize() is executed
    • $this->database = new SLP_Data()
  • SLP_Actions::initialize()
    • add_action( ‘init’, array( $this, ‘init’ ), 11 );
  • SLP_Actions::init() via WP init hook
  • MySLP::perform_init_actions()

Resolution

MySLP

The main MySLP dashboard loader (wp-content/plugins/myslp-dashboard/myslp-dashboard.php) was initializing the MySLP_Location class which immediate set the properties for SLP table and Extendo table names.

This needed to be deferred until after the MySLP::perform_init_actions() was called.

Added a new method in MySLP_Location::perform_init_actions() that sets the slp and extendo class properties. It is called from within the MySLP::perform_init_actions() to ensure proper timing on the reading of those table names.

SLP

Initialize the $slplus->data (SLP_Data) object AFTER the user login, performing the setup in the init action hook within SLP_Actions.

0 comments on “Testing: Location Categories”

Testing: Location Categories

Location categories provides a way to place categories into groups that can be filtered via the administrative tools and on the front end user experience.

Managing categories is provided by the Power add on.

Technical Implementation

The underlying technology uses the built-in WordPress category management system. Some of the core functionality of adding, removing, and assigning categories is managed by WordPress and thus requires additional testing whenever WordPress posts a new release.

The Power add on extend this default functionality to provide custom administrative and user interactions with location categories.

Testing Environment (July 2022)

WordPress 6+
Store Locator Plus 5.13+
Power Add On 5.11+

Related Use Cases

The use cases are based on the WordPress plugins. Most of the processes described within apply to the MySLP SaaS implementation as well.

Assumptions

WordPress environment is setup and configured including activation of the following plugins

  • Store Locator Plus®
  • SLP Power add on

In addition map service (Google API keys) should be in place and some locations should be added to the system.

A page has been created with the [slplus] shortcode present and the map is rendering properly.

Users are logged in as a WordPress administrator (the process will be slightly different for SaaS users).

Adding Categories To Locations

Objective

Create a location category and attach it to an existing location.

User Action: Add A Location Category

  1. Click on Store Locator Plus® | Categories in the WordPress sidebar menu.
  2. In the left “Add New Category Form”…
    1. Type a category name. (Restaurant)
    2. Click Add New Category
Result

The new category should appear on the category list on the page.

Category list after adding the restaurant category.

User Action: Attach Category To Location

  1. Click on Store Locator Plus® | Locations in the WordPress sidebar menu.
  2. Click the Edit action icon on the first location.
  3. Check off the box next to “Restaurants” in the Power | Categories section of the form.
  4. Click Save.
Result

The category is assigned to the location and appears on the location table.

The location with an assigned restaurant category. This view is showing fewer columns as the Screen Options was updated to removed unused columns from the table view.

User Action: Show Category Select On Front End

  1. Click on Store Locator Plus® | Settings in the WordPress sidebar menu.
  2. Change the Category Selector setting to “Single Drop Down”.
  3. Click Save
  4. On the front end, go to the page that has the [slplus] shortcode.
Result

The search form for the map should show a category drop down.

The front end page with the [slplus] shortcode, showing the category selection filter.

User Action : Filtering Locations With Category

  1. On the front end, go to the page that has the [slplus] shortcode.
  2. Enter an address, choose a category.
  3. Click “Find Locations”.
Result

Only the locations that match the search criteria, including the category filter, should be shown.