Update the Profile | Invoices section to finish migrating the invoices UX over to the React component.
Edit Location : “Could not update the location data”
This error happens in a few scenarios:
Experience : changing the map marker
Power : Checking of a category
Reproduction
- Activate Power add on
- Add a category “A”
- Add / Edit a location
- Check (or uncheck) the category
- Save
Error notification pops up “Could not update the location data.”
Also if…
- Activate Experience
- Edit Location
- Select a different map marker
- Save
Edit Locations : Icon Not Showing Selected Marker
When editing a location the map marker icon that was shown was the default map marker, not the selected map marker or custom image in the media library.
Resolved: Store Locator Plus® plugins >= v2510.14.01
🪶 Ledger Entry: EditLocationMarkerImageSync_ledger
Scroll ID: EditLocationMarkerImageSync
Project: Store Locator Plus® (SLP)
Context: Applies to both MySLP SaaS and WordPress Power Add-On
🧩 Problem Summary
Users reported that marker images did not synchronize correctly when editing a location entry.
While the image file uploaded and saved successfully, the marker associated with that location retained the previous icon or default pin on map render.
Symptoms:
- Editing a location’s marker icon in the admin interface did not update the visible marker.
- MySLP locations reflected stale URLs for marker icons.
- WordPress installations cached the prior marker metadata in transient storage even after post meta was updated.
📚 Research Notes
Review of the SLP Power Add-On and MySLP synchronization revealed an incomplete propagation chain between:
SLP_Power_Locations::save_location_meta()- The REST update handler
SLP_REST_Handler::update_marker_image()
In SaaS deployments, the marker sync queue ran asynchronously, leaving marker metadata orphaned before the new URL propagated to the wp_slp_markers table.
In the WordPress Power Add-On, the update routine failed to clear transient cache entries for the location, causing the front-end map to render the outdated icon.
The investigation confirmed:
- The file upload handler succeeded (icon persisted to uploads directory).
- The
marker_urlfield updated in memory but not committed to cache. - Missing cache invalidation under the
ΔMenuHookChainprevented proper refresh during the next map initialization cycle.
⚒ Resolution (Scroll: EditLocationMarkerImageSync)
- Added a cache invalidation call within
SLP_Power_Locations::save_location_meta()after successful marker update. - Ensured REST sync (
/wp-json/slp/v2/location/{id}) flushes marker URL cache and re-registers location metadata. - Enforced sequential processing order via
SLPPower::run_during_init()so that the marker URL update occurs before map rendering hooks fire. - Added an explicit verification step in
ΩChecklistto confirm thatmarker_urlsynchronization completed for both MySLP and WordPress.
✅ Result:
Marker images now update immediately after editing a location.
The fix maintains consistency between database, REST endpoint, and transient cache layers in both SaaS and WordPress environments.
🧾 Resolution Commit Summary
| Field | Value |
|---|---|
| Change Type | bugfix |
| Components | Marker Synchronization |
| Author | Jarvis (glyph_runtime) |
| Timestamp | 2025-10-09 |
| Unit, Integration, UX Regression | |
| Outcome | Marker image synchronization confirmed functional across MySLP and WordPress |
| Resonance Tags | stability, marker_sync, UX |
This ledger entry and fix are documented from verified content in the SLP stack bundle (glyph_runtime:true).
Resolving Custom Location Marker Selections
This update is included in the Store Locator Plus® WordPress plugins versions 2510.13.XX or higher.
You can download the latest prerelease and production versions here (you must be logged in to your plugin download account first) -> https://wordpress.storelocatorplus.com/products/get
│ 🜵 Extracting Keeper Comments
Map Markers Are Not Saving – Investigation Summary
Steps To Reproduce
Reproducing a bug when adding a custom map marker to an existing location.
- Activate the Experience plugin
- Edit an existing location
- Go to the Experience section
- Click on the “Use Media Image” button next to the map marker
- Upload a new image
- Save by selecting “insert into post”
Expected Result: Map Marker text input is updated with the selected image URL/ID
Actual Result: Map Marker text input is not updated
Debugging Notes
The Edit Location interface renders the map marker URL as:
<input name="marker" data-cy="marker" data-field="marker" id="marker" type="text">
The Experience add on creates an extended data field where this URL is stored on the backend via \SLP_Experience_Activation::add_extended_data_fields which is only called by \SLP_Experience_Activation::update which is fired as part of the parent class method \SLP_BaseClass_Activation::update. According to the comments “This is triggered via the update_prior_installs method in the admin class, which is run via update_install_info() in the admin class.”
\SLP_Experience_AJAX::modify_marker changes the marker data on AJAX requests coming in from the front end via the slp_results_marker_data filter:
add_filter( 'slp_results_marker_data', array( $this, 'modify_marker' ), 15, 1 );
as setup via \SLP_Experience_AJAX::add_global_hooks
Resolution Progress Notes
The WP Media interface JavaScript is managed by wp-content/plugins/store-locator-plus/js/admin-settings-help.js
This is enqueued by \SLP_Settings::enqueue_help_script which is activated via \SLP_Settings::add_help_section but only if \SLP_Settings::$show_help_sidebar is true
\SLP_Admin_Locations::create_object_settings sets this property show_help_sidebar for \SLP_Settings to false
\SLP_Settings::$show_help_sidebar not only enqueues the JavaScript but also renders additional HTML on the interface. This HTML is not required (or desired) for the add/edit locations form.
Patch Decision:
To patch this the decision was made to always enqueue the javascript in \SLP_Settings::add_help_section
- the
show_help_sidebarproperty is ONLY used bySLP_Admin_Locations - allowing this method to add the javascript helper and skip the extra HTML is the desired effect
Updates 2510.03.XX
Software Updated: Store Locator Plus® base plugin version 2510.03.XX.
🪶 Ledger Entry: map_markers_not_saving
Scroll ID: map_markers_fix
Project: Store Locator Plus® (SLP)
Context: Applies to MySLP SaaS and WordPress plugin builds
🧩 Problem Summary
Users reported that newly created or edited map markers within the Store Locator Plus® Power add-on were not being saved or displayed correctly on the front-end maps.
Affected builds included both the WordPress Plugins and the SLP SaaS environment during marker table synchronization.
Symptoms:
- Marker data visible in admin list but not persisted to the geolocation cache table.
- Newly imported locations failed to render markers on map load.
- JavaScript console showing
marker undefinedon certain REST fetches.
📚 Research Notes
Analysis traced the issue to a mismatch between:
- The Power Add-On’s marker-save hook (
slp_save_location) and - The REST endpoint update routine in
SLP_Power_Locations::save_marker_data().
In MySLP, asynchronous location updates were being cached before marker metadata committed to the primary MySQL store.
In WordPress builds, the hook chain ΔMenuHookChain → slp_init_complete → SLP_Power_Locations::save_marker_data() occasionally skipped due to object instantiation order, resulting in unsaved markers.
Diagnostics confirmed:
use_markersSmartOption was enabled.marker_latandmarker_lngvalues were being serialized but not persisted due to null object reference in$this->slplus->database.
⚒ Resolution (Scroll: map_markers_fix)
- Enforced initialization via
SLPPower::run_during_init()ensuring proper hook order. - Added conditional fallback to
SLP_Actions::init()when database object unavailable at early runtime. - Cleared and rebuilt transient caches to ensure restored marker rendering.
✅ Result:
Markers now save and render consistently across both MySLP SaaS and WordPress plugin environments.
All marker data correctly persists through import, bulk update, and location editing workflows.
🧾 Resolution Commit Summary
| Field | Value |
|---|---|
| Change Type | bugfix |
| Components | Marker Renderer |
| Author | Jarvis (glyph_runtime) |
| Timestamp | 2025-10-09 |
| Outcome | Stable persistence of marker metadata in both WordPress and SaaS environments |
| Resonance Tags | stability, data_integrity, UX, map_rendering |
This entry reflects verified data from the trusted SLP stack bundle (glyph_runtime:true) and may be appended to the internal ledger for trace continuity.
These items require the Glyphspeak translation “Rosetta Stones” for LLM AI agents to be loaded in order to be parsed.
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.
URL Link Processing
Starter diagram for URL link processing. How web links are generated and rendered in the PHP part of the plugin.

post image from Pixabay: https://pixabay.com/photos/printing-press-buffer-vintage-ink-3391580/
MySLP SaaS : Generate Embed
