Summer 2025 Updates

Related to Store Pages Menu Scrolls: Invocation, UX, and Core Chain

Starting 2508.29

Changelog entries beginning on 2025-08-29 for the Store Locator Plus® application.

UI Text Update — Locations Interface

2025-08-29

Changed the “Expand Location” button on the Location Card listing to “Edit Location” to more accurately describe what the button does.

Files referenced/updated in task “Rename “Expand Location” to “Edit Location” on Locations Interface”:

  • /wp-content/plugins/myslp-dashboard/assets/scripts/src/locations/components/LocationCardRow.js — updated button label text.
  • /wp-content/plugins/myslp-dashboard/panels/myslp-locations.php — ensured server-rendered labels and help text align with new wording.
  • /wp-content/plugins/myslp-dashboard/assets/scripts/locations.js — compiled bundle reflecting the label change.
  • /wp-content/plugins/myslp-dashboard/assets/scripts/locations.min.js.map — updated source map for debugging.

File: Starting 2508.29.html

Store Pages Update — Menu Attach + UX

2025-09-16 → 2025-10-01

This block consolidates the Store Pages work from the 2509.16 Pages Update and the subsequent 2510.01 Pages Menu UX Update.

2509.16 — Findings and Activation Path

  • Verified the Enable Pages toggle (SmartOptions::is_true('use_pages')) drives SLPPower->using_pages.
  • Confirmed submenu injection via slp_menu_items filter when Pages are active; callable render_pages_tab provides UI.
  • Documented the hook chain ensuring the tab appears after SLP init and under the correct parent.

2510.01 — MySLP Sidebar UX

  • In SaaS only, “Pages” now renders between Categories and Options (position 1.17).
  • Icon set to dashicons-admin-page for consistency with WordPress Pages.
  • Behavior for the WordPress plugin remains unchanged.

Files: session changes scoped to SaaS menu rendering via the slp_menu_items pipeline; placement/icon respected by the admin menu builder.

Summary

This document begins tracking all updates and discussions initiated under the marker “2509.16 Pages Update.” It includes recorded details about the WordPress environment, plugins in use, and other relevant information for debugging, code improvements, and other development tasks related to Store Locator Plus®.

Issue context: In the Power add-on, the “Enable Pages” option (Options → HTML panel → App) has field ID options_nojs[use_pages]. This value is stored in the WordPress wp_options table under option name csl-slplus-options_nojs as a serialized key/value pair, using the key use_pages. When use_pages is true (stored value 1), the system should render a Store Pages submenu under the main Store Locator Plus menu. This is currently not happening and is the focus of this update.

Findings: use_pages and Pages submenu attachment

Where use_pages is referenced

  • Smart option definition: store-locator-plus/include/module/smartoptions/SLP_SmartOptions.php (property $use_pages).
  • Power bootstrap: slp-power/include/SLPPower.php
    • init_using_pages() sets $this->using_pages from SmartOptions->is_true('use_pages') (lines ~642, 650–651).
  • AJAX module conditional behavior: slp-power/include/module/ajax/SLP_Power_AJAX.php checks SmartOptions->is_false('use_pages') (around line ~711).
  • Admin info and options: slp-power/include/module/admin/* and slp-power/include/module/options/SLP_Power_Options.php define/use defaults for use_pages.
  • MySLP dashboard references: myspl-dashboard assets read/write a checkbox with id #use_pages.

Where the Pages submenu is added

  • slp-power/include/module/pages/SLP_Power_Pages_Global.php
    • Hooks add_filter('slp_menu_items', ...) in add_hooks_and_filters().
    • add_pages_tab() appends a menu item only when $power->using_pages is true.
    • The menu entry is defined as: label Pages, slug slp-pages, class $power->admin->pages, function render_pages_tab.
  • slp-power/include/module/pages/SLP_Power_Pages_Admin.php
    • Provides render_pages_tab() which renders the Pages admin UI.
  • Core menu attachment: store-locator-plus/include/module/admin/SLP_Admin_UI.php
    • create_admin_menu() collects menu entries via the slp_menu_items filter and, on classic WP installs, calls add_submenu_page() with the parent slug SLPLUS_PREFIX.
  • Parent menu slug definition: store-locator-plus/include/base/loader.php defines SLPLUS_PREFIX as csl-slplus.

Potential reasons the Pages submenu may not render

  • use_pages evaluates false: $power->using_pages is false, so add_pages_tab() returns without appending the menu item.
  • Filter not initialized: The SLP_Power_Pages_Global class may not be instantiated when using pages; ensure its initialize() runs after slp_init.
  • Parent menu slug mismatch: If the main menu parent slug changed from csl-slplus, items added via slp_menu_items would attempt to attach to the wrong parent. Current core uses SLPLUS_PREFIX which equals csl-slplus.
  • Admin pages controller not present: If $power->admin->pages is not constructed, the callable may be invalid and WordPress could skip the submenu.

Conclusion: The Pages submenu is added by the Power add-on via the slp_menu_items filter (in SLP_Power_Pages_Global::add_pages_tab) and attached by core SLP in SLP_Admin_UI::create_admin_menu under the parent slug csl-slplus. Verify use_pages is true and that the parent slug has not changed.

Environment

  • Site URL: http://localhost
  • Store Locator Plus®: 2508.20.01
  • Power: 2506.30.01
  • SLP Network Active: No
  • WordPress Version: 6.8.2
  • WordPress Memory Limit: 40M
  • WordPress Max Memory Limit: 256M
  • PHP Version: 8.3.1
  • PHP Memory Limit: 128M
  • PHP Post Max Size: 64M
  • PHP Peak RAM: 6 MB
  • MySQL Version: 8.3.0

Installed Plugins

  • Primary Plugin: Store Locator Plus® (store-locator-plus)
  • Power Add-on: SLP Power (slp-power)
  • Experience Add-on: SLP Experience (slp-experience)
  • Premier Add-on: SLP Premier (slp-premier)

UX — Pages Menu placement and icon (MySLP)

2025-10-01

Adjusted the “Pages” menu item injected via slp_menu_items so that, in the SaaS environment only, it:

  • Appears between Categories and Options in the sidebar (position 1.17).
  • Uses the standard WordPress Pages icon dashicons-admin-page.

Change is gated by the SaaS constant check to avoid altering WordPress plugin behavior.

Refs: filter pipeline slp_menu_items → admin menu builder honors icon and position for SaaS top-level entries.

SLP Updates 2503.06 Release

Versions 2502.26 – 2503.06

Updates

Show Map For Logged In Users (Main Page)

Once logged in a preview of the map without generate embed is available by going to the main dashboard page (https://dashboard.storelocatorplus.com) to view the embed on a basic page template.

This page outputs a direct embed script include in the HTML with minimal page processing from within the SaaS platform. This should be very close to the display on a generic website with minimal styling.

You can also find the URL for this preview in the My Profile section under “MySLP Site”.

Resolved: Theme 2503.05.01, Signup 2503.05.01

Could Not Load User 310

In the debug logs , any time super admin would list customers it would throw an error from

\MySLP_User::load() saying could not load blog for user #310.

Turns out this was caused by user 310 (cici) not having an associated site ID as it is a super admin account. Set the fallback to point to the main site (Site #1) when super admin does not have a site id.

Fixed in MySLP Dashboard 2503.04.01 and MySLP Architect 2503.04.01.

Premier Not Activating

The problem here was that some users, older users, were not loading the Premier plugin when switching to the user. This problem ONLY manifests on staging and development servers.

Turns out the wp_blogs domain column MUST match the primary site domain or the user elements that are loaded very early by WordPress will not load properly. That means things that load early like mu_plugins or plugins themselves may not load because they are being only loaded for the primary site for the entire blog. Honestly not a great design from WordPress core to use a PATH from user meta versus looking at the actual user info and pulling related sites that way. Very fragile.

Reworked the MySLP dashboard to detect and reset the domain value in wp_blogs when not on production and the site url is a mismatch. Worked well on dev test. Needs staging test.

The wp_blogs table needs the domains the be changed to match the main URL or get_sites() and get_site_by_path() will not work.