Skip to content

Releases: gioxx/wp-smart-tags

v0.23.3

Choose a tag to compare

@github-actions github-actions released this 22 Aug 14:49
50924aa
  • Fixed the "All tags" table staying empty after an Ajax action (bulk delete, or lock/hide with "Hide locked tags" on) removed every row on the current page: pagination and item counts went stale until a manual refresh or page change. Added reloadIfTableEmpty() in assets/admin.js, which auto-reloads the page once no wpto-tag-row-* row is left after a delete or lock-triggered hide.
  • WordPress.org Plugin Check cleanup ahead of the directory submission: bumped readme.txt's "Tested up to" to 7.1, dropped the Domain Path header (no /languages folder ships, and translations load automatically for WP.org-hosted plugins), tightened the nonce-verification phpcs:disable in class-wpto-admin-page.php's bulk-action dispatch to also cover the .Recommended sniff, fixed a mismatched phpcs:ignore sniff code in uninstall.php, and added a phpcs:disable/enable around the intentional meta_query usage in class-wpto-tag-stats-table.php::prepare_items().
  • Added the WordPress.org-required third-party-service disclosure ahead of directory submission: a "Third-party service" paragraph in readme.txt's Description explaining what's sent to the Anthropic Claude API, when, and linking to Anthropic's Privacy Policy and Terms of Service, plus a matching <p class="description"> note next to the Anthropic API Key field in class-wpto-settings.php's Settings page.
  • Corrected stale "included Italian translation" claims in readme.txt (feature list), README.md, and README.it.md — no .mo/.po files ship with the plugin anymore since 0.22.0; WordPress.org requires directory-submitted plugins to be translated via translate.wordpress.org instead of bundling translation files.

For the full version history, see CHANGELOG.md.

v0.23.2

Choose a tag to compare

@github-actions github-actions released this 31 Jul 19:59
1b40397
  • Fixed locked tags being unable to enter the merge selection at all, even as the merge target (which always survives a merge — only source tags get deleted). Removed the lock filtering from add_to_merge_basket() and get_merge_basket_terms() in includes/class-wpto-admin-page.php, from process_add_tags_by_name() (dropping its "Skipped locked tag(s)" notice), and removed WPTO_Merge_Handler::apply()'s rejection of a locked target. Locked tags remain fully protected as a merge source: apply() still skips them there instead of deleting them.

For the full version history, see CHANGELOG.md.

v0.23.1

Choose a tag to compare

@github-actions github-actions released this 31 Jul 19:49
bfc4ac0
  • Fixed the "All tags" bulk actions (Lock/Unlock/Delete) showing WordPress core's "Please select a bulk action to perform." alert even though the action had actually run. The Ajax submit handler in assets/admin.js was resetting the action <select>s back to -1 synchronously, before WP core's own submit-time bulk-action validation (bound to the same form) had a chance to read the selected value; deferred the reset via setTimeout so it happens after the current submit event has fully finished.

For the full version history, see CHANGELOG.md.

v0.23.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 19:24
a0f4ba5
  • Added a "Hide locked tags" checkbox to the "All tags" table (below the Quick sort links), checked by default, so locked tags stay out of the way while working the list. Persisted per-user like the usage-bucket filter (WPTO_Admin_Page::get_hide_locked_tags()); filters via a meta_query on wpto_locked in both wp_count_terms() and get_terms() in WPTO_Tag_Stats_Table::prepare_items().
  • Fixed the "All tags" table losing an active search (and sort/bucket filter) when paging past page 1. The #wpto-tags-filter form posted via method="post", so s/orderby/etc. never made it into the URL that WP_List_Table's pagination links are built from; switched the form to method="get" and updated the bulk-action handlers (maybe_process_stats_tab_actions(), process_bulk_delete(), process_bulk_toggle_lock(), the add_to_merge branch in render_stats_tab()) to read tag_id[]/action/action2 from $_REQUEST instead of $_POST to match.
  • Converted single-row lock toggle, single-row delete, and the "Lock"/"Unlock"/"Delete" bulk actions on the "All tags" table to Ajax (new wp_ajax_wpto_toggle_lock, wp_ajax_wpto_bulk_lock, wp_ajax_wpto_delete_tags handlers), so those no longer reload the page and drop the current search/sort/pagination state. Rows update or fade out in place; the "Hide locked tags" checkbox is respected when a row gets locked via Ajax. The full-page-reload routes (process_toggle_lock(), process_bulk_delete(), process_bulk_toggle_lock()) are kept as a no-JS fallback. The "Add to merge selection" bulk action is intentionally left as a normal (non-Ajax) submit, since it needs to redraw the merge basket section below the table anyway.

For the full version history, see CHANGELOG.md.

v0.22.2

Choose a tag to compare

@github-actions github-actions released this 31 Jul 19:07
cc647d7
  • Removed the duplicate lock dashicon rendered under the checkbox on locked rows (column_cb() in includes/class-wpto-tag-stats-table.php); the checkbox alone is enough since the "Lock" column already shows state. The "Lock" column icon now also colors itself (red closed lock when locked, gray open lock when unlocked via new .wpto-toggle-lock--locked/--unlocked CSS classes) instead of relying solely on icon shape.

For the full version history, see CHANGELOG.md.

v0.22.1

Choose a tag to compare

@github-actions github-actions released this 31 Jul 19:02
d55ef10
  • Added "Lock"/"Unlock" bulk actions to the "All tags" table's Bulk actions dropdown. Locked tags are checkbox-selectable again (previously hidden entirely) so they can be picked for a bulk unlock; destructive bulk actions (delete, add to merge) still drop locked ids server-side via WPTO_Tag_Lock::filter_unlocked().
  • Fixed process_add_tags_by_name() and the bulk "add to merge selection" action counting locked tags as added to the merge basket, when add_to_merge_basket() was actually silently filtering them out. Locked tags are now excluded from the "added" count up front and surfaced in a separate "Skipped locked tag(s)" notice.

For the full version history, see CHANGELOG.md.

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 20:24
2d8912a
  • Added a lock toggle to the "All tags" table (new "Lock" column): a locked tag can't be selected via checkbox, can't be added to the merge basket (manually or by an approved AI suggestion), and can't be deleted, until unlocked again. Backed by term meta (wpto_locked), cleaned up on uninstall when "Remove all plugin settings and export data" is enabled.
  • Labeled the "AI Analysis" tab and its headings as "(experimental)" to set expectations that AI-suggested merges are a newer, less battle-tested feature than the manual tools.
  • Dropped the bundled languages/*.po/.mo/.pot files from the repository (regenerate locally as needed) and excluded them via .gitignore, matching the WordPress.org review guidance to rely on translate.wordpress.org for hosted translations instead of bundling them.

For the full version history, see CHANGELOG.md.

v0.21.2

Choose a tag to compare

@github-actions github-actions released this 19 Jul 07:41
6a031ff
  • Added the Release Asset: true plugin header so Git Updater installs the zip attached to the GitHub Release instead of the raw main branch zip.

For the full version history, see CHANGELOG.md.

v0.21.1

Choose a tag to compare

@github-actions github-actions released this 18 Jul 20:03
95c1577
  • Silenced the remaining WordPress Plugin Check warnings on $wpdb->insert()/update()/delete() calls in includes/class-wpto-suggestions-repo.php (create_batch, mark_batch_done, mark_batch_failed, retry_batch, cancel_pending_batches, clear_for_new_analysis, insert_suggestions, set_suggestion_status, mark_applied): they write to the plugin's own custom tables through the safe wpdb API, with no core alternative for non-WP tables.

For the full version history, see CHANGELOG.md.

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 20:00
466d243
  • Fixed WordPress Plugin Check findings on includes/class-wpto-suggestions-repo.php, includes/class-wpto-unused-tags.php, and uninstall.php: the existing phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedTableName comments referenced a sniff code that doesn't exist, so none of them were actually suppressing anything. Replaced with the correct codes (DirectQuery, NoCaching, InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter, etc.) and a justification, since every affected query targets the plugin's own custom tables via a static, non-user-controlled name.
  • Added missing translators: comments for the two merge-count _n() strings in includes/class-wpto-admin-page.php, and explicitly cast their count argument before output.
  • Silenced nonce-verification warnings on read-only admin dispatch/listing code paths (maybe_process_stats_tab_actions(), the tag stats table's search/sort) that already verify the nonce inside the handler they call, or don't mutate state.
  • Shortened the readme short description to fit WordPress.org's 150-character limit.

For the full version history, see CHANGELOG.md.