Commit Graph

140 Commits

Author SHA1 Message Date
Sergey Biryukov 1ce5dc7444 Code Modernization: Replace usage of `strpos()` with `str_contains()`.
`str_contains()` was introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) contains the given substring (needle).

WordPress core includes a polyfill for `str_contains()` on PHP < 8.0 as of WordPress 5.9.

This commit replaces `false !== strpos( ... )` with `str_contains()` in core files, making the code more readable and consistent, as well as better aligned with modern development practices.

Follow-up to [52039], [52040], [52326], [55703], [55710], [55987].

Props Soean, spacedmonkey, costdev, dingo_d, azaozz, mikeschroder, flixos90, peterwilsoncc, SergeyBiryukov.
Fixes #58206.
Built from https://develop.svn.wordpress.org/trunk@55988


git-svn-id: http://core.svn.wordpress.org/trunk@55500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-22 14:36:26 +00:00
Sergey Biryukov 2ec23a82ed Code Modernization: Replace usage of `strpos()` with `str_starts_with()`.
`str_starts_with()` was introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) begins with the given substring (needle).

WordPress core includes a polyfill for `str_starts_with()` on PHP < 8.0 as of WordPress 5.9.

This commit replaces `0 === strpos( ... )` with `str_starts_with()` in core files, making the code more readable and consistent, as well as improving performance.

While `strpos()` is slightly faster than the polyfill on PHP < 8.0, `str_starts_with()` is noticeably faster on PHP 8.0+, as it is optimized to avoid unnecessarily searching along the whole haystack if it does not find the needle.

Follow-up to [52039], [52040], [52326].

Props spacedmonkey, costdev, sabernhardt, mukesh27, desrosj, jorbin, TobiasBg, ayeshrajans, lgadzhev, SergeyBiryukov.
Fixes #58012.
Built from https://develop.svn.wordpress.org/trunk@55703


git-svn-id: http://core.svn.wordpress.org/trunk@55215 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-05-02 15:45:22 +00:00
Sergey Biryukov ba864b2792 Administration: Restore the correct escaping function for base64-encoded SVG icons in the admin menu.
Add a comment to clarify the `esc_attr()` usage instead of `esc_url()`.

Follow-up to [53050].

Props KProvance, kebbet, w33zy, ocean90, mukesh27.
Fixes #55539.
Built from https://develop.svn.wordpress.org/trunk@53092


git-svn-id: http://core.svn.wordpress.org/trunk@52681 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-07 12:54:03 +00:00
Sergey Biryukov f2e14d4e5f Docs: Add missing description for `$typenow` global in various functions.
Follow-up to [53060].

See #54729.
Built from https://develop.svn.wordpress.org/trunk@53061


git-svn-id: http://core.svn.wordpress.org/trunk@52650 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-04 18:39:01 +00:00
Sergey Biryukov 35ce94f930 Administration: Consistently escape icon URLs in the admin menu.
Follow-up to [9154], [26664].

Props chintan1896, jigar-bhanushali, mukesh27.
Fixes #55496.
Built from https://develop.svn.wordpress.org/trunk@53050


git-svn-id: http://core.svn.wordpress.org/trunk@52639 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-01 11:46:04 +00:00
Sergey Biryukov 0e3147c40e Coding Standards: Replace alias PHP functions with the canonical names.
Using the canonical function name for PHP functions is strongly recommended, as aliases may be deprecated or removed without (much) warning.

This replaces all uses of the following:
* `join()` with `implode()`
* `sizeof()` with `count()`
* `is_writeable()` with `is_writable()`
* `doubleval()` with a `(float)` cast

In part, this is a follow-up to #47746.

Props jrf.
See #50767.
Built from https://develop.svn.wordpress.org/trunk@49193


git-svn-id: http://core.svn.wordpress.org/trunk@48955 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-10-18 17:27:06 +00:00
desrosj 04c8217724 Administration: Add the `aria-hidden` attribute to admin menu icons.
The admin menu icons are included as a visual element to support the text links. Without the `aria-hidden=“true”` attribute, they are also exposed to assistive technologies (which can process icon fonts in unpredictable ways).

This change improves the experience for multiple types of assistive technologies, including screen reading and voice control software. With `aria-hidden=“true”` added, the icons will not be read, and a user can now trigger a click of a top level admin menu item with commands such as “click posts”, or “click plugins”.

Props joedolson, afercia, audrasjb, adriantirusli.
Fixes #51012.
Built from https://develop.svn.wordpress.org/trunk@48963


git-svn-id: http://core.svn.wordpress.org/trunk@48725 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-09-09 16:15:06 +00:00
Sergey Biryukov aa69c25d5f Coding Standards: Use strict comparison in some `wp-admin` files.
Props pikamander2, mukesh27, SergeyBiryukov.
Fixes #49239.
Built from https://develop.svn.wordpress.org/trunk@47785


git-svn-id: http://core.svn.wordpress.org/trunk@47561 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-05-12 18:32:08 +00:00
Sergey Biryukov 001ffe81fb Docs: Improve inline comments per the documentation standards.
Includes minor code layout fixes for better readability.

See #48303.
Built from https://develop.svn.wordpress.org/trunk@47122


git-svn-id: http://core.svn.wordpress.org/trunk@46922 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-01-29 00:45:18 +00:00
Gary Pendergast cf3fa9f7c8 Coding Standards: Fix the `Squiz.PHP.DisallowMultipleAssignments` violations in `wp-admin`.
See #47632.


Built from https://develop.svn.wordpress.org/trunk@45583


git-svn-id: http://core.svn.wordpress.org/trunk@45394 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-07-01 12:52:01 +00:00
Drew Jaynes 92aa2f9e92 Docs: Fix a few minor inline documentation typos in a variety of files and contexts.
Props ramizmanked.
Fixes #45463.

Built from https://develop.svn.wordpress.org/trunk@44331


git-svn-id: http://core.svn.wordpress.org/trunk@44161 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-19 07:42:49 +00:00
Gary Pendergast aaf99e6913 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.


Built from https://develop.svn.wordpress.org/trunk@42343


git-svn-id: http://core.svn.wordpress.org/trunk@42172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-30 23:11:00 +00:00
Andrea Fercia d35be7a120 Administration: Admin menu: Use `aria-current` for the current active page.
The `aria-current` attribute is a simple, effective way to communicate to assistive
technologies which the current item within a set of items is. While the admin menu
structure isn't 100% ideal (the top-level item is repeated also as a sub-item)
adding `aria-current="page"` to the sub-items gives an important feedback to
assistive technologies users.

This change introduces `aria-current` for the first time in core. Worth noting
there are other places where it can be used to improve accessibility. These should
be addressed in separate tickets and patches.

Fixes #41589.

Built from https://develop.svn.wordpress.org/trunk@41359


git-svn-id: http://core.svn.wordpress.org/trunk@41192 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-09 14:50:43 +00:00
Drew Jaynes 0401cee8b3 Docs: Reduce confusion in `@since MU` notationss by indicating the WP version (3.0.0) the code was merged into core while retaining the original context.
Props sathyapulse.
Fixes #41509.

Built from https://develop.svn.wordpress.org/trunk@41200


git-svn-id: http://core.svn.wordpress.org/trunk@41040 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-08-01 20:44:43 +00:00
Aaron Jorbin 53c8c68365 Administration: Ensure collapse menu is usable with a keyboard
Currently, the "Collapse menu" item is not focusable and keyboard users can't collapse/expand the admin menu. This aims to fix it so that screen readers no longer announce it as a clickable but it remains unfocusable and thus unusable. So it's now a button.

Quoting joedolson at WordCamp Chicago 2014:
"If it's supposed to act like a button, it should be a button."

Also includes a grunt:precommit run that picked up some postcss changes to src/wp-includes/css/customize-preview.css

Fixes #29958.
Props ajercia, ipm-frommen for an iterative patch, valendesigns for an iterative patch, GaryJ for feedback, joedolson for feedback, helen for feedback



Built from https://develop.svn.wordpress.org/trunk@39141


git-svn-id: http://core.svn.wordpress.org/trunk@39081 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-04 17:18:57 +00:00
Drew Jaynes c3055cc190 Docs: Standardize hook docs in wp-admin/* to use third-person singular verbs per the inline documentation standards for PHP.
See #36913.

Built from https://develop.svn.wordpress.org/trunk@37488


git-svn-id: http://core.svn.wordpress.org/trunk@37456 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-22 18:01:30 +00:00
Dominik Schilling d8f3325c14 Docs: Correct grammar when referring to "a URL" vs "an URL" in several places.
Fixes #36218.
Built from https://develop.svn.wordpress.org/trunk@36970


git-svn-id: http://core.svn.wordpress.org/trunk@36938 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-12 12:39:27 +00:00
Drew Jaynes 3d6f53da06 Docs: Document declaration of the `$submenu_file` global in wp-admin/menu-header.php.
See #24531. See #32246.

Built from https://develop.svn.wordpress.org/trunk@34725


git-svn-id: http://core.svn.wordpress.org/trunk@34689 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-01 01:48:25 +00:00
Drew Jaynes 2a0a841a13 Declare the `$submenu_file` global to avoid a notice generated by passing it as a parameter to the `submenu_file` hook, introduced in [34722].
Fixes #24531.

Built from https://develop.svn.wordpress.org/trunk@34724


git-svn-id: http://core.svn.wordpress.org/trunk@34688 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-01 01:23:25 +00:00
Sergey Biryukov 145deeeada Add `'submenu_file'` filter for the file of an admin menu sub-menu item.
This complements the `'parent_file'` filter added in [12712].

Props swissspidy, kraftbj.
Fixes #24531.
Built from https://develop.svn.wordpress.org/trunk@34722


git-svn-id: http://core.svn.wordpress.org/trunk@34686 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-01 00:23:28 +00:00
Scott Taylor 2518b37222 Admin menu: improve accessibility when collapsed.
Props afercia.
Fixes #32346.

Built from https://develop.svn.wordpress.org/trunk@32946


git-svn-id: http://core.svn.wordpress.org/trunk@32917 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-25 19:33:26 +00:00
Scott Taylor b56b9b3e5c Add `@global` annotations for `wp-admin/*`.
See #32444.

Built from https://develop.svn.wordpress.org/trunk@32642


git-svn-id: http://core.svn.wordpress.org/trunk@32612 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-28 21:41:30 +00:00
Dominik Schilling a7ba89b027 Accessibility: Add landmark roles to WordPress admin areas.
props afercia, joedolson.
fixes #31450.
Built from https://develop.svn.wordpress.org/trunk@31955


git-svn-id: http://core.svn.wordpress.org/trunk@31934 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-01 13:17:27 +00:00
Sergey Biryukov 137204b033 In `_wp_menu_output()`, `$submenu_items` is an array and should be initialized as such.
props ipm-frommen.
fixes #31257.
Built from https://develop.svn.wordpress.org/trunk@31364


git-svn-id: http://core.svn.wordpress.org/trunk@31345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-07 17:57:24 +00:00
Scott Taylor 8ee598169f After [31105], don't ditch the `isset()` calls for BC. Declare `$page_hook` as `null` so it is initialized for all execution paths but will still fail `isset()` checks.
Fixes #30958.

Built from https://develop.svn.wordpress.org/trunk@31106


git-svn-id: http://core.svn.wordpress.org/trunk@31087 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-08 22:52:22 +00:00
Scott Taylor 60e1dd409b Properly declare `$hook_suffix`, `$plugin_page`, `$typenow`, and `$taxnow` as globals in `wp-admin/admin.php`.
Fixes #30958.

Built from https://develop.svn.wordpress.org/trunk@31105


git-svn-id: http://core.svn.wordpress.org/trunk@31086 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-08 22:15:24 +00:00
Scott Taylor 60b0cd7943 The keyword `elseif` should be used instead of `else if` so that all control keywords look like single words.
This was a mess, is now standardized across the codebase, except for a few 3rd-party libs. 

See #30799.

Built from https://develop.svn.wordpress.org/trunk@31090


git-svn-id: http://core.svn.wordpress.org/trunk@31071 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-08 07:05:25 +00:00
Helen Hou-Sandí ad646bc183 Accessibility: hide admin menu separators from screen readers.
props afercia. fixes #30010.

Built from https://develop.svn.wordpress.org/trunk@30393


git-svn-id: http://core.svn.wordpress.org/trunk@30389 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-19 19:37:21 +00:00
Drew Jaynes 097dc8ee15 Fix syntax for single- and multi-line comments in wp-admin-directory files.
See #28931.

Built from https://develop.svn.wordpress.org/trunk@29206


git-svn-id: http://core.svn.wordpress.org/trunk@28990 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-17 09:14:16 +00:00
Sergey Biryukov 2fa0de5f6f Avoid inadvertently adding admin page titles as classes for admin menu submenu items.
fixes #28817.
Built from https://develop.svn.wordpress.org/trunk@29083


git-svn-id: http://core.svn.wordpress.org/trunk@28869 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-11 01:10:15 +00:00
Helen Hou-Sandí 95deee2de5 Restore the ability to pass classes to admin menu submenu items, important for the Customize link. Accidentally left out in [24048]. fixes #28583.
Built from https://develop.svn.wordpress.org/trunk@28778


git-svn-id: http://core.svn.wordpress.org/trunk@28591 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-19 02:18:15 +00:00
Dominik Schilling 192afe238a Admin Menu: Use `.dashicons-before` as default $img_class.
props kovshenin for noticing and testing.
see #26630.
Built from https://develop.svn.wordpress.org/trunk@27425


git-svn-id: http://core.svn.wordpress.org/trunk@27272 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 23:22:15 +00:00
Dominik Schilling d23cd0aa50 Introduce a `.dashicons-before` CSS class.
If you want to use a Dashicon before an element you can use the class because it will not change the elements content styling. With that you don't need to copy the entire `.dashicons` styling to your :before styling anymore.
To demonstrate this change, Admin Menu now uses Dashicons classes directly.

And it fixes a glitch in IE.

fixes #26630.
Built from https://develop.svn.wordpress.org/trunk@27418


git-svn-id: http://core.svn.wordpress.org/trunk@27265 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 20:04:14 +00:00
Sergey Biryukov 805d6fe59b Update comment about structure of items in $menu global.
props kitchin.
fixes #26635.
Built from https://develop.svn.wordpress.org/trunk@27151


git-svn-id: http://core.svn.wordpress.org/trunk@27018 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-09 21:43:12 +00:00
Drew Jaynes cea5ae90f5 Inline documentation for hooks in wp-admin/menu-header.php.
Props piontkowski, kpdesign.
Fixes #26051.

Built from https://develop.svn.wordpress.org/trunk@26893


git-svn-id: http://core.svn.wordpress.org/trunk@26776 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-02 02:46:12 +00:00
Helen Hou-Sandí 7f8584d37b More targeted background image styling for admin menu SVG icons. fixes #25147.
Built from https://develop.svn.wordpress.org/trunk@26671


git-svn-id: http://core.svn.wordpress.org/trunk@26561 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-05 17:53:10 +00:00
Andrew Nacin 9b29ad0529 Allow for Dashicons and base64-encoded data:image/svg+xml URIs when specifying menu icons.
Both of these icons can be colored to match the color scheme, including hover states.
Both are accepted for register_post_type()'s menu_icon argument, and also add_menu_page()'s $icon_url argument.

To use a Dashicon, pass the name of the helper class, e.g. 'dashicons-piechart'.
To use an SVG, pass a valid data URI string starting with 'data:image/svg+xml;base64,'.

props helen.
fixes #25147.

Built from https://develop.svn.wordpress.org/trunk@26664


git-svn-id: http://core.svn.wordpress.org/trunk@26554 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-05 06:38:09 +00:00
Helen Hou-Sandí 70330d468c Remove now-unused #adminmenushadow. see #25858.
Built from https://develop.svn.wordpress.org/trunk@26182


git-svn-id: http://core.svn.wordpress.org/trunk@26091 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-14 23:49:10 +00:00
Andrew Nacin 82c4745df2 Remove unused variable. props jeremyfelt. fixes #24959.
git-svn-id: http://core.svn.wordpress.org/trunk@24975 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-08-05 21:38:24 +00:00
Mark Jaquith e553e85ebb Remove `$pagenow` global from three functions that don’t use it.
Props jeremyfelt. Fixes #24920.

git-svn-id: http://core.svn.wordpress.org/trunk@24974 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-08-02 04:42:08 +00:00
Andrew Nacin b11654ce74 Revert [23871] - Customize should be added to the menu, but not hacked in as first. see #21413.
git-svn-id: http://core.svn.wordpress.org/trunk@24048 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-04-22 19:33:39 +00:00
Mark Jaquith 8c4aeb9188 Add "Customize" as first item under Appearance menu.
fixes #21413. props ryanhellyer, obenland, DrewAPicture

git-svn-id: http://core.svn.wordpress.org/trunk@23871 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-29 20:39:54 +00:00
Sergey Biryukov 973985c2ce Prevent plugins with certain filenames from breaking links in the admin menu. props lightningspirit. fixes #22079.
git-svn-id: http://core.svn.wordpress.org/trunk@23656 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-09 02:48:49 +00:00
Ryan Boren 06ee370814 Pinking shears
git-svn-id: http://core.svn.wordpress.org/trunk@22634 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-17 15:11:29 +00:00
Andrew Ozz b443373e8e Admin menu: add phpdoc/inline comments describing the usage of the param $icon_url in add_menu_page(), add string 'none' to be used when a menu icon is added from CSS, switch core items in the admin menu to use 'none', fixes #21349
git-svn-id: http://core.svn.wordpress.org/trunk@21877 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-16 22:51:44 +00:00
Andrew Ozz 0b92d7c941 Improve the layout and accessibility of the admin menu: simplify the HTML structure, move the submenus off the viewport (still visible for screen readers) instead of hiding them with display: none, make it possible to unfold the menu on small/narrow screens, see #21349
git-svn-id: http://core.svn.wordpress.org/trunk@21574 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-08-21 22:46:30 +00:00
azaozz 34535097b7 Remove nearly all tabindex attributes from the admin, leaving them only where absolutely necessary (for now that's only the toolbar).
Add tabindex="-1" for the menu images links to avoid double tab stops there when the menu is expanded.

Fix/add auto-focus on the first input fields on the Add/Edit Post, all taxonomy, all edit taxonomy, Log In and Edit Comment screens.

See #21340.

git-svn-id: http://core.svn.wordpress.org/trunk@21311 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-07-24 00:15:15 +00:00
azaozz a0beb9a1d1 Admin menu: change to strip_tags() for the aria-label attributes as it's faster, fixes #20373
git-svn-id: http://core.svn.wordpress.org/trunk@20698 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-02 20:36:07 +00:00
azaozz 46839c23eb Admin menu: add aria-label attributes to the links around menu images for the sake of screen readers, fixes #20373
git-svn-id: http://core.svn.wordpress.org/trunk@20680 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-02 01:41:15 +00:00
azaozz f6047c397e Remove role="menu" and role="menuitem" for now, fixes #19394
git-svn-id: http://svn.automattic.com/wordpress/trunk@19548 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-12-05 17:47:23 +00:00