Skip to content

Rename plugin from pp-glossary to your-glossary#54

Open
ilicfilip wants to merge 6 commits intodevelopfrom
filip/plugin-name-change
Open

Rename plugin from pp-glossary to your-glossary#54
ilicfilip wants to merge 6 commits intodevelopfrom
filip/plugin-name-change

Conversation

@ilicfilip
Copy link
Copy Markdown
Contributor

@ilicfilip ilicfilip commented Apr 9, 2026

Summary

Complete rename of the plugin from "Glossary" / pp-glossary to "Your Glossary" / your-glossary.

Code-level renames

  • Namespace: PP_GlossaryYour_Glossary
  • Constants: PP_GLOSSARY_*YOUR_GLOSSARY_*
  • Functions: pp_glossary_*()your_glossary_*()
  • Text domain: pp-glossaryyour-glossary
  • Filter names: pp_glossary_excluded_tagsyour_glossary_excluded_tags, pp_glossary_disabled_post_typesyour_glossary_disabled_post_types
  • Asset handles, CSS classes, HTML IDs, nonces, form fields, settings sections
  • Config files: phpcs.xml, phpstan.neon.dist, composer.json, block.json, blueprint files

Deprecated filter hooks

Old filter names still work but trigger _doing_it_wrong notices:

  • pp_glossary_excluded_tags → use your_glossary_excluded_tags
  • pp_glossary_disabled_post_types → use your_glossary_disabled_post_types

Database migration (1.4.0)

An automatic migration renames all stored data on upgrade:

  • Post type: pp_glossaryyour_glossary
  • Meta key: _pp_glossary_data_your_glossary_data
  • Option name: pp_glossary_settingsyour_glossary_settings
  • Block name in post content: wp:pp-glossary/glossary-listwp:your-glossary/glossary-list

File/directory rename

  • Main plugin file: pp-glossary.phpyour-glossary.php
  • Directory rename (pp-glossary/your-glossary/) to be done at repo rename time

⚠️ Breaking change: plugin reactivation required

WordPress stores the active plugin path as pp-glossary/pp-glossary.php. After the directory and file rename, WordPress will no longer find the plugin at that path and will silently deactivate it. Users must reactivate the plugin after updating. No data is lost — the migration handles all database changes automatically.

CI note

The WordPress.org Plugin Check workflow fails because it derives the expected text domain from the plugin directory name (pp-glossary), which no longer matches the new text domain (your-glossary). This will resolve once the repository is renamed to your-glossary.

Test plan

  • Verify glossary page renders entries after migration
  • Verify popover term linking works in post content
  • Verify admin: settings page, meta boxes, add/edit glossary entries
  • Verify migration runs correctly on a site with existing pp_glossary data
  • Verify fresh install skips migration and works with new identifiers
  • Verify composer check-cs, composer lint, composer phpstan all pass
  • Verify uninstall cleans up both old and new identifiers

🤖 Generated with Claude Code

Signed-off-by: Filip Ilic <ilic.filip@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

Test on Playground
Test this pull request on the Playground
or download the zip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

🔍 WordPress Plugin Check Report

❌ Status: Failed

📊 Report

🎯 Total Issues ❌ Errors ⚠️ Warnings
67 65 2

❌ Errors (65)

📁 includes/class-meta-boxes.php (16 errors)
📍 Line 🔖 Check 💬 Message
35 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
87 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
92 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
106 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
110 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
132 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
136 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
148 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
151 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
162 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
163 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
165 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
177 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
181 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
192 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
196 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
📁 includes/class-settings.php (15 errors)
📍 Line 🔖 Check 💬 Message
45 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
46 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
67 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
74 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
82 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
90 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
110 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
123 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
134 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
148 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
154 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
173 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
177 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
202 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
220 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
📁 includes/class-content-filter.php (5 errors)
📍 Line 🔖 Check 💬 Message
81 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
233 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
235 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
259 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
260 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
📁 includes/class-post-type.php (24 errors)
📍 Line 🔖 Check 💬 Message
63 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
64 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
65 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
66 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
67 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
68 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
69 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
70 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
71 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
72 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
73 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
74 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
75 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
76 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
77 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
78 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
79 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
80 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
81 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
82 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
83 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
84 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
88 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
89 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
📁 includes/class-blocks.php (4 errors)
📍 Line 🔖 Check 💬 Message
76 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
108 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
115 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
145 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.
📁 includes/functions.php (1 error)
📍 Line 🔖 Check 💬 Message
77 WordPress.WP.I18n.TextDomainMismatch Mismatched text domain. Expected 'pp-glossary' but got 'your-glossary'.

⚠️ Warnings (2)

📁 your-glossary.php (1 warning)
📍 Line 🔖 Check 💬 Message
0 textdomain_mismatch The "Text Domain" header in the plugin file does not match the slug. Found "your-glossary", expected "pp-glossary".
📁 readme.txt (1 warning)
📍 Line 🔖 Check 💬 Message
0 mismatched_plugin_name Plugin name "Glossary" is different from the name declared in plugin header "Your Glossary".

🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

Renames namespace (Your_Glossary), constants (YOUR_GLOSSARY_*),
function prefixes (your_glossary_*), text domain (your-glossary),
CSS classes, asset handles, filter names, and config files.

Database identifiers kept unchanged for backwards compatibility:
post type slug (pp_glossary), meta key (_pp_glossary_data),
option name (pp_glossary_settings), block name (pp-glossary/glossary-list).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Signed-off-by: Filip Ilic <ilic.filip@gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Signed-off-by: Filip Ilic <ilic.filip@gmail.com>
Add migration to rename all database identifiers:
- Post type: pp_glossary -> your_glossary
- Meta key: _pp_glossary_data -> _your_glossary_data
- Option: pp_glossary_settings -> your_glossary_settings
- Block name in content: wp:pp-glossary/glossary-list -> wp:your-glossary/glossary-list

Update all code references to use new DB identifiers.
Bump version from 1.3.2 to 1.4.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Signed-off-by: Filip Ilic <ilic.filip@gmail.com>
@ilicfilip ilicfilip changed the title Plugin name change Rename plugin from pp-glossary to your-glossary Apr 9, 2026
Old filter names (pp_glossary_excluded_tags, pp_glossary_disabled_post_types)
still work but trigger _doing_it_wrong notices pointing to the new names.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Signed-off-by: Filip Ilic <ilic.filip@gmail.com>
- Update composer.lock content-hash to match renamed package in composer.json
- Fix playground workflow to find main plugin file dynamically instead of
  hardcoding the repo name as the filename

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Signed-off-by: Filip Ilic <ilic.filip@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant