Skip to content

Releases: MaxG-WebProjects/wp-sniphub

v1.3.0 - Changes and fixes

Choose a tag to compare

@MaxG-WebProjects MaxG-WebProjects released this 23 Aug 18:40

Added

  • Full internationalization: plugin strings are now in English with a bundled French translation, so the Dashboard displays in French on French-locale sites and in English everywhere else.
  • New settings backup feature: export your configuration to a JSON file and re-import it later, from a dedicated section on the WPSnipHub screen.
  • uninstall.php: deleting the plugin now cleans up everything it created in the database, including content added through its custom post types and taxonomies.
  • CONTRIBUTING.md: guidelines and a compliant template for anyone writing a new module.
  • Dev-only tooling (PHPCS/WPCS, Stylelint) to keep future contributions compliant with WordPress coding standards.

Changed

  • Every module is now disabled by default on a fresh install — you choose what to turn on.
  • The settings screen was rebuilt on WordPress's native Settings API and now groups modules into 5 categories for easier browsing.
  • Deleting WPSnipHub now also removes all portfolio/testimonial/event content and their taxonomy terms, not just the plugin's own settings — since that content can't be managed anywhere once the plugin is gone.
  • All 20 modules' comments and documentation blocks were rewritten to a single, consistent format.
  • Bumped "Tested up to" to WordPress 7.1.
  • Widened the module-title column on the settings screen for better readability.

Fixed

  • Critical: enabling the WooCommerce module without WooCommerce installed crashed every page on the site.
  • Saving the module list silently failed due to an invalid nested HTML form.
  • The Scripts and Styles modules did nothing at all, due to a documentation-comment bug that had disabled their code since they were introduced.
  • Inconsistent spacing between labels and fields on the custom image-size settings.
  • A WordPress debug notice caused by loading translations too early.
  • Several stray files and a minor security-hardening tweak flagged by the official Plugin Check tool.

Technical details

  • wpsh_load_modules() no longer calls wpsh_get_modules() (which now contains translation-function calls) from the plugins_loaded hook, since that fires before load_plugin_textdomain() runs on init — it reads the already-sanitized wpsh_enabled_modules option directly instead, avoiding a _load_textdomain_just_in_time notice on every request.
  • uninstall.php temporarily re-registers the plugin's custom post types/taxonomies (reusing the existing config functions, nothing duplicated) purely so wp_delete_post()/wp_delete_term() can be used safely; post IDs are queried directly via $wpdb rather than get_posts(), since WordPress's 'any' status filter silently excludes drafts and auto-drafts.
  • The wider module-title column (.form-table th) is scoped inside @media screen and (min-width: 783px), matching WordPress core's own breakpoint for the settings screen's mobile stacked layout, so the two never conflict.
  • wpsh_wc_remove_shop_breadcrumbs() now guards its call to is_shop() with function_exists(), since it runs on the core template_redirect hook regardless of whether WooCommerce is active.
  • _docs.php had its duplicated (and outdated) plugin-structure comment removed; the authoritative version now lives in CONTRIBUTING.md.

Full Changelog: v1.2.5...v1.3.0

v1.2.5 – Changes and fixes

Choose a tag to compare

@MaxG-WebProjects MaxG-WebProjects released this 25 Jan 17:41

Added

  • Styles module to manage CSS independently of the scripts.
  • Dashicon for each module title.
  • Instructions for external HTTP requests hardening - See it in security module (thanks to @ozgursar for his related LinkedIn's post).

Changed

  • Split the scripts module to begin the CSS styles.
  • wp-sniphub.php and wpsh-admin.css to include and display Dashicons for each module title.
  • All favicons files with WPSnipHub logo instead of my own site logo.

Fixed

  • Fixed an issue where the browser tab notification emoji was displayed incorrectly or as plain text in some environments (thanks to @valentin-grenier).
    • Improved reliability of the browser tab title animation when the page loses focus.

Technical details

  • Replaced a raw UTF-8 emoji in inline JavaScript with explicit Unicode escape sequences.
    • This prevents character encoding issues caused by PHP → JavaScript injection and ensures consistent rendering across browsers, servers, and build environments.

v1.2.0 – Improvements, Enhancement, Module creation guidelines & WordPress.org compliance

Choose a tag to compare

@MaxG-WebProjects MaxG-WebProjects released this 14 Jan 16:37
ca8717e

This release focuses on standardizing module development, improving WordPress.org compliance, and providing clear contributor guidelines.

Added

  • Official module creation guidelines (README.md):
    • Clear philosophy: clean, isolated, maintainable modules
    • Mandatory wpsh_ prefix rules for all global symbols
    • WordPress.org–compliant escaping, i18n, and security practices
  • Guidelines for WPSnipHub module creation:
    • Plugin Check compliance checklist
    • Naming conventions and common pitfalls
    • Validation steps before submitting a module
  • Standardized official module template for WPSnipHub
  • Plugin Check checklist added for contributors and maintainers

Changed

  • Global refactor of all modules to comply with Plugin Check and WordPress.org rules:
    • All global functions are now consistently prefixed with wpsh_
    • Removed third-party or generic prefixes (theme_, my_, wpds_, woo_, etc.)
  • Improved code readability and maintainability across all modules:
    • Clear function naming aligned with module responsibilities
    • Consistent hook registration patterns
  • Improved internationalization (i18n):
    • All user-facing strings now use the wp-sniphub text domain
  • Improved date and time handling:
    • Replaced deprecated or discouraged PHP functions with wp_date()

Fixed

  • Plugin Check errors across all modules, including:
    • WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
    • WordPress.Security.EscapeOutput.OutputNotEscaped
  • Output escaping issues:
    • All URLs now escaped with esc_url()
    • All HTML attributes escaped with esc_attr()
    • All visible text escaped with esc_html() / esc_html__()
  • Admin notices and frontend outputs now fully WordPress.org compliant
  • Shortcodes, helpers, WooCommerce, Gravity Forms, media, login, cleanup, and publication modules now pass Plugin Check without critical errors

Security

  • Hardened all modules against unsafe output:
    • No raw echo of dynamic data without proper escaping
  • Restricted sensitive features (uploads, SVG, JSON, etc.) to administrator capabilities
  • Ensured safe admin-only execution where required

Developer Experience

  • Modules are now:
    • Fully isolated and independently disable-able
    • Easier to audit, extend, and maintain
  • Clear separation between:
    • Initialization logic
    • Business logic
    • Hooks and filters
  • Reduced risk of conflicts with themes, plugins, or WordPress core

Compatibility

  • Fully compatible with:
    • WordPress.org Plugin Review guidelines
    • Plugin Check (no blocking issues)
    • Modern WordPress versions (including block editor environments)
  • Safe integration with third-party plugins (WooCommerce, Gravity Forms, Greenshift, etc.)

Notes

This release is primarily a quality, compliance, and maintainability milestone.
No breaking changes for end users, but significant internal improvements to ensure long-term stability and WordPress.org compatibility. Even though WPSnipHub is not intended to be published on the official plugin repository

[1.1.0] – 2026-01-04

Added

  • Added Changelog file
  • Added indicator for module activation or deactivation

Changed

  • Toggle buttons replace checkboxes

Fixed

  • Fixed an issue where the switch button label always displayed "Inactive" regardless of its actual state.

[1.0.0] – 2025-12-28

  • Initial release