Icons: Add APIs for collection and icon registration#11559
Conversation
Test using WordPress PlaygroundThe changes in this pull request can previewed and tested using a WordPress Playground instance. WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser. Some things to be aware of
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation. |
|
I am encountering the following error. This issue will likely be resolved once the Gutenberg ref is updated in wordpress-develop.
|
Align the icon registry's internal property with WordPress core's snake_case array-key convention by renaming the registered icon property from filePath to file_path. The conversion now happens only at the registration/mapping boundary in the constructor: the generated manifest keeps the upstream camelCase `filePath` key (as produced by Gutenberg), which is read and mapped to the internal `file_path` property when each icon is registered. This updates the registry validation, allowed property keys, `get_content()` lookup, and the related docblocks and error messages, while leaving the manifest and the copy:icon-library-manifest Grunt task untouched. Co-Authored-By: Claude <noreply@anthropic.com>
Add the public icon collection and icon registration APIs on top of the snake_case icon registry. Introduces WP_Icon_Collections_Registry, icons.php (wp_register_icon/wp_unregister_icon/wp_register_icon_collection and the default registration callbacks), the collection-scoped REST routes, and the related tests. Icon properties use the internal snake_case `file_path` key established in the icon registry; the Gutenberg manifest's upstream camelCase `filePath` key is read and mapped to `file_path` at the registration boundary. Co-Authored-By: Claude <noreply@anthropic.com>
de545bf to
d08cbfa
Compare
The icon registries warn via _doing_it_wrong() when a collection or icon is already registered. Because tests such as the Customize widgets suite fire `do_action( 'init' )` again after bootstrap, the default icon registration runs twice and triggers those notices, failing unrelated tests. Match the existing pattern used for font and connector registration by unhooking `_wp_register_default_icon_collections` and `_wp_register_default_icons` from `init` after the first run. Co-Authored-By: Claude <noreply@anthropic.com>
The REST icons controller now registers a per-collection route, `/wp/v2/icons/(?P<namespace>[a-z][a-z-]*)`. Add it to the expected routes list so test_expected_routes_in_schema reflects the registered routes. Co-Authored-By: Claude <noreply@anthropic.com>
The icons controller now exposes a `namespace` argument on the collection endpoint and a new per-collection route. Regenerate the QUnit fixtures so `git diff --exit-code` passes in CI. Co-Authored-By: Claude <noreply@anthropic.com>
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
Custom icons can be registered with a `file_path`, but the path was never checked before `file_get_contents()`, so a missing, unreadable, non-SVG, or non-string path emitted a raw PHP warning and a misleading "invalid SVG markup" error. Guard `get_content()` by resolving the path via `realpath()`, then requiring an `.svg` extension, a regular file, and readability, returning null with a clear message otherwise. Add tests covering valid and invalid file paths. Co-Authored-By: Claude <noreply@anthropic.com>
The collection slug pattern required a leading lowercase letter and rejected digits, which excluded legitimate plugin slugs such as `a8c` or vendor names containing numbers. Relax the validation to accept any combination of lowercase alphanumeric characters and hyphens, and update the error message and tests to match. Co-Authored-By: Claude <noreply@anthropic.com>
…tag. Several @SInCE 7.0.0 tags were accidentally dropped from properties and internal methods while reworking the Icons API, leaving docblocks without a version per the inline documentation standards. Restore them. Also remove the stray blank line after the opening PHP tag to match the rest of the core class files. Co-Authored-By: Claude <noreply@anthropic.com>
file_pathkey in icon registry #12149Use of AI Tools
Claude Opus 4.6 (1M context)