` elements that look like visual buttons, by adding an icon to the right (similar to how we add an ""external"" icon to external links.
[[Image(http://cldup.com/0fa8NiUWOZ.png)]]
----
Related discussions and prior work done on button/link semantics:
- Enhancement: improve tertiary button styles: #48501
- https://core.trac.wordpress.org/ticket/40470#comment:11
- https://github.com/WordPress/gutenberg/issues/7534#issuecomment-510534529
- Semantic elements for non-link links: #26504
- https://core.trac.wordpress.org/query?keywords=~semantic-buttons" drw158
Future Releases 42915 Don't load admin dashboard widgets if they're not shown Administration normal normal Awaiting Review enhancement new dev-feedback 2017-12-15T19:55:41Z 2020-02-15T13:08:37Z "I'm not sure how doable this is given that #23910 was closed, but some plugins load slow admin dashboard widgets that use HTTP API requests or else involve heavy db lookups and processing. (Yes, these plugins should be designed better.)
Since this is the admin dashboard and not some other component that is heavily modified and reconfigured such as the post page and since #23910 was closed, would it be possible to require a page reload when an admin component is enabled (so that the page can be re-requested while calling the widget routine) instead of preloading all widgets and then simply hiding the unshown dashboard elements?
Or perhaps #23910 could be revisited with consideration given to non-stock admin dashboard widgets that are not as ""no big deal"" as the ones that WP ships with out of the box." ComputerGuru
Future Releases 45000 "Eliminating ""Add New"" Button Beside Titles in Admin" Administration 4.9.8 normal normal Awaiting Review enhancement new dev-feedback 2018-09-26T21:20:53Z 2020-01-06T17:45:29Z "This is apart of a bigger project for my staff and I, you can find the context here https://www.theportlandcompany.com/2017/09/10/proposed-improvements-to-the-wordpress-ui/.
Our goal is to clean up the UI, especially to reduce scrolling on mobile, with three principles in mind:
- Context Visibility - Only show something when it's in context.
- Add With Purpose - If something, such as padding or margins, don't serve a purpose, don't add them.
- Simplify Number of Actions - If a step can be avoided in a process, avoid it.
We propose eliminating the Add New button that appears beside Titles when on various admin pages because:
- There is already a button in the admin menu on the left.
- The position of the button changes depending on the length of the title, disorienting users.
- On mobile, especially, it makes the page look broken as a result of the above mentioned issue.
- Feedback from dozens of clients we've trained concur - for some reason - that they are confused by multiple ""Add New"" links/buttons. Maybe this is subjective - we're not confused by it and feel multiple access points is helpful, but only when it's in a sensible and easy to accessible place. We think maybe because ""Add New"" is appearing next to the page title they don't understand it's creating a new Post, but rather something related to whatever they titled that page." s3w47m88
Future Releases 39418 "Improve ""Empty Spam"" and ""Empty Trash"" user experience" Administration 2.5 normal normal Awaiting Review enhancement new dev-feedback 2016-12-28T18:04:55Z 2018-08-20T06:57:38Z "Now that plugins are doing more with post types, and dealing with sometimes hundreds of thousands of entries in the posts table, emptying spam and/or trash is starting to feel a little outdated.
When there is a need to empty many spam or trashed items, it's not uncommon for this page to timeout, or to reload in the browser in such a way that rendering is blocked while the server processes the mass deletion of content.
In my imagination, it would be a nice improvement to fallback to the current behavior for `noscript`, but to leverage the power of javascript being asynchronous to provide some kind of modal window to chug through the process, maybe with a progress bar and some basic error feedback if the empty action fails for any reason." johnjamesjacoby
Future Releases 45313 Multisite site deletion email contains misleading language about user account Administration normal normal Awaiting Review enhancement new dev-feedback 2018-11-08T15:35:10Z 2018-11-08T15:35:10Z "In Multisite, you can initiate the deletion of a site via wp-admin/ms-delete-site.php. This triggers an email https://core.trac.wordpress.org/browser/tags/4.9.8/src/wp-admin/ms-delete-site.php?marks=58#L43 that contains the line:
> (But remember your current site and username are gone forever.)
But the delete link does not, in fact, delete users or usernames. See https://core.trac.wordpress.org/browser/tags/4.9.8/src/wp-admin/ms-delete-site.php?marks=20#L18
This language dates from the MU merge in 3.0. See [12603]. I imagine it was linked to the original conception of WPMU that each user account would correspond to a specific site on the network, a legacy concept that plagues us elsewhere. See #17904, especially https://core.trac.wordpress.org/ticket/17904#comment:14 and subsequent comments.
This entire block of text could probably reuse a rethink, since the intended use of Multisite has changed considerably since 2010. I'd suggest changing the email text to something like (using `wpmu_welcome_notification()` as a template):
{{{
$content = __( ""Howdy ###USERNAME###,
You recently clicked the 'Delete Site' link on your site and filled in a
form on that page.
If you really want to delete your site, click the link below. Please note
that the URL ###SITE_URL### will be unavailable for further use, even after
the site is deleted.
You will not be asked to confirm again, so only click this link if you are absolutely certain that you'd like to delete your site:
###URL_DELETE###
-- The Team @ ###SITE_NAME###"" );
}}}" boonebgorges
Future Releases 47012 Proposal: Simplify WordPress Admin Navigation Administration normal normal Future Release enhancement new dev-feedback 2019-04-22T15:40:53Z 2022-02-08T07:56:17Z "About 3 months ago [https://wordpress.slack.com/archives/C02S78ZAL/p1548265528434800?thread_ts=1548092047.364700&cid=C02S78ZAL joen shared some rough mockups] in Slack for proposed changes to the left sidebar navigation in core.
My goal below (with Joen’s blessing) is to resurface those mockups a little more publicly to see if we can gather some more feedback and potentially gain a little more momentum with this project.
=== Summary
The current sidebar has served us well for a long time. But with a few improvements, we can improve accessibility and usability, and allow it to better scale to extensions.
=== Challenges with the current design
* The hover/flyout menus are difficult to make accessible, and they do not scale well to mobile interfaces.
* There are a lot of top-level menu items that are rarely if ever used, contributing to cognitive weight by still being permanently visible.
* Given the additional menu items that plugin add, people are likely to end up with many menu items, despite a large number of them perhaps not being used that often.
=== Mockup
**Important disclaimer:** this is just an initial concept, it is subject to feedback and discussion and iterations:
[[Image(menu-mockup.png)]]
Props to joen for coming up with this v1 concept.
=== Major Changes
* Flyout menus are replaced with accordion behavior. This scales all the way from mobile to desktop, and affords better accessibility.
* Menu is made 80px wider (240px vs. 160), affording a 14px minimum font size for all items, perhaps bigger icons in the future, more relaxed spacing, enhancing usability and accessibility.
* Sidebar is grouped in major sections, “Site”, “Design”, “Tools” and “Manage”.
* “Updates” are moved to a subsection of “Manage”, making Home a single item.
* Items related to content on your site (such as “Posts” and “Pages”) are moved under “Site”.
* Clicking major menu items just opens or closes the accordion, as opposed to go directly to the first subsection. This unifies the mobile and desktop behavior. You can keep the accordion open if you use it all the time (each click will save state, so you’ll see the same open/closed sections upon page refresh).
* All “Settings” subsections are moved under “Manage”, along with “Plugins & Blocks” and “Users”.
* Separators group major categories, like “Site” and “Design” together
* Dashboard is renamed “Home”, because all of WordPress is a Dashboard, and “Home” is where you can get an overview at a glance.
=== Custom Post Types & Taxonomies
* Custom Post Types show up below Pages (top item) and Posts (2nd item).
* A separator cordons these off from Media & Comments, which show content from all.
* Categories & Tags, and even custom taxonomies, are accessible from each section, as opposed to having a permanent presence in the sidebar. For example if you have a taxonomy called “Ingredients” tied to “Recipes”, you first click “Recipes”, and on the archive page you can manage existing Ingredients under a tab. The argument for putting them under this page is that taxonomies are usually added in the editor itself, and only managed on the archive pages.
* When you have custom post types, an additional, short, separator shows up below the post types.
=== Where's the ""Add New"" menu item?
One idea would be to make this permanently visible in the top toolbar.
[[Image(add-button.png)]]
Clicking this button produces a dropdown. By moving it there, you have a single destination to create new content, and we reduce the amount of tab-stops in the navigation menu, especially for sites with a lot of custom post types.
=== Related
Helen opened [https://core.trac.wordpress.org/ticket/32678 this ticket] over 4 years ago. There are a number of different ideas and threads in that ticket. If someone decides that these two tickets should be merged, that is fine.
=== Feedback
Please keep in mind that this is just a ''very early, exploratory concept''. Nothing here is set in stone. The goal of this exercise would be to improve the overall usability and accessibility of the left nav.
What thoughts, concerns, questions, and feedback do you have?" lessbloat
Future Releases 48470 Remove the Custom Header and Custom Background admin pages Administration normal normal Awaiting Review enhancement new dev-feedback 2019-10-30T17:30:46Z 2019-10-30T17:30:46Z "I fell into a rabbit hole today looking into why the `custom-header.js` file is [https://core.trac.wordpress.org/browser/branches/5.3/Gruntfile.js#L689 specified to not get minified] in `Gruntfile.js`. I did not find an answer to that question (it has been like that since Core switched to the new build process in [25001] and I couldn't find prior discussion), but I realized that the custom header and background pages in the admin should probably be officially deprecated in favor of the Customizer.
This is a follow up of #25569, #25571, #28032, which proposed removing these pages, but instead settled on an intermediary set of changes to encourage users, and theme and plugin developers to use the Customizer for this feature instead. Those changes were:
- Change the admin menu links from links to `themes.php?page=custom-header`/`themes.php?page=custom-background` to deep links in the Customizer (`https://site.com/wp-admin/customize.php?autofocus[control]=header_image`)
- Added an admin notice informing users that the feature can now be managed with live-preview in the Customizer.
- Hid the Background and Header links in the admin bar and with CSS when Customizer support is present.
This was in version 4.1 (5 years ago). Proper due diligence needs to be performed first, but I'd like to propose removing support for these pages in the admin in favor of redirecting users to the appropriate areas of the Customizer. The pages have been neglected for some time, and the previews are pretty broken for most themes providing a bad experience whenever a plugin or theme has linked to these pages directly." desrosj
Future Releases 34753 "Remove use of ""Toggle"" in strings" Administration 4.4 normal normal Awaiting Review enhancement new dev-feedback 2015-11-20T15:14:58Z 2021-08-01T11:50:10Z "Hello!
It would be nice to have WordPress stop using ""Toggle"" in strings in multiple places and contexts -- most particularly action buttons and helper text.
It's really two possible actions/behaviors, most of the time different ones depending on the context/location/result of the previous clic, and it's always a pain to translate properly (current way in French replace ""Toggle"" with the French equivalent of ""Open/Close"". Not elegant).
I could change the text, sure. But the buttons themselves, not so much. They'd need to go from displaying ""Toggle"" to displaying ""Open"" or ""Close"" depending on the current status of the target. That'd require some JavaScript wizardry.
Hence, this ticket.
Thanks!" xibe
Future Releases 54400 "Show ""Add New"" title buttons on single-site Plugins/Themes pages for capable users in multisite" Administration 3.0 normal normal Awaiting Review enhancement new dev-feedback 2021-11-08T18:31:15Z 2021-11-08T20:05:50Z "On multisite installations, when viewing a single site's admin area – as a Network Admin (or otherwise capable user) – none of the ""Add New"" links for Plugins & Themes are displayed.
I would like to re-add these buttons back, but have them link to the correct Network Admin pages.
At first scan, not having these buttons on single sites makes sense because it is not possible to add a new plugin or theme at the site level.
After having this be the default behaviour since WordPress 3.0, I think it could be improved.
Conceptually, the problem isn't that installing plugins or themes is no longer possible in multisite, it is simply that the location and capabilities required to do so are elevated from single-site.
If the currently logged in user can access those locations ''and'' has the capability to perform the task, it would be convenient to re-show these buttons but link them to the network URLs.
To replicate:
* Log into a multisite installation as a Network Admin
* Visit `/wp-admin/plugins.php`
* Notice there is no ""Add New"" link or button anywhere
* The only UI path to add a plugin is: `Admin Bar > My Sites > Network Admin > Plugins > Add New`
(Themes has the same above issue & relative navigation...)" johnjamesjacoby
Future Releases 46354 Update Count - Value Should Change as Updates are Applied Administration 5.1 low trivial Future Release enhancement new dev-feedback 2019-02-26T22:58:59Z 2020-02-14T10:54:33Z "The Update Count, shown in the Admin Bar, and the Admin Menu (against 'Dashboard' > 'Updates', and optionally against 'Plugins') should change to reflect the outstanding number of Updates available as Updates are Applied, whether they are applied individually on the Plugin Screen, or in bulk through the Updates Screen.
This is not a high priority issue at all, but an extremely minor cosmetic change. I suspect that Javascript could be used to change the value as an Update completes successfully in any scenario.
" Lucanos
Future Releases 57200 WP_List_Table::pagination use singular and plural Administration normal normal Awaiting Review enhancement new dev-feedback 2022-11-24T23:33:23Z 2022-12-03T11:23:40Z "WP_List_Table::pagination() currently hardcodes the number of records display as ""1 item""/""XX items"". It would be nice if it used the singular and plural set in the constructor, defaulting to item/items if none are set." RoscoHead
Future Releases 46082 Why returning $menu_array[x] instead of $title Administration normal normal Awaiting Review enhancement new dev-feedback 2019-01-23T16:02:40Z 2021-12-08T12:38:49Z "
{{{
File: wp-admin/includes/plugin.php
Function: get_admin_page_title()
}}}
In lines `1613, 1616, 1637, 1645 and 1660` the following pattern of assignments and return the value are used:
{{{
$title = $menu_array[x];
return $menu_array[x];
}}}
where `$tile` is `global`.
What is the difference between the following returning patterns
{{{
$title = $menu_array[x];
return $menu_array[x];
}}}
AND
{{{
$title = $menu_array[x];
return $title;
}}}
Since we are already updating the the global variable `$title` with that of `$menu_array[x]`, why can't we just return `$title` instead of `$menu_array[x]`? For every single request `global $title` will receive a new value.
In `line 1620` the return pattern is usual:
{{{
$title = $menu_array[0];
return $title;
}}}
" subrataemfluence
Future Releases 52762 About page widget to Dashboard Administration normal normal Awaiting Review feature request new dev-feedback 2021-03-10T13:49:05Z 2023-05-31T20:53:57Z "The obstacle in making people well informed is that most users are not paying attention to the About page, especially if an update was automatically made or someone else is making it for them. Or even if they saw this page, imagine: If I have just updated my site to the latest version, my first priority - to go and check if everything is working and all this useful information including the message about contribution will never catch my attention again, if everything is fine I will go to do what I was about to do before this urge to update.
The desired solution - to make the Dashboard page each time a bit different and interesting, alternative and more simple solution — a widget to Dashboard with a very small piece about a new version with a call to action to read more." oglekler
Future Releases 50158 Hide columns in the list of posts for user levels Administration 5.4.1 normal normal Awaiting Review feature request assigned dev-feedback 2020-05-13T21:11:14Z 2020-05-14T15:47:40Z "On the page all posts, columns of information are shown (Titles, Author, Categories, Tags, ...). And there may be some columns that we don't want to show to all user levels, for example on my website I have installed the “Search Exclude” plugin and they insert a column in the list of posts to inform whether each post is hidden or visible, https://prnt.sc/sab4vw
But, this column is not required to be shown to users who are not Administrators or even Editor levels. So, I would like to hide this column for Author, Contributor, Subscriber and ect levels. But the plugin does not offer this option, and with that I have no option to hide.
The WP has the “Screen options” feature where each user can hide certain columns. However, this feature applies individually to each user, that is, each user hides the column only for him. And what I wanted, as a site administrator, is to have the control to hide columns for all levels of users and to control which levels of users I want. In fact, I, as an administrator, could even have the control to hide columns for certain users (I select the column I want to hide and then select the users to whom that column should be hidden).
WP does not offer this feature. So I would like to leave this suggestion to the development staff.
Thank you!
Rodrigo Carlos" vejapixel
Future Releases 55796 SHORTINIT requires rest-api.php via rest_cookie_collect_status() via wp_get_current_user() Application Passwords 2.0 normal normal Awaiting Review defect (bug) new dev-feedback 2022-05-23T21:36:15Z 2022-05-24T06:09:11Z "Hello friends! 👋
I believe it may be unintended behavior that in order to use the `SHORTINIT` constant with standard cookie authentication, either `wp-includes/rest-api.php` must be included or its related default filters need to be removed.
----
**wp_get_current_user() – jjj1.php**
{{{
true
) );
}}}
Produces:
{{{
Fatal error: Uncaught Error: Call to undefined function wp_get_current_user() in wp-includes/class-wp.php:635
Stack trace:
#0 wp-includes/class-wp.php(768): WP->init()
#1 wp-includes/functions.php(1330): WP->main(Array)
#2 jjj1.php(31): wp(Array)
}}}
IMO, the inside of `WP->init()` has needed a `function_exists()` call around `wp_get_current_user()` since WordPress 2.0.0, and I'm only just now getting around to suggesting such 😅
----
**rest_cookie_collect_status() - jjj2.php**
{{{
true
) );
}}}
Produces:
{{{
Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function ""rest_cookie_collect_status"" not found or invalid function name in wp-includes/class-wp-hook.php:309
Stack trace:
#0 wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters('', Array
#1 wp-includes/plugin.php(476): WP_Hook->do_action(Array)
#2 wp-includes/pluggable.php(705): do_action('auth_cookie_mal...', false, '')
#3 wp-includes/class-wp-hook.php(307): wp_validate_auth_cookie(false)
#4 wp-includes/plugin.php(191): WP_Hook->apply_filters(false, Array)
#5 wp-includes/user.php(3583): apply_filters('determine_curre...', false)
#6 wp-includes/pluggable.php(70): _wp_get_current_user()
#7 wp-includes/class-wp.php(635): wp_get_current_user()
#8 wp-includes/class-wp.php(768): WP->init()
#9 wp-includes/functions.php(1330): WP->main(Array)
#10 jjj2.php(65): wp(Array)
}}}
This happens because `wp-includes/default-filters.php` assumes that the REST API will always be loaded, and the default `pluggable.php` versions of the cookie based authentication functions apply filters that the REST API also uses by default, including the Application Password feature.
----
If the REST API were a SHORTINIT auth requirement, my ''guess'' is that it would have been required earlier in `wp-settings.php`.
This is all somewhat of a catch-22 situation, because `default-filters.php` ''is'' loaded for `SHORTINIT` which is far ahead of when both cookie auth and the REST API are both included.
It is possible to work around this by removing the hooks, but obviously that only counts for today's hooks, and not future hooks if something new is introduced. I think a core code change will be required to decide when & how the REST API filters are applied. 😬" johnjamesjacoby
Future Releases 42696 Autosave Notification not dismissible Autosave 4.2 normal major Awaiting Review defect (bug) new dev-feedback 2017-11-25T10:11:17Z 2023-05-15T10:09:44Z "If I make changes to a Post/Page and then decide I don't want to keep those changes, I'll simpy click away from the edit page.
The next time I decide to edit the page, I'm prompted with a notification advising ""There is an autosave of this post that is more recent than the version below. View the autosave""
https://cl.ly/082A3B0u3J1u
The only option I'm given is to view the autosaved version. This notificaiton should be dismissible. I shouldn't have to view the autosaved version when I already know that I don't want it. I also shouldn't have to resave the page, just to get rid of the notification.
I would like to see a Dismiss icon/link so that we can dismiss the notification for good. When developing a theme or plugin, we're required to make all notifications dismissible. There's no reason why core notifcations shouldn't follow the same rules and also be dismissible." ahortin
Future Releases 23221 Multisite in subdirectory with root site address Bootstrap/Load 3.5 normal normal Awaiting Review defect (bug) reopened dev-feedback 2013-01-16T22:48:52Z 2018-01-21T01:31:19Z "I have seem to have found a url bug in the multisite.
= How to replicate =
1. Install WordPress in a subdirectory
2. Change the the url from the subdirectory to the root by adding index.php to the the root and changing the following code.
{{{
/** Loads the WordPress Environment and Template */
require('./subdirectory/wp-blog-header.php');
}}}
3. Change the site url in the settings to the root.
4. Start the process to convert the site to a multisite.
= Affect =
Then it should cause the network dashboard url to be incorrect. You will get http://example.com/wp-admin/network/ instead of
http://example.com/subdirectory/wp-admin/network/.
" grapplerulrich
Future Releases 42085 Still getting ini_get_all warning message Bootstrap/Load normal normal Future Release defect (bug) new dev-feedback 2017-10-04T13:18:36Z 2017-10-04T22:44:05Z "For some PHP configurations, the check function_exists does not suffice.
{{{
Warning: ini_get_all() has been disabled for security reasons in /home/mysite/public_html/wp-includes/load.php on line 1027
}}}
Suggested fix in wp_is_ini_value_changeable()
{{{
if ( ! isset( $ini_all ) ) {
$ini_all = false;
// Sometimes `ini_get_all()` is disabled via the `disable_functions` option for ""security purposes"".
if ( function_exists( 'ini_get_all' ) ) {
$disabled_functions_raw = explode( ',', ini_get( 'disable_functions' ) );
$disabled_functions = array_map( 'trim', $disabled_functions_raw );
if (!array_search( 'ini_get_all', $disabled_functions ) ) {
$ini_all = ini_get_all();
}
}
}
}}}" scottcwilson
Future Releases 18322 The Road to Magic Quotes Sanity jorbin Bootstrap/Load 3.2.1 normal normal Future Release defect (bug) reopened dev-feedback 2011-08-03T20:26:25Z 2023-06-26T20:19:27Z For back compat reasons, wp_magic_quotes() performs addslashes() on GPCS data. This is a pain, especially given that some core API expects slashes and some doesn't. In hopes of someday losing the automatic GPCS slashing, let's introduce a flag to turn off the slashing as well as slash and unslash functions that consult the flag. If slashing is on, these functions add and strip slashes. If slashing is off, they return data unchanged. Plugin authors can start using these functions and testing their code with GPCS slashing turned off and on. Eventually, GPCS slashing would default to off and all calls to the slash and unslash functions could be removed from core. ryan
Future Releases 60781 Expand or modify wp_get_environment_type function to allow more environment types Bootstrap/Load 5.5.1 normal normal Awaiting Review enhancement new dev-feedback 2024-03-15T09:49:27Z 2024-03-15T11:29:04Z "Currently the [https://developer.wordpress.org/reference/functions/wp_get_environment_type/ wp_get_environment_type()] function only allows 4 environment types:
{{{#!php
$wp_environments = array(
'local',
'development',
'staging',
'production',
);
}}}
But there are projects that have multiple environment types (CI, CD, pre-production, UAT, etc.).
So if you define the `WP_ENVIRONMENT_TYPE` to anything outside of these 4 environments, you'll end up with serving the `production` environment.
A trivial example would be where you'd like to change the color of your admin UI based on environments. I mean, sure you can use something like {{{defined('WP_ENVIRONMENT_TYPE') ? WP_ENVIRONMENT_TYPE : 'production'}}}, but what's the point of the `wp_get_environment_type` function then?
One alternative is to expand the `$wp_environments` variable with some of the industry most-used terms. Or just remove this check, and just return the value of `defined('WP_ENVIRONMENT_TYPE') ? WP_ENVIRONMENT_TYPE : 'production'` check." dingo_d
Future Releases 22251 Helper function to simplify checking for constants Bootstrap/Load normal normal Future Release enhancement new dev-feedback 2012-10-22T00:32:27Z 2018-05-31T23:46:31Z "Love 'em or hate 'em, WordPress uses lots of constants. As a result, this pattern is all over core and plugins, and occasionally themes:
`if ( defined( 'CONSTANT_NAME' ) && CONSTANT_NAME )`
Right now on trunk, it's used 57 times (excluding 2 in Akismet).
{{{
~/code/wptrunk $ ack ""defined\( ?('|\"")([^'\""]+)\1 ?\) \&\& \2"" -h --ignore-dir=wp-content/plugins/ | wc -l
57
}}}
How about a new function to make that verbose logic a little bit less repetitive.
{{{
function wp_constant( $constant ) {
return defined( $constant ) && constant( $constant );
}
}}}" evansolomon
Future Releases 37646 Make wp-settings.php a series of do_actions() Bootstrap/Load normal normal Awaiting Review enhancement new dev-feedback 2016-08-12T19:07:44Z 2017-02-23T04:41:29Z "Now that #36819 is in, my master plan for `wp-settings.php` can begin.
----
'''Problem'''
`wp-settings.php` makes many assumptions, many on purpose, others by necessity, some on consequence, and a few by accident. It is somewhat poorly named for what it is, and it's a mishmash of globals, function calls, class instantiations, and do_action() calls.
----
'''Solution'''
`do_action()` all of the things.
Make `wp-settings.php` a series of action calls. One for setting versions, one for initial constants, one for environmental setup, translations, database, plugins, themes, users, template output, and so on...
Introduce a file named `wp-includes/default-actions.php` that serves 2 purposes:
* Includes a bunch of new functions that wrap up sections of what's already in `wp-settings.php`
* Hooks those new functions into the new actions in `wp-settings.php`
----
'''Why do we do this?'''
As more robust and sophisticated plugins, themes, APIs, and systems start to use, rely on, and bend WordPress to their will, the need to override more & more pieces becomes apparent. While WordPress comes with a very handy set of default post types, taxonomies, APIs, helpers, wrappers, and tools, it may be desirable to unhook (or never load) certain pieces so that other pieces can take their place.
In the past, this is done only with great intent, with strategic actions & filters in places where specific needs are being addressed. This is good in that it's predictable, but bad in that it's impossible for anyone to truly know what action or hook is *best* to perform any given subsequent action.
By breaking `wp-settings.php` up into many clearly named `do_action()` calls, it becomes clearly obvious what actions perform what duties, while also introducing literally maximum flexibility in the entire system for new and exciting things to happen around WordPress itself.
Imagine something like:
{{{
// Load versions
do_action( 'wp_settings_load_versions' );
// Load constants
do_action( 'wp_settings_load_constants' );
// Load translations
do_action( 'wp_settings_load_translations' );
// Load environment
do_action( 'wp_settings_load_environment' );
// Load early WordPress settings
do_action( 'wp_settings_load_early' );
// Load database
do_action( 'wp_settings_load_database' );
// and on, and on...
}}}
----
'''Epilogue'''
This is a huge idea, easily scoffed at, and introduces code-churn like whoa. It would mean doubling down on WordPress's actions API, trusting it implicitly to load all of WordPress's core pieces & parts. It would open many doors to many unforeseen oddities while developers start dissecting all the ways things are tied together. It would also enable really cool external tools, like REST API drop-ins that can `SHORTINIT` WordPress if auth is missing, or WP CLI commands that can `die()` literally anywhere in the stack after they've done what they need to do.
This is something I've wanted in WordPress since 2006 having seen similar in other libraries, and even old BackPress & bbPress gave nods and hints to back in the day.
I'm also happy to give this a first patch if it's helpful to see visually the destruction it causes, or guide someone else along my vision for this if someone is willing and able to see it through before I am. <3" johnjamesjacoby
Future Releases 41710 optionally obtain WP_* configuration constants from the environment Bootstrap/Load 4.8.1 normal normal Awaiting Review enhancement new dev-feedback 2017-08-23T04:51:51Z 2022-11-02T12:58:26Z "Although hardcoding strings inside a configuration is the traditional way to setup applications, having smooth configurations values is sometimes needed.
The context of rising CI/virtualization/automated WP deployments increases the need of '''provisioning''' WP configuration (setup and adjunst DB credentials/debug-mode/site-url/... in an easy and flexible manner).
wp-config.php currently imposes harcoding string values in a PHP-formatted regular text file. No file override, no override of the source of the values.
This creates [https://github.com/docker-library/wordpress/blob/master/docker-entrypoint.sh#L110 coding] [https://github.com/wp-cli/scaffold-command/blob/master/templates/install-wp-tests.sh#L111 horrors] where people almost invent sed/awk-based PHP macro templating systems to simply configure a WP instance.
The fact that wp-config.php uses PHP-format rather than ini/yaml is '''not''' the issue.
The issue is that the current configuration does not offer the possibility of environment indirection.
(the other ""issue"" being that developers are reluctant to create a modified copy of wp-config-sample.php {{{getenv()}}}-based, maybe to be future-proof in case of wp-config.php changes, maybe to respect user-provided changes)
In the Unix world, environment has been the traditional and flexible way to transmit information to child processes.
Is there any blocking wp-config.php from fetching some or all of its user-defined constants from the environment out of the box?
Would maintainers consider such an enhancement?
Some suggestions (among many possible others):
1. fetch from {{{getenv()}}} if {{{wp-config.php}}} is absent
2. fetch from {{{getenv()}}} if mandatory values of {{{wp-config.php}}} values are empty
3. fetch from {{{getenv()}}} even if {{{wp-config.php}}} values are empty
4. load {{{wp-config.$HOSTNAME.php}}} if present
5. load {{{wp-config.{PHP_SAPI}.php}}} if present
6. provide (and maintain) a {{{wp-config-env-sample.php}}} {{{getenv()}}}-based
7. ...
[https://wordpress.org/support/topic/implement-env-variables-for-wp-config/ related forum post]" drzraf
Future Releases 49509 Proposal: support Server-Timing in core Bootstrap/Load normal normal Awaiting Review feature request new dev-feedback 2020-02-25T08:00:03Z 2021-01-12T10:15:52Z [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing Server-Timing] is a new HTTP header to measure server performance. Would be a very useful tool in maintenance mode. Oreolek
Future Releases 39237 PHPunit coverage reports fail if the is out to the stdout or header Build/Test Tools normal normal Future Release defect (bug) new dev-feedback 2016-12-11T18:03:15Z 2020-03-21T23:17:25Z "trying to get the coverage report to work :-)
https://phpunit.de/manual/current/en/textui.html
and their error due to the ech statements in the phpunit `install.php` and `bootstrap.php`
i.e.
{{{#!php
comment->create(
$comment_args
);
}}}
`$new_unapproved` will now contain a comment ID as an integer.
This integer is expected to be included in a list retrieved via the [https://developer.wordpress.org/reference/functions/get_comments/ `get_comments()`] function and filtered via [https://developer.wordpress.org/reference/functions/wp_list_pluck/ `wp_list_pluck()`].
Based on these two tests, the `comment_ID` as returned in the array retrieved via `get_comments()` is a string, not an integer.
So the questions for these two tests are:
* Should the `comment_ID` returned by `get_comments()` be a string or an integer ?
* If the `get_comments()` function should remain unchanged, should the TestCase::factory()->comment->create()` method be adjusted to return a string for the ID value instead of an integer ?
* If the answer to both the above questions is ""no"", no further action is needed once the proposed commit mentioned above has been committed.
=== `WP_Test_REST_Post_Meta_Fields::test_set_value_multiple_custom_schema()` and `WP_Test_REST_Term_Meta_Fields::test_set_value_multiple_custom_schema()`
These two tests both update the post meta of a WP post via a REST API POST request.
The data to be set is passed as integers:
{{{#!php
array(
'test_custom_schema_multi' => array( 2, 8 ),
),
);
$request->set_body_params( $data );
$response = rest_get_server()->dispatch( $request );
}}}
The test subsequently requests the post meta information via a call to [https://developer.wordpress.org/reference/functions/get_post_meta/ `get_post_meta()`] and ensures that the returned array contains both values.
The values returned in the array from `get_post_meta()`, however are ''strings'', not integers.
So the questions for these two tests are:
* Where does the type change from integer to string happen ?
* Is the data when set via the REST API being saved correctly ?
* Does the Core code need to change or is the test update correct ?
In this case, I suspect the type change ''may'' be due to the fact that all data received from `$_POST` will always be in string format, however, the handling of these API requests should be investigated to be sure.
" jrf
Future Releases 54420 Tests: Mock REST API remote requests hellofromTonya Build/Test Tools normal normal Future Release defect (bug) reopened dev-feedback 2021-11-11T15:43:01Z 2022-10-10T13:18:47Z "Recent timeout failures ([https://github.com/WordPress/wordpress-develop/runs/4174016878?check_suite_focus=true see GitHub failed job]) of specific REST API tests show some tests are not mocking the remote requests. These requests can be mocked with a callback hooked into `'pre_http_request'` filter.
Each test should be reviewed to determine:
* If a remote request to a live API endpoint is being made
* If those specific requests should/can be mocked
* and then mocks created for each in its context of the condition under test
Ideally a mocking strategy could be created to abstract the heavy lifting and make it easier for these tests to mock the requests." hellofromTonya
Future Releases 55466 Build Tools: create Docker test environment that use non-direct filesystems Build/Test Tools normal normal Future Release enhancement new dev-feedback 2022-03-26T04:03:21Z 2023-02-02T04:53:27Z "Recently when writing a PR for #51170, @costdev and I, mostly Colin as I let him do this, had a somewhat difficult time setting up a testing environment that used FTPext or FTPsockets.
It would be awesome if this could be built into a Docker image for testing with WordPress-develop.
If this can be done it might be worthwhile to setup environments for the other file system methods too." afragen
Future Releases 24879 Sourcemaps should be provided for use with minified javascript libraries Build/Test Tools normal normal Future Release enhancement new dev-feedback 2013-07-29T15:49:33Z 2017-02-19T10:42:42Z "Sourcemaps make it possible to debug minified files.
Supported in Chrome:
https://developers.google.com/chrome-developer-tools/docs/javascript-debugging#source-maps
Landing in Firefox in v23:
https://wiki.mozilla.org/DevTools/Features/SourceMap
When this feature is enabled, the Chrome console currently shows a 404 when the script specifies a sourcemap file and it isn't found." jblz
Future Releases 60407 WP Starter Page is a source for HACKERS Build/Test Tools 6.4.3 normal critical Awaiting Review feature request new dev-feedback 2024-01-31T21:40:44Z 2024-01-31T21:40:44Z "I am convinced that the WP starter page, with the BOLG option is the source for all and any hacker to hack a site. Prove me wrong: Example, I have had my website online for 20 years, I have used several different website dev. Apps. I have never been hacked.
After setting up WP on my sites; 3 to be exact, I soon started to get spam emails from the comment section of the blog.
I am not a website programmer, btw, I had no idea where these comments. were being submit, I looked at the pages on my dashboard and there was nothing there. I kept looking, granted not a lot because it didn't concern me. But the SPAM was annoying and often inappropriate. Eventually when my site(s) were hacked and shut down, I found the hidden blog page, and deleted it. Because my sites were shut down this was a challenge. I still continued to get SPAM even after shutting down the blog comment page. My other 2 sites were still getting comments. It took a bit of sleuthing to find this hidden blog page on each site, You cant edit it either, WP has embedded the comment section. Eventually I deleted them all, but I still had 3 hacked sites. recently I deleted one of the site and reinstalled WP. And guess what, even though I though I deleted the WP Blog page, I started to immediately get SPAM and the site was hacked. OK point being SHUT DOWN THE AUTOMATICALLY AND HIDDEN BLOG PAGE, SHUT DOWN THE COMMENTS UNLESS YOUR POINT IS FOR US TO GET HACKED!!! I AM CONVINCED THIS IS A SERIOUS PROBLEM THAT YOU HAVE TO FIX. Your welcome to drop me an email, that hopefully isnt spam, to let me know you are fixing this gateway for hackers. Thanks Jimmy" dpmatlosz
Future Releases 52610 Consider removing many of the default test group exclusions Build/Test Tools normal normal Awaiting Review task (blessed) new dev-feedback 2021-02-22T19:57:39Z 2021-04-29T15:46:12Z "When the tests are run with `composer test`, the following groups are excluded:
* `ajax`
* `ms-files`
* `ms-required`
* `external-http`
When the tests are run with Multisite enabled with `composer test -- -c tests/phpunit/multisite.xml`, the following groups are excluded:
* `ajax`
* `ms-files`
* `ms-excluded`
* `external-http`
* `oembed-headers`
The `ms-required` and `ms-excluded` group exclusions are needed so that the Multisite-specific tests and single-site-specific tests don't run when they don't need to.
It's less clear why the other groups in these lists are excluded by default.
The `ajax` and `ms-files` groups are not slow, so excluding them for performance reasons doesn't make sense. I think the `ajax` exclusion should be removed from both the single site and Multisite configuration. The `ms-files` exclusion should be removed too because the tests in the `ms-files` group don't get registered on a non-Multisite test run so the exclusion is redundant.
The `external-http` tests are excluded because they are somewhat slow, taking around 10-15 seconds on GitHub Actions and around 40 seconds on my local, highly dependent on network connection speed. Let's keep these excluded by default.
The `oembed-headers` group is excluded by default because it requires Xdebug, however this is already covered by the `@requires function xdebug_get_headers` tag on the only test in this group, along with being in the `debug` group which runs separately on GitHub Actions. The `oembed-headers` group exclusion can be removed as it's redundant.
Here's my proposed new config for `phpunit.xml.dist`:
{{{
ms-required
external-http
}}}
and for `multisite.xml`:
{{{
ms-excluded
external-http
}}}" johnbillion
Future Releases 56525 "Twenty Eleven: Font-style issue of ""Add Citation"" text in Pullquote Block" Bundled Theme 6.0 normal normal Awaiting Review defect (bug) new dev-feedback 2022-09-07T08:18:14Z 2022-09-08T13:26:13Z "In Twenty Eleven Theme, when we add Pullquote block in editor side, We can see that the font-style of ""Add citation"" text is Italic. But when we see the same Pullquote block at front side, font-style for ""Add citation"" text is not reflected, It is display normal.
Steps to replicate:
1: Activate the Twenty Eleven Theme
2: Add Pullquote block
3: Enter some Text for ""Add quote""
4: Enter some Text for ""Add citation""
5: Save Page/Post
6: View the page/post at front side
For better understanding I provide video attachment link.
Video URL : https://share.cleanshot.com/yoxXVomU1svauo5FmF9G
Thanks" kajalgohel
Future Releases 56554 Twenty Eleven: Width issue in Button block Bundled Theme 6.0.2 normal normal Awaiting Review defect (bug) new dev-feedback 2022-09-12T08:14:21Z 2023-03-22T00:07:02Z "In Twenty Eleven Theme, when we add Button block in editor side and change the Width settings of Button, we can see that the Width is not reflected in editor side.
Steps to replicate:
1: Activate the Twenty Eleven Theme
2: Add Button block
3: Choose Width from Width settings
4: View the page/post at editor side
5: Save Page/Post
6: View the page/post at front side
For better understanding I provide video attachment link.
Video link: https://share.cleanshot.com/SPJat9VXVPA8lMQUfZlD
Thanks" kajalgohel
Future Releases 54120 Twenty Fifteen: Fixed table layout Bundled Theme normal minor Awaiting Review defect (bug) new dev-feedback 2021-09-14T10:44:27Z 2022-07-08T17:16:46Z "The CSS for Twenty Fifteen contains a line forcing fixed layout for tables:
{{{
table {
border-collapse: separate;
border-spacing: 0;
border-width: 1px 0 0 1px;
margin: 0 0 1.6em;
table-layout: fixed; /* Prevents HTML tables from becoming too wide */
width: 100%;
}
}}}
This causes unexpected behavior since you in Gutenberg have the option to select between a fixed or dynamic layout for table blocks, but this has no effect." Roenbaeck
Future Releases 39893 Twenty Seventeen Header Media: YouTube Embed Does Not Fill Screen Bundled Theme 4.7.2 normal normal Awaiting Review defect (bug) new dev-feedback 2017-02-16T18:47:31Z 2023-04-17T10:32:24Z "Hi.
I was really excited to see 2017 in action and thought a great deal of the video header feature, but my expectations were dashed when I realised that the promise of anamorphic images and videos automatically stretching to full screen in the header just did not materialise, despite using all the precautions, guidelines and recommendations suggested in the theme: 2000x1200 as per image, .mp4, etc. It seems that no matter what video link from YT I tried the image will stretch, but the video will not.
Is there a solution to this or is it just me?
You can see a brand new installation with no extra plugins, scripts or other potentially interfering code in the way, here: http://2ud.biz/dev/
Thanks in advance
" cingrosso
Future Releases 39740 "Twenty Seventeen: Allow child themes to use front-page.php when front page is set to ""Your Latest Posts""" Bundled Theme 4.7 normal normal Awaiting Review defect (bug) reopened dev-feedback 2017-01-30T19:54:05Z 2023-04-18T09:41:50Z "== What's Happening: ==
If a child theme of Twenty Seventeen has a `front-page.php` file, and the Reading settings are set to have ""Your Latest Posts"" as the front page, Twenty Seventeen's `twentyseventeen_front_page_template()` function, called on the `frontpage_template` filter, sets the template to an empty string instead of the child theme's `front-page.php`, so `index.php` gets used.
== What I expect: ==
I expect the child theme's `front-page.php` to be used if present, no matter what the Reading settings are for the front page, as [https://developer.wordpress.org/themes/basics/template-hierarchy/#front-page-display described in the codex]. This is the default behaviour.
== Relevant Code: ==
Here's TwentySeventeen's `twentyseventeen_front_page_template()` function, for reference:
{{{
/**
* Use front-page.php when Front page displays is set to a static page.
*
* @since Twenty Seventeen 1.0
*
* @param string $template front-page.php.
*
* @return string The template to be used: blank if is_home() is true (defaults to index.php), else $template.
*/
function twentyseventeen_front_page_template( $template ) {
return is_home() ? '' : $template;
}
add_filter( 'frontpage_template', 'twentyseventeen_front_page_template' );
}}}
Link to [https://core.trac.wordpress.org/browser/trunk/src/wp-content/themes/twentyseventeen/functions.php?rev=40024#L530 location in code viewer].
" johnnyb
Future Releases 55180 Twenty Seventeen: Comments not showing up on the frontpage Bundled Theme 5.9 normal normal Awaiting Review defect (bug) new dev-feedback 2022-02-16T20:13:32Z 2023-06-07T17:56:39Z "Hi there,
I'm not able to find any further information on this, but it looks like the comments aren't showing up on a static homepage with Twenty Seventeen.
I have tested this with the latest update of WordPress(5.9) and the last version of the theme.
**Steps to reproduce**
1. Switch theme to twenty seventeen
2. Enable ""Allow comments"" within the discussion tab on the sidebar on the homepage.
3. Check the page and search for the comments area.
Original request: https://github.com/Automattic/themes/issues/5545
If this is intended, I found this as a potential workaround: https://wordpress.stackexchange.com/questions/268305/display-comments-on-homepage-of-twenty-seventeen-theme" robertghetau
Future Releases 39253 Twenty Seventeen: Head Image Quality Issue Bundled Theme 4.8 normal normal Future Release defect (bug) new dev-feedback 2016-12-12T20:51:19Z 2020-02-24T19:15:48Z "A question about the Twenty Seventeen Theme's Head Image, it is really cool but the image is not in the best position on iOS Safari and image quality drops too...
[[Image(https://holywhite.com/wp-content/uploads/2016/12/Evernote-Camera-Roll-00281213-053634.png)]]
But if I turn the phone around...
[[Image(https://holywhite.com/wp-content/uploads/2016/12/Evernote-Camera-Roll-00281213-053635.png)]]
Looking much better, refresh it and rotate again?
[[Image(https://holywhite.com/wp-content/uploads/2016/12/Evernote-Camera-Roll-00281213-053636.png)]]
Wow the shiny picture comes back...
P.S. Is it possible to set the align of Head Image on mobile? So I can choose which part of the picture I mostly wanna show." richardevs
Future Releases 42358 Twenty Seventeen: Social Links menu items in footer get hidden when used as child Bundled Theme 4.9 normal normal Awaiting Review defect (bug) new dev-feedback 2017-10-27T13:44:04Z 2021-08-21T23:30:57Z "Inside customizer if I reorder Social Menu Items as Children while they are on footer, child items are not visible any more and no way to access them! But they come up as dropdown sub menu item(s) when placed in Top menu. Screenshot attached.
I think when Footer menu is checked menu option to create a parent-child kind of ordering should not be available. However, if both options (Header and Footer) are checked, parent-child ordering needs to be there, but it should only in header menu only and leaving all footer menu items visible." subrataemfluence
Future Releases 60012 Twenty Sixteen: Pullquote block Appearance setting is not working properly Bundled Theme normal normal Awaiting Review defect (bug) new dev-feedback 2023-12-05T09:37:35Z 2024-01-02T20:32:03Z "The appearance of PullQuote blocks is not working correctly in Twenty-Sixteen. Though there are many options like semi-bold, medium, italic, etc. it seems only two things get applied no matter what I choose. It's either normal, bold or extra bold. And the extra bold is just as same as Black. No changes with any kind of italic.
Steps to reproduce the issue:-
1. Activate Twenty Sixteen theme.
1. Choose Pullquote block.
1. Write something in Citation
1. Change the appearance
To understand properly, here's the video: https://monosnap.com/file/kMF24nu84Y0Uj17dSOl11XSbNCslpy" ashikur698
Future Releases 54368 Twenty Twenty-One: Visibility issue on Input field of search widget in dark mode Bundled Theme normal normal Future Release defect (bug) new dev-feedback 2021-11-03T12:50:08Z 2023-03-25T17:44:38Z When the dark mode is on, the search input field is not that visible on the twenty twenty-one theme. https://imgur.com/a/bEEjM09 amin7
Future Releases 52185 Twenty Twenty-One: background image does not work with dark mode Bundled Theme 5.6 normal normal Awaiting Review defect (bug) new dev-feedback 2020-12-28T23:29:48Z 2020-12-29T00:58:24Z "I noticed that if I add a background image by going to Appearance > Customize > Background Image > Add image and turn on the dark mode the website changes the text to white but it does not have a dark background. Instead, it shows that background image which is hard to read white text on.
I was trying to find a workaround where if it is in dark mode then make the background image either disappear or darken.
I do not see anywhere to attach a file so it may not be with this ticket.
Michael" WebsThatRock
Future Releases 60778 Twenty Twenty-Three Theme: The Quote block style is not working as expected. Bundled Theme normal normal Awaiting Review defect (bug) new dev-feedback 2024-03-15T07:13:01Z 2024-03-15T10:06:33Z "Hello,
I have reviewed and found that the ""**Quote**"" block style is not working as expected into the **Twenty Twenty-Three** theme.
Here, I have attached video:
Issue: [https://share.cleanshot.com/78X9q3xkwy0kkT5HvHFL]
Thanks," viralsampat
Future Releases 56949 Twenty Twenty-Three: Screenshot of the new default theme Bundled Theme 6.1 normal normal Awaiting Review defect (bug) new dev-feedback 2022-11-02T04:02:28Z 2023-03-20T16:54:17Z "The screenshot of the new default theme TT3 is showing the backend editor, not the front view of it. Our theme guideline is,
* The screenshot must not look like an advertisement. The reviewer can subjectively ask you to change screenshots if they find that it is not appropriate.
https://make.wordpress.org/themes/handbook/review/required/
It seems that showing Global Styles in the screenshot is like an advertisement of the feature. I'm wondering if other themes can also update the screenshot showing Global Styles or Editor. " kafleg
Future Releases 59706 Twenty Twenty: Latest Posts block colors and padding Bundled Theme 6.3.2 normal normal Awaiting Review defect (bug) new dev-feedback 2023-10-23T11:59:17Z 2023-10-25T22:19:11Z "Hello Team,
I have worked on the **""Twenty Twenty""** theme and found that the ""Twenty Twenty"" theme contains an issue for the **""Latest Post""** block. The text color does not change when we try to select text color from block settings.
Also, When we select the background color, the padding is added in admin, But in the front end, the post text displays a sticky, The padding is not added for the front end.
Here, I have provided the issue video:
Issue: [https://share.cleanshot.com/5mkR0sVQ25VYM6xp434Y]
Thanks," viralsampat
Future Releases 55815 Twenty-Twenty-Two: Post Format Gallery Bundled Theme normal normal Awaiting Review defect (bug) new dev-feedback 2022-05-25T06:01:35Z 2022-06-17T18:52:44Z "Twenty-Twenty-Two does not include gallery columns classes for the frontend. Another default theme has this class and it working fine for them.
{{{
.gallery-columns-2 .gallery-item {
max-width: 50%;
}
.gallery-columns-3 .gallery-item {
max-width: 33.33%;
}
.gallery-columns-4 .gallery-item {
max-width: 25%;
}
.gallery-columns-5 .gallery-item {
max-width: 20%;
}
.gallery-columns-6 .gallery-item {
max-width: 16.66%;
}
.gallery-columns-7 .gallery-item {
max-width: 14.28%;
}
.gallery-columns-8 .gallery-item {
max-width: 12.5%;
}
.gallery-columns-9 .gallery-item {
max-width: 11.11%;
}
}}}
" mukesh27
Future Releases 60669 Twenty-Twenty-Two: The search block does not look the same same in the editor and the front. Bundled Theme 6.4.3 normal normal Awaiting Review defect (bug) new dev-feedback 2024-03-01T10:34:22Z 2024-03-01T15:42:09Z "Hello,
I have reviewed and found that the ""Search Block"" border does not appear in front end.
Here, I have attached its screenshots.
Environment info
Device: Macbook M1
OS: 14.3.1 (23D60)
Browser: Google Chrome
Version 121.0.6167.184 (Official Build) (arm64)
WordPress version: 6.5-beta2 running, Gutenberg 17.8.0, Theme active: Twenty-Twenty-Two.
Thanks," viralsampat
Future Releases 58497 when the content of a page is structured into two columns, it causes the menu bar background to change unexpectedly. Bundled Theme 6.2.2 normal normal Awaiting Review defect (bug) new dev-feedback 2023-06-08T23:27:10Z 2024-02-01T09:31:25Z "Not sure how to put this one in to words.
1. I have a nav bar at the top of twenty twenty three. Background color is set works fine.
2. yesterday I tried out adding a two column block in a page content area on edit page. (Still learning the new flow. getting better at it but still a learning curve).
3. about half of the nav bar on these pages with columns in the content area turns white. Not all of the nave bar, but half.
4. Confused me and looked for css solution before realizing it was the same template working fine on other pages and then realized it was the column.
5. Removing the column from the page content area fixes the issue.
" noelhefele
Future Releases 60064 Edit no-js CSS in bundled themes Bundled Theme normal minor Awaiting Review enhancement new dev-feedback 2023-12-13T21:56:39Z 2024-02-15T06:38:38Z "The CSS directive in `style.css` of the Twenty Fifteen theme
`.no-js .main-navigation ul ul`
should be altered to this
`html.no-js .main-navigation ul ul`
As other plugins like buddypress add their own `no-js` classes to the `body` which can cause conflicts. I have raised this with them directly:
#buddypress9033
This could be widened into a broader ticket on a standard way of adding `no-js` classes that themes or plugins could follow as right now some add it to the `html` and some to the `body` class" shawfactor
Future Releases 49175 Optimize font-loading techniques for all WordPress Twenty themes Bundled Theme 5.3.2 normal normal Awaiting Review enhancement new dev-feedback 2020-01-12T08:09:55Z 2023-02-25T20:47:29Z "Right now, I'm using the Twenty Seventeen theme for several websites and the Google Font Libre Franklin, included in that theme, is loaded like this:
{{{
}}}
For performance reasons, given as this is a font which already has fallbacks defined in the {{{body}}} property, it'd be better to add {{{display=swap}}} and {{{rel=preload}}}
to this link. Few links:
[https://developers.google.com/web/updates/2016/02/font-display]
[https://developers.google.com/web/updates/2016/03/link-rel-preload]
[https://addyosmani.com/blog/google-fonts-font-display/]
These small steps will **massively increase performance and PageSpeed scores for every core theme implementing these changes** for their Google Fonts. " mvanturnhoutziggonl
Future Releases 58127 Twenty Eleven: Add escaping as per the WordPress VIP standards Bundled Theme normal normal Awaiting Review enhancement new dev-feedback 2023-04-13T14:48:47Z 2023-06-09T17:37:15Z "In the Twenty Eleven theme folder, the file named search.php has improper escaping on line number 21 as per the VIP standard.
Issue screenshot:
[https://share.cleanshot.com/3rPjnj33GHPcFfyL0rKh]
The present line of code
{{{
printf( __( 'Search Results for: %s', 'twentyeleven' ), '' . get_search_query() . ' ' );
}}}
Improve line of code:
{{{
printf( esc_html__( 'Search Results for: %s', 'twentyeleven' ), '' . esc_html( get_search_query() ) . ' ' );
}}}" himshekhar07
Future Releases 45911 Twenty Nineteen: Add archive descriptions Bundled Theme 5.0.2 normal normal Awaiting Review enhancement new dev-feedback 2019-01-10T16:56:53Z 2023-04-17T11:02:28Z "Originally reported by @dannycooper in Twenty Nineteen's GitHub repo:
Archive descriptions weren't originally included in the theme's design, but it's been suggested they be added now.
@kjellr created a mockup of what they should look like.
Original issue here: https://github.com/WordPress/twentynineteen/issues/256" laurelfulford
Future Releases 45945 Twenty Nineteen: Consider adding a filter for the featured image color filter functionality. Bundled Theme 5.0.3 normal normal Awaiting Review enhancement new dev-feedback 2019-01-11T19:35:36Z 2023-06-21T23:03:26Z "Originally raised by @hvianna and @grapplerulrich in this GitHub thread:
https://github.com/WordPress/twentynineteen/issues/722
To make it easier for child themes to disable the featured image filter built into Twenty Nineteen, it might be helpful to add a filter for that functionality. Something along the lines of:
{{{
function twentynineteen_image_filters_enabled() {
return apply_filters( 'twentynineteen_image_filters_enabled', 0 !== get_theme_mod( 'image_filter', 1 ) );
}
}}}" kjellr
Future Releases 57024 Twenty Twenty-Three: Randomly apply a style variation on activation Bundled Theme 6.1 normal normal Awaiting Review enhancement new dev-feedback 2022-11-07T19:28:49Z 2022-11-17T19:20:23Z "In addition to the default base styling, Twenty Twenty-Three comes with 10 additional style variations.
When activating for the first time, an interesting way to showcase what the theme has to offer would be to randomly apply one of the 11 style variations." desrosj
Future Releases 48804 Twenty Twenty: Attach template parts with actions instead of directly including Bundled Theme 5.3 normal normal Awaiting Review enhancement new dev-feedback 2019-11-26T21:42:41Z 2019-11-26T21:54:34Z "Originally requested on GitHub by @thomasplevy
https://github.com/WordPress/twentytwenty/issues/947
**The Problem**
Not all custom post types are created equal. Some custom post types are like blog posts where meta information, post author information, and navigation between post types makes sense. Other custom post types behave more like native pages where navigation between pages is undesirable.
This is a pretty generic and blanket statement and it's not always true. Custom post types are custom and the requirement differ greatly depending on the developer creating them.
I am working to add Twenty Twenty theme support for my plugin [LifterLMS](https://github.com/gocodebox/lifterlms) and I have several custom post types which I'd like to be able to remove author and custom post type navigation for.
Given the fact that custom post types utilize template at `template-parts/content.php` it is currently only possible for me to remove the navigation and author information by using custom CSS.
The meta information I am able to disable using the filter `twentytwenty_disallowed_post_types_for_meta_output`.
**Proposed Solution**
I'd like to modify the template in question to either be wrapped in a filter which allow the inclusion of `template-parts/entry-author-bio.php` and `template-parts/navigation.php` to be disabled via a filter.
For example:
https://github.com/WordPress/twentytwenty/blob/dea9290e7ca3d38b7067c3b7107787db6554249a/template-parts/content.php#L68-L72
{{{
if ( is_single() ) {
get_template_part( 'template-parts/navigation' );
}
}}}
Could become:
{{{
if ( is_single() && apply_filters( 'twentytwenty_display_single_navigation', true ) ) {
get_template_part( 'template-parts/navigation' );
}
}}}
If this does seem like an acceptable addition I'd be more than happy to write and submit the PR but I didn't want to spend time without a blessing from a core contrib or maintainer first.
Thank you for considering this!" ianbelanger
Future Releases 57978 Twenty Twenty: Separator block does not work well with gradients Bundled Theme normal normal Awaiting Review enhancement new dev-feedback 2023-03-24T10:31:49Z 2023-06-10T06:53:38Z "Steps to reproduce the issue :-
1. Download WordPress version beta version.
2. Choose Twenty Twenty theme.
3. Choose separator block.
4. Apply background color to separator block.
5. Now you can able to see that background color overlaps.
Because of that design not looks as per requirements.
I have attached video for better understanding.
Video URL :- WordPress version beta version.
https://share.cleanshot.com/Y9t7PKCBmJSB8dBW1hH4" nidhidhandhukiya
Future Releases 51858 Twenty Sixteen: Add Telegram and Whatsapp support to Social Media Menu Bundled Theme normal normal Awaiting Review feature request new dev-feedback 2020-11-24T02:29:03Z 2021-10-25T17:50:26Z "This is a follow-up to #43999.
Please, add Telegram and Whatsapp support to Social Media Menu on Twenty Sixteen bundled theme. Support for these icons were added to Twenty Seventeen and Twenty Twenty. Can it be added to Twenty Sixteen as well?
Thanks!" Valery Kondakoff
Future Releases 48800 Twenty Twenty: Conditional loading of language/locale specific css and php files Bundled Theme 5.3 normal normal Awaiting Review feature request new dev-feedback 2019-11-26T20:52:30Z 2019-11-26T22:01:42Z "First reported on GitHub by @nukaga
https://github.com/WordPress/twentytwenty/issues/970
In the current site design, the title is too large in Japanese and Chinese.
The center alignment is also extraordinary.
https://github.com/WordPress/twentytwenty/issues/118#issuecomment-541292567
https://github.com/WordPress/twentytwenty/issues/118#issuecomment-538964579
Solution
Is it possible to separate the title and body CSS in several languages?" ianbelanger
Future Releases 48779 Twenty Twenty: Copyright and WordPress as text widget Bundled Theme 5.3 normal normal Awaiting Review feature request new dev-feedback 2019-11-24T11:46:32Z 2022-07-08T16:08:09Z "I would request to have all content elements easily editable. The only elements I couldn't change from the wp-admin interface were the footer copyright and wordpress text. I would like to change the Copyright to make it linkable and add creative commons to it. Now I had to do it a technical way by child theming, but not everyone is that technical.
Custom HTML (copyright) & Text widgets (wordpress link) with a third footer or so could be a solution? Only disadvantage is that WordPress doesn't support PHP by default for security reasons so you can't add the actual site name by code. But a lot of sites doesn't use their company name as site name so it can also be some lorum ipsum text.
e.g. © My Company
" jurjendevries
Future Releases 29247 Crucial caches are not cleared when deleting site Cache API normal normal Future Release defect (bug) new dev-feedback 2014-08-18T03:10:13Z 2022-07-08T15:07:55Z "`clean_blog_cache` clears a bunch of caches, but does not clear any of the options caches. The worst of these is the `alloptions` cache, which allows some behaviour to continue working on deleted sites.
For example, `switch_to_blog` will continue to work without error, whereas if the cache is cleared, a `Table 'wordpress.{$prefix}_options' doesn't exist` error will be generated (helping in debugging).
Another one that's problematic is the `is_blog_installed` cache.
On that note, is there a reason we aren't checking site existence in `switch_to_blog`?
(Still investigating this one.)" rmccue
Future Releases 51372 Race condition causes an autoload option to leak outside of alloptions Cache API 2.2 normal normal Awaiting Review defect (bug) new dev-feedback 2020-09-22T07:55:45Z 2022-06-09T00:26:17Z "There is a problem with `add_option()` which causes an autoloaded item to leak outside of the `alloptions` cache key and into its own item under the `options` group.
This becomes pretty broken with persistent object caching, because it leads to a state, where the option is stuck under its own cache key in the `options` group, and is unable to be deleted or updated, while the underlying database value is completely gone.
I've been able to reproduce this in multiple ways, with persistent object caching turned on or off. The backend I used in my testing is [https://github.com/Automattic/wp-memcached wp-memcached], but it should be reproducable with any other backend.
The first and easiest way is to just add an `error_log()` to wp-includes/options.php in `get_option()` right before `wp_cache_add()` that writes to the `options` group:
{{{
function get_option() {
...
if ( is_object( $row ) ) {
...
if ( $option == 'foo' ) { error_log( 'leaked' ); }
wp_cache_add( $option, $value, 'options' );
}}}
Now in a simple plugin we can start writing the `foo` option, like this:
{{{
add_action( 'init', function() {
delete_option( 'foo' );
add_option( 'foo', 'bar' );
die();
} );
}}}
The `autoload` flag defaults to `true`, so in this scenario the `foo` item should always end up in the `alloptions` cache key. However, if you run this in multiple parallel threads (with `ab` for example), you'll see the `leaked` message in your error log, which means `foo` has been written to the `foo` key under the `options` group.
{{{
ab -c 100 -n 1000 http://localhost/
}}}
Another way to reproduce this is to turn on a persistent object caching plugin, visit the site once to trigger a single `add_option()`, then check some of site options and cache keys:
{{{
wp option get foo # says bar
wp cache get foo options # error, because foo is autoloaded and stored in alloptions
wp cache get alloptions options # big array with foo => bar at the end
}}}
You can also confirm the database value is there:
In MySQL:
{{{
SELECT * FROM wp_options WHERE option_name = 'foo';
+-----------+-------------+--------------+----------+
| option_id | option_name | option_value | autoload |
+-----------+-------------+--------------+----------+
| 2403 | foo | bar | yes |
+-----------+-------------+--------------+----------+
}}}
Looks good so far.
Now run the same `ab` test with concurrent requests, and check again.
{{{
wp option get foo # says bar
wp cache get foo options # says bar, because the value leaked from alloptions into its own item
wp cache get alloptions options # big array, but NO foo => bar
}}}
And finally, in MySQL shell:
{{{
SELECT * FROM wp_options WHERE option_name = 'foo';
Empty set (0.00 sec)
}}}
At this point the value is gone, and only remains as a stale item in Memcached under the wrong key. Deleting, adding, or updating the item will not work:
{{{
$ wp option delete foo
Warning: Could not delete 'foo' option. Does it exist?
$ wp option add foo bar
Error: Could not add option 'foo'. Does it already exist?
$ wp option update foo baz
Error: Could not update option 'foo'.
}}}
Flushing Memcached (or having the key evicted) will ""fix"" the stalemate, but will cause the data to be lost forever.
Here's a brief overview of what could happen inside `add_option()` in two concurrent threads:
{{{
Thread 1: add_option( 'foo', 'bar' );
Thread 2: add_option( 'foo', 'bar' );
1: .. get_option( 'foo' ) // false
1: .. INSERT INTO // true
2: .. get_option( 'foo' )
2: .. .. isset( $alloptions[ 'foo' ] ) // false
2: .. .. ->get_row()
2: .. .. wp_cache_add( 'foo', 'bar', 'options' ); // LEAKED
1: $alloptions[] = ...
1: wp_cache_set( 'alloptions', $alloptions, 'options' );
}}}
This is then followed by the next `delete_option()` call, which successfully deletes the data from the database and the `alloptions` key, so then future calls to `add_option()` will fail, because `get_option()` will always return the data from cache.
I'm not sure about the best way to fix it. Here are a few thoughts:
* Maybe `add_option()` should not rely so heavily on `get_option()`, and do its own checks with cache functions, depending on the `autoload` function argument
* `delete_option()` could clear both the `alloptions` array item as well as the `$option` key in the `options` group
* In `get_option()` if we were unable to retrieve the data from `$alloptions` and option cache, maybe query the `autoload` column together with `option_value`, before just assuming it's a no:
{{{
$row = $wpdb->get_row( $wpdb->prepare( ""SELECT option_value, autoload ...
}}}
Then handle the cache addition differently, based on that autoload flag. This sounds the most reasonable to me, because this is exactly the place where the item is being put into the wrong key, which causes the other problems.
I haven't actually tested this with 2.2, but it seems like that's where the `alloptions` vs `options` cache keys appeared inside `get_option()` right around r4855." kovshenin
Future Releases 57366 WP 6.1 - Performance Regression Cache API 6.1.1 normal normal Awaiting Review defect (bug) new dev-feedback 2022-12-21T12:45:49Z 2023-04-20T13:25:04Z "Hi team,
I am experiencing some significant performance regression when I upgrade from 6.0 to 6.1 (and 6.1.1). Page load time roughly triples across the site.
I do not have a profiler running but using Query Monitor I can see a significant increases in object cache hits (14k to 110k). I understand this is partially expected due to the caching improvements.
I am running a fairly large (170k posts) site with Woocommerce and a number of plugins.
I am happy to provide more detailed analysis but not sure what is the best profiling tool or method to understand where the regression is coming from. If you can provide some guidance I will try to collect more data.
Thanks,
Jason" galapogos01
Future Releases 44445 wp_cache_init() and WP_Object_Cache constructor has a memory leak Cache API 2.2 normal normal Awaiting Review defect (bug) new dev-feedback 2018-06-24T05:00:47Z 2019-05-03T17:45:12Z "When calling `wp_cache_init()` repeated in unit testing the WP_Object_Cache::__contruct() repeatedly registers '__destruct' as a shutdown function, and each time it does it leaks memory.
There is a @todo comment above the `register_shutdown_hook()` that says the following so I would assume that this is no longer needed and we could just delete the line with the register_shutdown_hook()?
''This should be moved to the PHP4 style constructor, PHP5 already calls __destruct()''
I will upload a patch to delete the list, and a different patch to only call `register_shutdown_hook()` once, depending on what is appropriate." MikeSchinkel
Future Releases 45471 Allow caching of parse_blocks results francina Cache API 5.0 normal normal Future Release enhancement assigned dev-feedback 2018-12-03T12:08:15Z 2023-03-29T14:48:39Z "A *lot* of Gutenberg implementations are going to have to parse the blocks in a post. Core itself already parses the blocks on output, but also when trimming an excerpt in `excerpt_remove_blocks`. All this parsing is done with `parse_blocks`. Unfortunately, the only thing passed to `parse_blocks` right now is a string, with no way of caching it.
My suggestion would be to add a cache key to the `parse_blocks` function, which defaults to false. I've attached a proposed patch to the function, if we agree on this we could then look at how to implement this in core itself." joostdevalk
Future Releases 56060 Implement wp_cache_replace_multiple() – and related WP_Object_Cache method Cache API normal normal Future Release enhancement new dev-feedback 2022-06-24T02:50:19Z 2023-04-20T17:53:59Z "See: #20875, #54574.
See also: https://github.com/WordPress/wordpress-develop/pull/2018#discussion_r799643985
🫠
I would like to replace multiple values in a cache, but not `add` or `set` them if they do not exist.
In my experience and understanding, `replace()` doesn't get much love because `_exists()` may be impossible to implement in certain backends – specifically (or especially) when `$group` is empty.
My current situation is essentially juggling multiple backends, and only wanting to replace multiple values if they exist on one server and not add or set them until some other unrelated things happen.
I went to call `wp_cache_replace_multiple()` and thought my IDE had deceived me when it wasn't autocompleting. Alas! Alas, I say!
I can handle this In my own drop-in, and I can account for it in my own codes, but I think perhaps it's worth reconsidering this in core for the sake of parity with everything else.
Thoughts?" johnjamesjacoby
Future Releases 45417 Lack of actions when wp_cache_flush is called Cache API normal trivial Future Release enhancement new dev-feedback 2018-11-26T14:08:25Z 2018-12-02T22:48:40Z "The function definition of wp_cache_flush doesn't have a do_action call, and neither does WP_Object_Cache->flush.
https://core.trac.wordpress.org/browser/tags/4.9.8/src/wp-includes/cache.php#L97
https://core.trac.wordpress.org/browser/tags/4.9.8/src/wp-includes/cache.php#L498
I want to be able to run additional code whenever the object cache is flushed but currently I can't.
Fixing this should be as trivial as adding
{{{
do_action('wp_cache_flush');
}}}
to the function definition of wp_cache_flush.
I don't care about the name of the action or if it runs before or after the flush, I'd just like to have this functionality in the core. Preferably before WordPress 6.0. " k1sul1
Future Releases 11856 URL for 1st comments page is not canonical markjaquith Canonical 3.0 normal normal Future Release defect (bug) new dev-feedback 2010-01-10T19:17:42Z 2023-10-19T20:04:59Z "When WP generates URL for comments, it always includes comments page number. It should not do this when URL is for 1st comments page - in this case post URL is sufficient.
WP should also redirect to canonical URL version when someone will try to load URL like site.com/some-post/comment-page-1." sirzooro
Future Releases 36420 A more forgiving redirect guesser Canonical normal normal Awaiting Review enhancement new dev-feedback 2016-04-05T14:13:37Z 2017-08-16T19:53:17Z "
I would like the redirect guesser to be more forgiving using SOUNDS LIKE . Here's a small suggestion:
{{{#!php
function redirect_guess_404_permalink() {
global $wpdb;
if ( get_query_var('name') ) {
$where = $wpdb->prepare(""(post_name SOUNDS LIKE %s"", $wpdb->esc_like( get_query_var('name') ) );
$where .= $wpdb->prepare("" OR post_name LIKE %s)"", $wpdb->esc_like( get_query_var('name') ) . '%');
....
}}}
It would be even better if it could be implemented using levenstein distance if that is not too heavy on resources.
https://github.com/fza/mysql-doctrine-levenshtein-function " gorillum
Future Releases 60693 """Previously approved comment"" for logged out users bug" Comments 6.4.3 normal normal Awaiting Review defect (bug) new dev-feedback 2024-03-05T14:30:41Z 2024-03-07T17:00:03Z "When ""Comment author must have a previously approved comment"" is checked in the discussion settings, comments made by registered users who are logged out, go to moderation every time. The check comment function looks for previous comments under their user id but if they have only commented while logged out, no id is recorded. This bug has caused our users and our team major frustration. Can someone please address? Thanks!" jmorti
Future Releases 57343 HTML in comments is automatically deleted Comments 6.1.1 normal major Awaiting Review defect (bug) new dev-feedback 2022-12-16T16:26:22Z 2023-02-09T11:38:05Z If I add a photo, or a class for a link, or something else, they're immediately removed when I save them. locksoft
Future Releases 55309 Incorrect post comment count after deleting comment with replies Comments 5.9.1 normal normal Awaiting Review defect (bug) new dev-feedback 2022-03-03T16:29:07Z 2022-03-03T17:50:55Z "If you move a comment to the trash, and that comment has sub-comments, none of those comments are visible (which is desired) but post->comment_count is reduced by 1 rather than by the total number of comments that have now been hidden.
For example: post has 1 comment with 3 replies. Comment count is 4. Delete the first comment. Now no comments are visible but comment count is 3.
The first comment has comment_approved set to 'trash' but the other 3 comments are still '1'. Perhaps the right fix is that when trashing a comment, all of its sub-comments are also trashed explicitly rather than implicitly." jwz
Future Releases 40352 WP REST API, Comments Not Triggering 'comment_post' Comments 4.7 normal normal Awaiting Review defect (bug) new dev-feedback 2017-04-04T06:50:37Z 2019-11-26T14:44:32Z "Hello,
I’ve noticed that when comments are created using the WP API that notification emails are not sent out to the author of the post or moderators. (When testing, If I add the comment via the admin interface, it works as expected).
On debugging, I noticed that the filter ‘comment_post’ is not being called when inserted via the API. For now, I used the following workaround:
{{{#!php
function mytheme_comment_inserted($comment_id, $comment_object) {
wp_notify_postauthor( $comment_id );
}
add_action('wp_insert_comment','mytheme_comment_inserted');
}}}
I already posted on the support forum here: https://wordpress.org/support/topic/wp-api-comments-not-sending-notifications/#post-8987973 and it was suggested this could be intentional behaviour but that this also could, in fact, be reported as a bug?
Thanks!
Chris" stickypixel
Future Releases 46243 WordPress Comments Core Query Comments 5.0.3 normal normal Awaiting Review defect (bug) new dev-feedback 2019-02-13T03:48:45Z 2021-03-26T16:16:24Z "Hello,
**Issue:** We have over 400K+ posts and I saw this slow query on any WordPress area on each page.
We had 2M+ comments.
**Question:** This Query is working on all pages on Dashboard or Settings, Plugin section and any sections why does it? It should works on only all Posts list?
**Solution:** I have noticed that Header Bar has Comments Icon and that has displayed the Pending Comments count. I have tried to disable it via custom Filter for following.
{{{
function admin_bar_remove_comments(){
global $wp_admin_bar;
$wp_admin_bar->remove_menu('comments');
}
add_action( 'wp_before_admin_bar_render', 'admin_bar_remove_comments' );
}}}
**Slow Query:**
{{{
SELECT comment_approved, COUNT( * ) AS total
FROM wp_comments
GROUP BY comment_approved
}}}
**Environment Information:**
WP Version 5.0.3 (also tested 4.9.8)
Theme: Twenty Seventeen (other themes)
Plugins: Query Monitor
Thanks." Uranbold
Future Releases 51492 Wrong order of comments when using numbered pagination Comments 5.5.1 normal normal Awaiting Review defect (bug) new dev-feedback 2020-10-10T11:16:25Z 2020-10-10T13:08:00Z Using paginate_comments_links() to show numbered pagination in comments instead of 'older comments' or 'newer comments' causes a problem. When comments are broken into pages, with the last page and newer comments shown by default, the numbered pagination shows the current page as the last in the pagination. For example, if there are 60 comments broken down to 20 comments per page, the initial post-loading shows page 3 as the current page (instead of page 1) and a person has to navigate backwards to read other comments (page 2 then page 1). askel45
Future Releases 29462 comment pagination in reverse order should display a full number of the latest comments Comments 3.9 normal normal Future Release defect (bug) reopened dev-feedback 2014-09-02T07:12:47Z 2021-03-16T16:01:41Z "set the following discussion setting:
break comment into pages with 5 top level comments per page and the last page displayed by default
Comments should be displayed with the newer comments at the top of each page
have a post with 6 comments
only the last comment made is displayed by default instead of the expected 5 last comments." mark-k
Future Releases 43015 function get_previous_comments_link not working in front page Comments 4.9.1 normal normal Awaiting Review defect (bug) new dev-feedback 2018-01-03T11:44:16Z 2019-06-24T16:29:01Z "Hey,
function get_previous_comments_link generate wrong url in front page, but it's ok in typical page, it's because of the permalink, wordpress hasn't full permalink in front page." devlife
Future Releases 52582 wp_cache_* duplicate/redundant storage and insufficient clearing of cache Comments normal normal Awaiting Review defect (bug) new dev-feedback 2021-02-21T14:32:09Z 2021-02-21T16:07:12Z "This is something I'm currently encountering, but have not been able to fully investigate myself (yet).
**Summarized backstory; **
Using Redis, sometimes maxes memory > needs flush. Started investigating whats taking up soo much memory (relatively simple sites).
~42,000/67,000 records stored are for `get_comment_child_ids` and `get_comments`.
(By far not that many comments on my sites)
Looking for a single specific comment ID it is repeated between 30-50 times, while in theory it should be just once (unless using it in different contexts? (->query_vars))
**Possible cause; **
For the methods `get_comments` and `fill_descendants` the `wp_cache_get_last_changed( 'comment' );` is used to create a cache key for the comments / childs.
https://core.trac.wordpress.org/browser/tags/5.6.1/src/wp-includes/class-wp-comment-query.php#L432
https://core.trac.wordpress.org/browser/tags/5.6.1/src/wp-includes/class-wp-comment-query.php#L998
When a new comment is inserted for example, there is a attempt to delete the comment cache by calling `clean_comment_cache()`, but it seems this is based on the comment ID, which is not the same as the key / doesn't target the childs.
The 'last_changed' is however changed at the same time in that function;
https://core.trac.wordpress.org/browser/tags/5.6.1/src/wp-includes/comment.php#L3195
Which I think makes it impossible for the prior cached data to be found because it uses that in the key.
This causes it to store the same data over and over (redundant), even when it hasn't changed for those comments, with new cache keys without clearing the old ones (duplicate).
Could be I'm completely off, but wanted to get another pair of eyes on it. If whats described is actually happening it looks pretty major for caching efficiency. " sormano
Future Releases 20977 Add Dynamic Comment Statuses Comments 3.4 normal normal Future Release enhancement new dev-feedback 2012-06-15T17:12:07Z 2020-01-14T02:35:50Z It would be great to add some filters/actions that would allow plugin developers to add additional statuses to comments. supercleanse
Future Releases 50361 Highlight if link targets in comments don't refer to the link text Comments normal normal Awaiting Review enhancement new dev-feedback 2020-06-10T20:36:48Z 2020-06-10T20:42:02Z I'm thinking of some kind of solution to warn if links in comments are not what they seem to be to give a little security extra. They can be misused to inject bad stuff if clicked as an admin. I changed class-wp-comments-list-table.php to show a hint like on the screenshot to show you what I mean. What do you think? How could this be done in a non disturbing way? Or don't we want it at all? You decide. Presskopp
Future Releases 52480 Refine the display of the comment approval notification opt-in confirmation message Comments normal normal Future Release enhancement new dev-feedback 2021-02-09T17:09:29Z 2021-04-09T15:36:56Z "Follow-up to #52406.
The confirmation message shown to a user ''after they opt-in'' to receiving a notification of their pending comment's approval is currently displayed inline with a preview of their comment.
This means the display of this confirmation message is only shown if the user opts in within 10 minutes of posting their comment. If they take longer than 10 minutes then their opt-in is respected but they see no confirmation message.
As mentioned in the comments in [comment:7:ticket:52406] 10 minutes is likely long enough but no research was done.
Let's identify if this functionality needs to be improved. Options:
* Extend the time limit further. This needs to take into consideration #49956.
* Disconnect the display of the confirmation message from the comment preview, and always show a confirmation message. Would need to take into consideration the cache headers on the page.
* Fix the comment spam problem some other way and remove the time limit.
* Do something else.
* Do nothing and leave it as-is.
" johnbillion
Future Releases 58375 Turn comments off by default for attachment pages (or make is easier to do so without code) Comments normal normal Awaiting Review enhancement new dev-feedback 2023-05-22T14:49:42Z 2023-05-25T07:09:59Z "If a new user is installing WordPress the first time, it lasts some time until the first spam comment appears. Typically, they now disable comments on **Settings -> Discussion**.
First problem: this is just disabling the comments for ''future'' posts.
Now they learn about bulk editing posts, which works fine.
But the website is now online for some time and more media is uploaded, and now the spam comes to the next open comment form: **on attachment pages**.
Not sure if attachment pages follow the setting from the discussion page, but there will be many media items with open comments.
Now we have the second problem: On the grid view, there is no way to disable the comments at all (you need to follow a link to get to the single media edit page).
On this page you need to customize the screen options to enable the meta box, and now you can disable the comments for ''this'' media item. This has to done manually for every media item with open comments (but there is no way to see if the comments are open - so you need to edit every media item).
This could be a real pain for websites with many media items.
**I would recommend changing the behavior and have comments on attachment pages turned off by default.**
I think it will be easier to educate theme developers to turn them on again if the theme uses them (e.g. photography themes) as documented here:
https://make.wordpress.org/core/2015/07/06/comments-are-now-turned-off-on-pages-by-default/
This is already discussed in the comments on this post.
Related tickets: #12991 and #21391
Another way could be to use the idea of this comment:
https://core.trac.wordpress.org/ticket/12991#comment:22
If turning the default to off is not possible, we could use the bulk edit to enable/disable the comment/pingback/trackback feature.
The need for such a feature could be seen in the plugin directory, as there are more than one plugin for disabling comments on attachment pages (and more):
https://wordpress.org/plugins/disable-comments/
https://wordpress.org/plugins/smart-attachment-page-remove/
https://wordpress.org/plugins/disable-comments-rb/
https://wordpress.org/plugins/comments-plus/
https://wordpress.org/plugins/disable-comments-on-attachments/
https://wordpress.org/plugins/disable-comments-by-click5/
https://wordpress.org/plugins/no-page-comment/
https://wordpress.org/plugins/stop-media-comment-spamming/
https://wordpress.org/plugins/disable-comments-wpz/
https://wordpress.org/plugins/disable-post-comments/
https://wordpress.org/plugins/close-comments-on-media-attachment/
These add up to more than a million active installations." zodiac1978
Future Releases 41760 wp_list_comments callback params Comments normal normal Awaiting Review enhancement new dev-feedback 2017-08-30T18:44:15Z 2017-08-31T09:05:53Z "In `wp-includes/class-walker-comment.php`, methods `comment()` and `html5_comment()` have following order of @params: `$comment, $depth, $args`.
However, when you try to modify comment markup using `callback` argument for `wp_list_comments()`, order of params is `$comment, $args, $depth`.
Is it possible to make the same order of params?" milana_cap
Future Releases 11800 doubled execution of cron jobs westi Cron API 2.9.1 normal normal Future Release defect (bug) new dev-feedback 2010-01-07T11:17:53Z 2021-04-04T10:34:28Z "Hi,
as I've already mentioned in ticket #11505 , cron-jobs occasionally get executed twice (e.g. daily backup arrives two times).
I've changed the code according to the patch attachment:ticket:11505:ticket-11505-stop-gap.patch (which derives from [http://wpengineer.com/ping-problem/]) after my comment:ticket:11505:49 and had no doubles within this time period. This week I've upgraded to WP 2.9.1 and since then backups arrive two, sometimes three times, again.
Looking at the changes from 2.9 to 2.9.1, I have no other explanation for this behavior. - Maybe we should consider having a closer look again on this patch attachment:ticket:11505:ticket-11505-stop-gap.patch .
Greetz,
Berny" neoxx
Future Releases 39891 Chrome rendering issue with Customizer, widgets, and checked radios Customize normal normal Future Release defect (bug) new dev-feedback 2017-02-16T16:38:59Z 2021-05-29T16:56:54Z "Steps to reproduce:
- Open up Chrome (at least on Mac, have not tested on PC)
- Open up the Customizer
- Edit any sidebar
- Add any widget '''that contains at least one radio field that is checked'''
- Reduce the height of the browser window until a vertical scrollbar appears in the pane
Once the vertical scrollbar appears, the entire pane vanishes.
Upon further investigation, it appears to be Chrome ""max-width paint"" type issue. Basically, the checked radio element sets a `text-indent` of `-9999px` on the `:before` item to hide the browser rendered checkmark. It seems that this expands the width of the painted area very very far to the left (outside the visible window). I say this because if you mess around with the indent by lowering it, eventually the bug disappears. You can even see the right side of the painted area vanish (screencast attached showing this below).
Here's some CSS changes I tried that fixed it:
- Lower the text-indent to something higher (as in smaller negative number) than about `-8000px`
- Set the `.widget` element position to `static`
(previously set to `relative`)
Here's some screencasts:
Detailing how to create the bug:
[[Image(http://d.pr/i/WEil+)]]
Example showing why I think it's some sort of ""max paint width"" rendering issue:
[[Image(http://d.pr/i/gLzq+)]]
Example showing how setting the `position` on the `.widget` item to `static` fixes things:
[[Image(http://d.pr/i/4P9a+)]]" joelworsham
Future Releases 33139 Customizer on mobile: 'Save & Publish' button may overflow when translated. Customize normal normal Awaiting Review defect (bug) new dev-feedback 2015-07-27T12:50:16Z 2021-05-23T17:46:38Z iseulde
Future Releases 46969 During customize theme - preview body/icons get cuts on left side Customize 4.7 normal normal Awaiting Review defect (bug) new dev-feedback 2019-04-18T07:45:12Z 2021-05-30T19:53:46Z "Hello,
While we customize the theme from admin dashboard (Dashboard > Appearance > Customize), the preview body gets cut from the left side resulting the icons to be not displayed properly in iPod landscape and portrait mode.
" shashank3105
Future Releases 44968 Header Text color option doing two jobs, so both suffer Customize normal normal Awaiting Review defect (bug) new dev-feedback 2018-09-19T20:39:00Z 2020-11-04T06:09:37Z "There are two issues, both of which have been addressed before. #23761, #22498
The Header Text color option and the Display Site Title and Tagline option use the same storage space (theme_mod), so there is no way to hide the title and use the color for other header text, and when the title is unhidden the color is (sort of) the default.
Steps to reproduce:
1. In Customizer, note the header text color for comparison later.
2. Hide the site title.
3. Save and exit the Customizer.
4. Open Customizer and unhide the site title.
5. Look at the header text color and compare to value from step 1.
What I expect:
1. The header text color could be used for other header text besides the site title. Hiding the title should not hide the color selection.
2. The color set before the title was hidden should be restored when the title is unhidden.
What actually happens:
1. The color option is used to indicate the visibility of the site title, so the color is set to 'blank'.
2. Other text in the header cannot be styled with the header text color if the site title is hidden.
3. When the site title is unhidden, the header text color option shows a color for the swatch that is the default color, but the text input box is empty and the color indicator shows black (as if it were 0).
Or just set the color of the header text, hide it, unhide it, and the color you chose is gone.
I think it should be two separate options for color and hiding. I don't know how that would affect backward compatibility, but it is the best solution." joyously
Future Releases 43197 Nesting @media rule inside @supports rule fails CSS validation Customize 4.9.2 normal normal Awaiting Review defect (bug) new dev-feedback 2018-02-01T10:13:49Z 2021-05-30T17:30:28Z "The CSS editor in the Customize panel returns 2 syntax errors when trying to insert a `@media` rule inside a `@supports` rule. It does work fine the other way around.
See screenshot:
[[Image(https://i.imgur.com/81b01Bp.png)]]
Results are independent of specified properties & values.
This might impact performance, because it is faster to skip the entire content of a feature query if a browser does not support a certain feature, rather than having multiple media queries with `@supports` in each of them. Besides, it can be functionally different, as explained here: https://stackoverflow.com/a/42438244
Tested on Chrome 63 and Windows 7. " neoqueto
Future Releases 54211 Small css bug when using customize-controls in customizer.php Customize 3.4 normal minor Awaiting Review defect (bug) new dev-feedback 2021-10-02T11:21:51Z 2022-09-09T10:34:04Z The form code is wrong in the css for some elements. To reproduce problem, add in customizer.php custom two customize-control-radio and two customize-control-select. You see the 'radio' has extra 10px padding on bottom. The 'select' is missing the 10px padding. So it looks very bad when you organize the elements. So either remove the 10px or add the 10px to the 'select' css. akissz
Future Releases 30969 adding theme support for 'custom-header' or 'custom-background' results to duplicate admin menu items Customize 4.1 normal normal Awaiting Review defect (bug) reopened dev-feedback 2015-01-09T21:54:06Z 2021-05-22T19:51:04Z "Wordpress 4.1 shows double 'Header' and 'Background' menu items in admin navigation menu on front-end when using
add_theme_support( 'custom-header', $args );
add_theme_support( 'custom-background', $args );
Here is a screenshot of Twentyfourteen theme.
http://snag.gy/djDFm.jpg
This issue also exists in other themes I tested using the above hooks.
This issue is not seen in previous WordPress version using the Twentyfourteen theme.
" edville101
Future Releases 39907 "Add ""Remove all widgets"" button for themes with multiple widget areas" Customize normal normal Awaiting Review enhancement new dev-feedback 2017-02-17T19:04:28Z 2021-05-29T17:01:57Z "I was loading giving one of my sites a new theme as a New Year treat. It only seemed fitting to put on Twenty Sixteen. As this was a simple site, I wanted the single column. Unfortunately, loading up the theme brought a few issues as I suddenly found a lot of widgets I didn't want. For example the footer areas, they were filled with defaults I didn't want. Going in and removing each one took several steps as there were multiples.
Whether you want defaults or not may be something the theme can decide, but offering a 'remove all widgets' button I think would be easy enough to add into the Customizer and a great enhancement for the minimalists." karmatosed
Future Releases 33107 Add a Menu button: when clicked the icon does not rotate around center point Customize 3.9 low normal Future Release enhancement assigned dev-feedback 2015-07-24T01:47:32Z 2021-05-22T21:08:48Z "When clicking the ""Add a Menu"" button in the Menus area of the customizer, the icon doesn't quite rotate around its center point. On some browsers like Chrome and Firefox the icon is also misaligned and pulled up too high.
Here's the icon in Firefox for example:
[[Image(https://cldup.com/01NjVg0Qh7-3000x3000.png)]]
Screenshot of the rotated icon combined with its original position:
[[Image(https://cldup.com/uO_3o712gB-3000x3000.png)]]
Here's some short videos of how the icon rotates when clicked:
Firefox 39 (OS X)
https://cloudup.com/cBb9kdrvjNZ
Chrome 43 (OS X)
https://cloudup.com/ciNZeSgbab7
Safari 8 (OS X)
https://cloudup.com/cUmIW81nSht
Safari is the only one that looks correct. The issue is partly caused by the ""add"" icon not a perfect square (it appears 1px wider in some browsers). By using the transform-origin CSS property we can improve how the icon rotates.
Because of the icon being rendered 1px wider in some browsers it's not possible to get it exact, but it's certainly an improvement. Shown below are some videos of how they would look after some CSS adjustments using the transform-origin CSS property. Best viewed at normal size with the patch, but you get the idea:
Firefox 39 (OS X)
https://cloudup.com/ca2OWHuGe8q
Chrome 43 (OS X)
https://cloudup.com/c_5AROy460x
Safari 8 (OS X)
https://cloudup.com/c1YdWYfyMqd
Also tested in IE 11 on Windows.
First patch coming." sumobi
Future Releases 38549 Additional CSS lost when changing themes Customize 4.7 normal normal Future Release enhancement new dev-feedback 2016-10-28T14:37:14Z 2021-05-23T23:39:27Z When you change themes, the Additional CSS is lost. Change the theme back and it returns. I think there should be an option to retain the Additional CSS across any theme used. If we do not implement that, I have a funny feeling that many users will be confused as to where their custom CSS went. scottwyden
Future Releases 42806 Allow installing themes in the Customizer on multisite Customize normal normal Future Release enhancement new dev-feedback 2017-12-05T17:47:40Z 2018-07-08T17:44:55Z "Currently the ""Install Themes"" section in the Customizer isn't added when using multisite.
There is no technical problem with the installation process, as it still works correctly, simply by adding removing the restriction to only add the section (and enqueueing the related script) if `is_multisite()`, which I tested before opening this ticket.
However, what would need to be figured out is how to deal with enabling themes, because by default an installed themes isn't enabled anywhere. And of course it would only be possible for the network administrator, but I think that would still bring a huge benefit, because right now it isn't possible in multisite at all.
Here are two suggestions for possible approaches:
1. When in a multisite, there could be a notification like ""By installing a theme you also automatically enable it for this site."" Then, after the installation logic we would only need to handle that part automatically. If we go with that approach, we would need to make sure that the current user has both the `install_themes` and `manage_network_themes` capabilities.
2. When in a multisite, there could be a separate section ""Network Installed Themes"" that includes all themes installed, regardless of whether they're enabled for the site. Each themes would have a button to enable/disable it for the site. That section would require the user to have the `manage_network_themes` capability. We would furthermore need to ensure that themes are transitioned from the ""Network Installed Themes"" to the existing ""Installed Themes"" section and vice-versa when they are enabled/disabled for the site. Plus, when installing a theme through the ""WordPress.org Themes"" section, the user would need to be redirected to the ""Network Installed Themes"" section with that theme pre-seleted, to easily be able to enable and preview it.
There are benefits to both ways: While the first approach will be much simpler to implement, it somewhat mixes installing and enabling themes into one. The latter approach will allow more flexibility, but may be overly complex. Especially since installing themes without being able to enable them will make the process useless in multisite, I think I prefer the first approach. Maybe a mix of both could be the right way too, where we start with implementing the first approach as a first iteration (that could even be merged into core as that), but keeping it future-compatible to possibly add a dedicated ""Network Installed Themes"" section later." flixos90
Future Releases 39362 Checkbox control for 'Automatically add new top-level pages to this menu' not wrapped in checkbox customize control Customize 4.7 normal normal Awaiting Review enhancement new dev-feedback 2016-12-21T11:48:34Z 2021-05-24T02:50:58Z "When you go to set the menu in the customizer you have the option to check the Menu Options for Adding the top-level pages automatically to the current menu. This option isn't wrapped in the
{{{
}}}
This isn't a bug, but a hindrance if you want to customize the look of the customizer and would like to have all the checkboxes look the same.
One could say that all one needs to add is the style for
{{{
.input[type=""checkbox""]
}}}
but this is not true if you have a custom control that has a checkbox input, and you want to style it differently. In that case you'd need to overwrite additionally. Plus the current style is styled via {{{.customize-control-checkbox input[type=""checkbox""]}}} as well as with just {{{input[type=""checkbox""]}}}." dingo_d
Future Releases 54119 Customize: Always Show Homepage Settings Customize 4.7 normal normal Future Release enhancement new dev-feedback 2021-09-14T06:58:32Z 2021-09-18T03:01:09Z "== Summary
The options at Appearance → Customize → Homepage Settings are contextual. They appear only if the user has at least one published page. I am proposing tp always show Homepage Settings, regardless of the presence of published pages.
== Why
When you start a new website, the first page you think about is your homepage. So, when you go to look for Homepage Settings, you may not have published a page yet. Or, maybe you start working on your homepage, but it's still a draft.
In this scenario, Homepage Settings is not there at all. A user who visited Customize would have checked there and not seen anything related to setting the homepage, so they would not think to check again for it after publishing their first page.
If Homepage Settings were to always show, a user would immediately learn where to set a homepage, even if no pages appear in the dropdown yet to select their homepage.
It's also worth noting that at Customize → Homepage Settings, you can use the 'Add New Page' option to create a new page using this interface, therefore a user with no pages yet can create their homepage here.
By always showing Homepage Settings, this will avoid the confusion a new user faces with Homepage Settings not being present in Customize." donalirl
Future Releases 37915 Customize: allow terms to be created in nav menus boonebgorges Customize 4.7 normal normal Future Release enhancement assigned dev-feedback 2016-09-01T20:51:39Z 2021-05-23T23:16:18Z "Follow up to #34923. When setting up initial site structure, in many cases it's as important to be able to create new terms to add to menus as the ability to create posts. For users, the distinction between terms and posts probably isn't immediately clear, so this functionality gap may be confusing.
There are several patches on #34923 that contain the needed framework here, but we need the ability to preview terms before we can add support for terms.
This depends on #37914. Milestoning for 4.7 now for tracking, but we're waiting for that ticket before we can proceed here." celloexpressions
Future Releases 33469 Customizer Menus: Restore active menu to a location after selecting and unsetting another menu Customize 4.3 normal normal Awaiting Review enhancement new dev-feedback 2015-08-20T18:40:47Z 2021-05-23T17:52:53Z "When a location is specified for a menu and another menu is assigned to that location in the Customizer, the first menu is removed even if the new settings aren't saved.
1. Assign a menu to a location in the customizer. Click ""Save & Publish"".
1. Assign a different menu to that location, but do not save.
1. Uncheck the location from the second menu.
Expected: The previously selected menu for that location should be restored.
Actual: The location now has no menu assigned to it." morganestes
Future Releases 47500 Optimize customizer load time Customize normal normal Awaiting Review enhancement new dev-feedback 2019-06-07T00:42:58Z 2021-05-31T16:22:13Z "Please see some discussion in slack for background and ideas
https://wordpress.slack.com/archives/C0381N237/p1559852377000600
TLDR; More plugins and themes are using the customizer. It's a very good experience when making changes to options that affect the display of the site. As more controls are added the initial page render is taking longer and longer.
Searching for things like ""WordPress customizer long load times"" results in tickets like
https://wordpress.org/support/topic/customizer-takes-12-seconds-to-load/
In my own tests against a plugin I develop for I've found DOM Ready load times approaching 10 seconds.
In default usage this is not apparent, but as themes and plugins use the customizer it becomes very slow.
Ideally the initial page render should be more complete and then panels, sections, and controls can be added. This will make the page ""feel"" complete and more responsive." Nick_theGeek
Future Releases 36447 Responsive preview icons in Customizer need tooltips iamjolly Customize 4.6 normal normal Future Release enhancement assigned dev-feedback 2016-04-08T02:44:59Z 2021-11-09T15:43:27Z "The new icons at the bottom of the Customizer for toggling the preview window of your site really need tooltips to indicate what they're for.
Just like the tooltips on the Visual Editor icons, other icons in the Dashboard should have tooltips as well. As leading usability expert Jakob Nielsen explains;
>A user’s understanding of an icon is based on previous experience. Due to the absence of a standard usage for most icons, text labels are necessary to communicate the meaning and reduce ambiguity.
https://www.nngroup.com/articles/icon-usability/
Even the Google Design Guidelines recommend tooltips for icons
https://www.google.com/design/spec/components/tooltips.html#
I originally raised this as a post on the [https://wordpress.org/support/topic/responsive-preview-icons-in-customizer-need-tooltips Beta forum] but it was suggested that since it's getting late in the 4.5 release cycle it would be best to raise it as a Trac ticket." ahortin
Future Releases 48115 Sidebar starter content issue with Twenty Twenty Customize 4.7 normal normal Awaiting Review enhancement new dev-feedback 2019-09-24T00:15:38Z 2021-06-01T00:50:40Z "Hello,
While testing the beta I found the sidebar contents functioned a little odd. On initial install the sidebars showing on the front-end match what was in Appearance > Widgets which is;
Footer #1 (Search, Recent Posts, Recent Comments) and in Footer #2 (Archives, Categories, Meta)
But navigating the Appearance > Customizer > Widgets showed the defaults as Footer #1 (About this site) and Footer #2 (Find Us) and once I published the Customizer I found the front-end showed these two and then now the Appearance > Widgets also showing these.
So it seems the default widget content from TwentyTwenty only loads into Customizer as a default and isn't the actual defaults found on install in Appearance > Widgets.
Thanks" garrett-eclipse
Future Releases 53807 Add function or filter to send all customizer setting default values to the database upon theme installation Customize normal normal Future Release feature request new dev-feedback 2021-07-27T23:41:15Z 2021-08-02T13:18:23Z "I am learning theme development and developing my first WordPress theme from scratch.
My new theme contains ''many'' customizer settings, most of which include default values.
I discovered recently that upon theme installation, these customizer default values only appear in the customizer view, but are not entered into the database and are not shown on the front end.
To insert the customizer default values into the database so that they display on the front end upon theme installation, I believe (?) each theme mod must be manually entered into the database by using set_theme_mod().
This requires duplication of every default value twice within the theme code, and the addition of many lines of code for themes that create many new customizer settings.
I recommend creating a function or filter that theme developers can activate within functions.php to send all default customizer values to the database upon theme installation.
This will avoid having to duplicate default values in both add_setting() and set_theme_mod() and reduce lines of code in themes." curtiskessler
Future Releases 40451 Customizer: Introduce plugin management Customize 4.7.3 normal normal Future Release feature request new dev-feedback 2017-04-14T18:23:53Z 2019-01-15T21:13:52Z "There is currently not a way to discover or upload plugins in the customizer, the only way is in WP Admin.
https://codex.wordpress.org/Managing_Plugins#Automatic_Plugin_Installation
https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation
Themes already have #37661 and #40278." lukecavanagh
Future Releases 37678 Add an action hook for plugins to do database upgrades on Database normal normal Awaiting Review defect (bug) new dev-feedback 2016-08-16T18:10:59Z 2019-04-18T21:27:24Z "Currently, plugins that have custom database tables usually hook into `admin_init` and pray for rain when comes to their database alterations. This pollutes the `admin_init` hook namespace quite a bit, particularly with database actions that are almost always necessary in order for plugins to actually work correctly.
It would be nice if WordPress core had a dedicated action hook meant for executing database alterations & upgrades, no different than there being one for `plugins_loaded`, `template_redirect`, et all...
I'm conflicted on where exactly this hook should be. I'm 95% sure it belongs somewhere after `admin_init` so that admin area plugins have a chance to hook everything in. I'm also 95% certain I don't want this as part of the plugin activation sequence, because it's becoming more common to deploy plugins via WP CLI, version control, or some other deployment process, and activation hooks aren't usually ran that way." johnjamesjacoby
Future Releases 40953 Empty values are handled inconsistently between wpdb->get_results() and wpdb->get_col() Database 0.71 normal normal Awaiting Review defect (bug) new dev-feedback 2017-06-08T17:18:39Z 2017-06-08T17:51:19Z "As outlined and discussed yesterday in Slack [https://wordpress.slack.com/archives/C02RQBWTW/p1496821047585923 here], [https://wordpress.slack.com/archives/C02RQBWTW/p1496844209230845 here], and [https://wordpress.slack.com/archives/C02RQBWTW/p1496850305693715 here], `wpdb` treats empty stored values differently in the `get_results()` and `get_col()` methods. This is because of the use of `get_var()` inside of `get_col()`, which defaults to null for empty values.
For example, let's say you're running a query like `SELECT rate FROM sometable` through `get_results()`. With the default parameters and empty values for the column, you'd get something like the following:
{{{
array(2) {
[0]=>
object(stdClass)#1734 (1) {
[""rate""]=>
string(0) """"
}
[1]=>
object(stdClass)#1735 (1) {
[""rate""]=>
string(0) """"
}
}
}}}
If you ran that same query through `get_col()`, you'd instead get an array of `null` values:
{{{
array(4) {
[0]=>
NULL
[1]=>
NULL
}
}}}
This seems oddly inconsistent. And writing tests for the workaround is annoying in that creates the need to understand the core workaround in the future.
Now, this code goes all the way back to [112], so changing the default behavior is not even on the table.
Some solutions brainstormed with @boonebgorges and @johnjamesjacoby include:
* A global flag to check against, i.e. `wpdb_get_col_force_strings( true );`
* A global flag in the form of a constant
* A settable `wpdb`-level flag
* A new argument for `get_col()` to selectively change the behavior.
The global flag ideas are attractive because they cover the entire DB stack: whether you're using the abstraction layers like `get_posts()`, `WP_Query`, or any of the other query classes, it ''just works'' all the way down the line.
The settable `wpdb` flag is attractive only if you're really working with direct queries like we are in our custom table query classes. The same goes for a new argument in `get_col()`, though both could be implemented higher up the stack in the form of arguments or filters.
I think a good first step here would be to try to benchmark performance for all of the listed options, just to see what we're looking at. The global flag choices seem like they could be the least impactful.
In the short term, our workaround for AffiliateWP will probably be to create a wrapper for `get_results()` that simply plucks the values out so we can maintain consistency, but I'm not a big fan of writing and maintaining core workarounds in perpetuity.
Whichever way we go in core, this is something that we should probably address. Who knows how many workarounds there are currently in the wild to fix this." DrewAPicture
Future Releases 39273 Updating to 4.7 can break serialized data because $wpdb->determine_charset now forces utf8 when DB_CHARSET is set to utf8mb4 Database 4.7 normal normal Awaiting Review defect (bug) new dev-feedback 2016-12-14T05:05:58Z 2019-03-15T02:23:09Z "I've seen this happen several times now. `DB_CHARSET` is defined as `utf8mb4` and the columns in the database are set to `utf8mb4_unicode_ci`. However, the changes in 38581 are now forcing `utf8` causing the serialized array lengths to change when the data is queried and breaking them because the charsets don't match.
I can't say for certain because I'm debugging this issue on a site that isn't mine, but I don't think anyone explicitly set `DB_CHARSET` to `utf8mb4` in `wp-config.php`. It appears that at one point, WordPress set that define and created (or updated) those tables to `utf8mb4_unicode_ci`.
Deleting the `DB_CHARSET` define fixes the issue but that doesn't seem like an ideal solution for users who update and end up with a broken site.
I'll admit this is a bit over my head, so I'm hoping someone smarter than me might be able to chime in with some more info :) I'm definitely available to keep the conversation going. Thanks! " justinbusa
Future Releases 42381 Wordpress update does not check if database structure/scheme on existing site is equal to how it would be on a new install Database 4.8.2 normal normal Awaiting Review defect (bug) new dev-feedback 2017-10-30T18:19:44Z 2017-11-11T18:19:31Z "'''Description of bug'''
When trying to add a category I receive the error:
WordPress database error: [Duplicate entry ‘test’ for key ‘slug’] INSERT INTO wp_terms (name, slug, term_group) VALUES (‘Test’, ‘test’, 0)
'''What seems to be the cause of the problem?'''
My install does not allow a category (test) with the same slug as an existing tag (test). WordPress should allow this.
On further investigation: in wp_terms table, the field slug has a UNIQUE constraint. This was changed in WordPress 4.1 [https://core.trac.wordpress.org/ticket/22023/ three years ago].
Duplicates are now prevented in WordPress code instead of in the database, but it seems like my site has skipped one or more database core updates.
'''In short'''
My install is up to date. But my database core structure/scheme is not up to date. wp_repair, wp_optimize etc. do not flag this.
Also setting WP_ALLOW_REPAIR in wp-config.php does not flag this as an issue.
I was able to fix this but potentially my database still has other undetected differences.
Questions
- Should WordPress check on update if a existing database structure/scheme matches how it should be if it were new install?
- Should WordPress offer (after backup disclaimer etc.) offer to repair/update the database structure to the latest version?
I submit this as a bug and not as a feature since I feel WP_ALLOW_REPAIR should detect if a WordPress table is setup correctly." mike_vl
Future Releases 40779 function_exists() audit in wp-db.php Database low minor Awaiting Review defect (bug) new dev-feedback 2017-05-16T14:47:06Z 2021-06-01T12:50:59Z "A few `function_exists()` checks can be removed from `wp-db.php`, thanks to recent load order changes, probably nobody having looked in a while, and generally being afraid to break DB drop-ins:
All of these functions are in files now loaded ahead of `require_wp_db()`:
* `is_multisite` (load.php)
* `_deprecated_function` (functions.php)
* `mb_strlen` (compat.php)
Bonus:
* `mb_check_encoding()` could *maybe* be a new function in compat.php (it's used 3 times in core, using `@` or `function_exists`)
----
The only caveats are the installation process, and 10+ year-old HyperDB versions that do the old-school deep-integration thing, of directly including files – they'll need extra scrutiny." johnjamesjacoby
Future Releases 55206 wp core api memory leaks Database normal normal Awaiting Review defect (bug) assigned dev-feedback 2022-02-20T05:37:43Z 2022-04-29T04:44:55Z "I've experienced the following two memory leaks in WP core. One involves $wpdb when `SAVEQUERIES` is defined truthy, and the other involves `$wp_object_cache` growing as a consequence of calling core api functions that themselves save to the object cache. Both have happened for me in cases where I'm doing large batch processing involving thousands or tens of thousands of posts. I've had memory usage exceed 512MB and cause crashes.
I'm including unit tests here showing each memory leak and also the fix that I've used to prevent the memory leak and keep my batch jobs running.
{{{#!php
queries particularly has a tendency to blow up.
*/
class WP_Memory_Leak_Tests extends WP_UnitTestCase {
/**
* This tests a condition which exposes a memory leak in the WPDB class.
* If 'SAVEQUERIES' is defined as truthy, then the $wpdb->queries property
* can grow indefinitely.
*/
public function test_WPDB_Memory_Leak() {
// Once a constant is defined, it can't be undefined, it's often defined in dev or staging environments.
define( 'SAVEQUERIES', true );
// I'll just start my cron job to read the import file I've got. It's
// got a decent number of records.
$number_of_records = 1000;
global $wpdb;
$memory = memory_get_usage( true );
$peak = memory_get_peak_usage( true );
foreach ( [ 'first', 'second' ] as $pass ) {
// first pass through, we'll apply a fix for this memory leak.
// second pass through, we'll bypass the fix and the tests will fail.
for ( $i = 1; $i <= $number_of_records; $i ++ ) {
if ( 'first' === $pass ) {
$wpdb->queries = [];
}
// for this test, we'll do direct calls to $wpdb
$wpdb->query( $wpdb->prepare( ""SELECT * FROM $wpdb->posts WHERE ID = %d"", $i ) );
}
$this->assertEquals( $memory, memory_get_usage( true ), ""$pass pass"" );
$this->assertEquals( $peak, memory_get_peak_usage( true ), ""$pass pass"" );
}
}
/**
* This tests a condition which exposes a memory leak in wp cache API. If
* a large batch job attempts to do a lot of something that ends up caching
* things ( like, for example, get_post or wp_insert_post ), then unless
* the cache is flushed regularly, the memory usage grows indefinitely.
*/
public function test_WP_Cache_Memory_Leak() {
// I'll just start my cron job to read the import file I've got. It's
// got a decent number of records.
$number_of_records = 1000;
global $wpdb;
$memory = memory_get_usage( true );
$peak = memory_get_peak_usage( true );
foreach ( [ 'first', 'second' ] as $pass ) {
// first pass through, we'll apply a fix for this memory leak.
// second pass through, we'll bypass the fix and the tests will fail.
for ( $i = 1; $i <= $number_of_records; $i ++ ) {
if ( 'first' === $pass ) {
wp_cache_flush();
}
// Because our last test defined 'SAVEQUERIES', we need to
// always apply this fix, otherwise that memory leak manifests.
// With us doing a core API function `wp_insert_post`, the number
// of queries is quite large and memory __really__ grows.
$wpdb->queries = [];
// let's say we're inserting posts, maybe from an excel file.
// this caches some things, so $wp_object_cache grows.
wp_insert_post([
'post_type' => 'post',
'post_title' => ""post $i"",
'post_content' => ""pass $pass""
]);
}
$this->assertEquals( $memory, memory_get_usage( true ), ""$pass pass"" );
$this->assertEquals( $peak, memory_get_peak_usage( true ), ""$pass pass"" );
}
}
}
}}}
" sllimrovert
Future Releases 45354 Adding index for meta_key and post_id in postmeta Database normal normal Awaiting Review enhancement new dev-feedback 2018-11-14T21:43:31Z 2023-12-19T22:49:54Z "We should add an index on post_id and meta_key as queries that contain these columns are incredibly common (even in loop in core on every page load basically).
An index will improve query speed up to 100% even when only 1000 posts are in db.
Test it yourself:
{{{
ALTER TABLE `wp_postmeta` ADD INDEX `wp_postmeta_key_id` (`meta_key`,`post_id`);
}}}
" DuckDagobert
Future Releases 51769 Full-text search support Database normal normal Awaiting Review enhancement new dev-feedback 2020-11-13T12:18:27Z 2022-08-16T12:16:23Z "Let's talk about first-class fulltext search support in WP core. Is there any reason not to support FULLTEXT search in WordPress core for newer MySQL versions with the current search mechanism serving as a fallback for older MySQL versions?
MySQL supports FULLTEXT indexes for MyISAM tables since version 3.23.23 and for InnoDB tables since 5.6.
As @TimothyBlynJacobs noted, WordPress supports versions back to MySQL 5.0:
https://github.com/WordPress/wordpress-develop/blob/master/src/wp-includes/version.php
src/wp-includes/version.php
As @desrosj noted:
* The recommended versions are MySQL >= 5.6/MariaDB >= 10.1 as per https://wordpress.org/download/.
* According to the WordPress stats page, a considerable amount of sites use MySQL 5.5 (35%), and some still use 5.1/5,0. Raising support to >= 5.6 is not really an option.
The last discussion about that feature I found was from 10 years ago so maybe it's good time to re-evaluate:
https://core.trac.wordpress.org/ticket/14722
" zieladam
Future Releases 37692 Introduce WP_Database_Table base class Database normal normal Awaiting Review enhancement new dev-feedback 2016-08-17T13:23:28Z 2017-03-15T17:20:50Z "I've always thought it odd that WordPress only versions blogs, and not each individual database table. On one hand, it's great that the schema changes rarely enough that WordPress core would not get a lot of use out of it. On the other, many plugins would benefit pretty hugely from a smart base class that encapsulated a lot of the procedural work of having custom database tables and maintaining a schema.
BuddyPress, for example, comes with several object & metadata pairs, for groups, activity, friends, profiles, messages, notifications, etc... It currently takes WordPress's approach of having a big-dumb installer and a bunch of tangled together upgrade routines. I'd love it if each component could manage it's own schema on the fly, with it's own upgrade routines and database table classes to separate the responsibilities, but without needing to setup `admin_init` hooks and `version_compare()` checks for each component.
Django has something similar currently, as do other open-source projects like Piwik, GitLab, Mattermost, etc...
----
I'm imagining that each core database table would extend the `WP_DB_Table` class, each with their own `db_version` and their own methods for upgrading to newer versions.
Global tables (like `wp_users`) would use `site_id` `-1` in the `wp_sitemeta` database table to distinguish them as global, and not per-network or per-site.
----
This way, when a plugin like WooCommerce wants to introduce new database tables, they just extend the base class, pass in an array of column-keys & attributes, and the base class would handle the `$wpdb` table registration and all of the other bits and bobs.
Eventually... eventually it could get paired up with some kind of a `WP_Base_Query` class to automatically handle cache-key assignments, and generate basic crud methods based on the parameters in the associated `WP_Database_Table` extension.
----
I think this becomes particularly useful in REST applications, where WordPress's APIs can be used and extended for any manner of scalable data storage outside of the core database schemas.
Obviously this is a huge idea with lots of moving parts, and without a core need ideas like this are pretty slow on the go. I am already starting to do something similar in my own plugins though - just without the base class - and it feels much easier to maintain each plugin knowing there is a similar convention between them.
See: https://code.flox.io/stuttter/wp-site-aliases/blob/master/includes/class-wp-site-aliases-db-table.php" johnjamesjacoby
Future Releases 51945 Dates in REST API responses are incompatible with date-time JSON schema format Date/Time 4.7 normal normal Awaiting Review defect (bug) new dev-feedback 2020-12-05T13:08:06Z 2020-12-07T13:14:31Z "Most date properties of objects in a REST API response (for example the published date of a post) declare a JSON schema format of `date-time`. This is incorrect because `date-time` format requires a timezone identifier and dates in the REST API do not include one.
The `date-time` format uses IETF RFC 3339 which differs from ISO 8601. The former requires a timezone identifier, the latter does not. Notably several date field descriptions in the REST API reference ISO 8601, which is also incorrect.
Validating a REST API response against its JSON schema therefore fails due to the incorrect date format.
== Tested with:
* [https://github.com/ajv-validator/ajv AJV]
* [https://github.com/java-json-tools/json-schema-validator json-schema-validator]
Note that [https://www.jsonschemavalidator.net/ Json.NET Schema] contains [https://github.com/JamesNK/Newtonsoft.Json.Schema/issues/105 a bug which means it incorrectly allows a date without a timezone identifier].
== References:
* [https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.7.3.1 JSON schema standard section 7.3.1] where it states that the `date-time` production from IETF RFC 3339 is used for its `date-time` format
* [https://tools.ietf.org/html/rfc3339#section-5.6 IETF RFC 3339 section 5.6] where its `date-time` production ABNF is specified
== Potential Solutions
1. Switch to using IETF RFC 3339 format for dates, and use the time zone of the site as the timezone identifier
2. Switch to using IETF RFC 3339 format for dates, use `Z` as the timezone identifier, and convert all dates to UTC
3. Remove `date-time` from the JSON schemas and don't change the format or timezone used for dates
I think option 1 is preferable but this is technically a breaking change as REST API consumers might not expect a timezone identifier in the date fields even though the `format` declares that one will be present.
" johnbillion
Future Releases 48740 Add constant for database date format Date/Time normal normal Awaiting Review enhancement new dev-feedback 2019-11-20T13:08:57Z 2019-11-20T14:18:36Z "A lot of core Date/Time code is dealing with `Y-m-d H:i:s` format, as stored for posts and other objects in database.
This is effectively a so-called ""magic"" string, which is not self-explanatory and prone to user error if typed by hand (I messed up `i` with `m` for minutes more than once probably).
Since there is no upstream PHP constant for this format, I suggest we introduce one in core and use it in place of magic string:
{{{#!php
define( 'WP_DATE_MYSQL', 'Y-m-d H:i:s' );
}}}
Not absolutely sure about the name, I used `DATE_MYSQL` as class constant before, but `WP_DATE_DATABASE` might be more appropriately generic. To my knowledge there isn't a specific ISO or RFC designation for such format.
If there is agreement on the need and the name I'll work on a patch for replacement and switch from strings in core." Rarst
Future Releases 28988 Detect Time Zones automatically at installation Date/Time normal normal Awaiting Review enhancement new dev-feedback 2014-07-22T19:19:50Z 2021-05-05T19:04:34Z "Currently, upon installing WordPress, one of the steps I always take is to go to Settings > General > Timezone to manually set my time zone. I've been using Wordpress for eight years, so I know to do it and how to do it, and it's just a minor inconvenience. However, I have seen people new to this platform be confused and/or not know how to change this.
Is it technologically possible to use a geolocation service to query the IP address of the computer installing Wordpress and automatically set that service's best guess as to time zone, perhaps during the setup process?
I would envision the UI option remaining in settings, in case, for example, a developer in one time zone builds a site for a client in another. But automatic detection would be perfect for the average new user. It would be one more element that just works out of the box for those who aren't particularly tech savvy.
I did some searching in Trac to see if I could find a similar ticket and couldn't find any." danielmount
Future Releases 10660 Time zone suggester based on nascent WordPress.org API call rmccue Date/Time 2.8.4 normal normal Future Release feature request assigned dev-feedback 2009-08-20T05:59:42Z 2019-09-02T06:45:02Z "The attached patch uses a new API call to http://api.wordpress.org/core/ip-to-zoneinfo/1.0/ to retrieve a suggested time zone based on client (not server) IP address.
A button is added next to the existing dropdown list of time zones providing the option to ""Suggest a time zone"". This calls the API using an AJAX/JSONP request which then auto-selects a time zone for the user from the dropdown.
Visual feedback is via a spinner when fetching and then a text response.
Additionally the Date and Time settings have been split out to a new settings page.
Related ticket: #10324" sambauers
Future Releases 52779 Error with saved blocks Editor 5.7 normal normal Future Release defect (bug) new dev-feedback 2021-03-11T14:38:12Z 2021-08-30T20:36:18Z After update to WordPress 5.7 there is no possibility to use saved blocks without make changes in original bock. That's mean I would like to use saved block, make some changes when I've added it to the post and didn't make change in saved block – it is not posible now. Could you please give me a tip how to use previous option of using saved blocks? lumay
Future Releases 58508 Gutenberg and CSS Editor 6.2.2 normal normal Awaiting Review defect (bug) new dev-feedback 2023-06-11T00:20:52Z 2023-06-11T00:20:52Z "ENGLISH
Hello. I created a page, but when I deleted a photo from the gallery, all the content was deleted.
Going to the revisions I was able to restore the content, but when updating, everything is deleted again.
I changed the version from PHP8.0 to 8.1 but still the same.
I deactivated the plugins and the error was repeated.
Finally, with all these changes, I restored the page revision that has all the content, but I added a full stop to some text, I UPDATED and the content was no longer deleted.
I activated all the plugins and the error returned.
I started to disable GUTENBERG first, restored the revision without making changes to it, saved the page and it works fine.
PS: I had to change from PHP8.1 to 8.0 because it throws errors in the Backend (css is disabled, still changing themes)
THEME: ASTRA
WP: 6.2.2
PHP at startup: 8.1
PHP at the end: 8.0
----
ESPAÑOL
Hola. He creado una página, pero al borrar una foto de la galería, se borró todo el contenido.
Yendo a la revisiones pude restaurar el contenido, pero al actualizar, vuelve a borrarse todo.
Cambié la versión de PHP8.0 a 8.1 pero seguía igual.
Desactivé los plugins y el error se repetía.
Por último, con todo estos cambios, restauré la revisión de página que tiene todo el contenido, pero le agregué un punto final a un texto, ACTUALICÉ y ya no se borró más el contenido.
Activé todos los plugins y volvió el error.
Empecé a desactivar primero GUTENBERG, restauré la revisión sin hacerle cambios, guardé la página y funciona bien.
PD: Tuve que cambiar de PHP8.1 a 8.0 porque arroja errores en el Backend (se desactiva el css, aún cambiando de temas)
TEMA: ASTRA
WP: 6.2.2
PHP al inicio: 8.1
PHP al final: 8.0
" aiteok
Future Releases 50548 Gutenberg default style not work Editor 5.4.2 normal normal Awaiting Review defect (bug) new dev-feedback 2020-07-03T10:46:23Z 2020-07-04T04:24:09Z "Hello,
I found the Gutenberg default style dropdown not work.
Please check the attached document.
Thanks.
" rkradadiya
Future Releases 54982 "In 5.9 (classic) post editor the author pulldown only lists users with ""edit_posts"" capability" Editor 5.9 normal normal Awaiting Review defect (bug) new dev-feedback 2022-01-28T21:52:56Z 2022-04-09T00:22:22Z "In WordPress 5.9 in the classic editor when editing a post, the “Author” pulldown only shows the administrators. In 5.8.3 it listed all of the authors (and contributors). Here’s the screenshot from 5.9 when using the classic editor: https://photos.app.goo.gl/zQjK441TmNKL2wJf9
It still shows all the authors (in 5.9) when I switch to the block editor. Here’s the screenshot using 5.9 with the block editor:
https://photos.app.goo.gl/ZAiT1gdDHT9F6RLF7
In 5.8.3 it lists all of the Authors in the Author dropdown when using the classic editor:
https://photos.app.goo.gl/qkyn4Bi3X3oDz3537
It looks like this was due to a change in the function post_author_meta_box in the file src/wp-admin/includes/meta-boxes.php
It used to display all of the authors and contributors regardless of their capabilities and now it only displays users that have the ""edit_posts"" capability.
Here's the commit that introduced the problem:
https://github.com/WordPress/wordpress-develop/commit/0cf6d3e48d18b4e8cb932fa02bb82bf5de14a48c" joneiseman
Future Releases 59149 Inconsistent Behaviour of Block Editor while Adding/Searching for Blocks Editor 6.3 normal normal Awaiting Review defect (bug) new dev-feedback 2023-08-19T05:56:17Z 2023-09-02T06:32:59Z "WP Version 6.3
I'm facing an strange issue while searching the fields from the block editor.
When I'm at the end of page or when scroll to end of page then I'm trying to search a custom block it suddenly jump from its position. for details refer the below video url for same.
https://www.awesomescreenshot.com/video/20061317?key=12384a49ae5e729e95556d9498c1a107
" dhruval04
Future Releases 45829 New editor replaces > with > within tag Editor 5.0.2 normal major Awaiting Review defect (bug) new dev-feedback 2019-01-04T13:09:07Z 2020-01-14T19:07:58Z "Hi,
I just updated to WordPress 5 and started using the new block editor.
I typeset source code in my posts using a tag. This code contains a > comparison operator. Upon saving my draft, > gets replaced with >, and this entity is also displayed in the article preview.
This happens even if I disable the visual editor.
The old editor does not present this bug and installing the Classic Editor extension allowed me to work around this." yannsalmon
Future Releases 47554 Post history Editor 5.1.1 normal major Future Release defect (bug) new dev-feedback 2019-06-18T10:11:49Z 2020-11-24T04:07:38Z "Hello everybody.
This ""bug"" might be a timeout issue or might have something to do with the server times, but it could be fixed from software side, as far as I see it. It also might be a Gutenberg issue, but its look like it is from the core.
Classic:
- User A opens the post and write some content.
- User B also opens the same post an clicks on take over.
- User A gets pop up with info about the take over and can go to ""all posts""
Problem (Version 5.1.1):
1. Popup for user comes to late -> content not saved
2. Popup doesn't appear -> user saves post which will be override from user B's content.
Solution:
1. auto save e.g. every 10 seconds
2. History besides the post, e.g. on the very right column.
History contains lets say the last 5 or 10 (configurable) versions of the post.
Users can see a diff or can restore the whole last version of the entry.
- History doesn't contains versions of auto save (only last auto save)
--- User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Iridium/2018.11 Safari/537.36 Chrome/71.0.0.0
" d3n15
Future Releases 50653 Remove the _doing_it_wrong from WP_Block_Patterns_Registry::unregister() Editor 5.5 normal normal Future Release defect (bug) new dev-feedback 2020-07-13T21:51:41Z 2020-07-26T01:50:07Z "There's a `_doing_it_wrong()` call inside `WP_Block_Patterns_Registry::unregister()` when you try to unregister a block pattern that doesn't exist.
IMO this is incorrect usage of `_doing_it_wrong()` because the function hasn't been incorrectly called, it's just been called with invalid data.
----
In addition, the `register()` and `unregister()` functions in this class ought to be returning a `WP_Error` instead of boolean `false`. Should we improve this for 5.5?" johnbillion
Future Releases 55288 Site Editor on 5.9.1 fails to find homepage template for FSE themes, on WP subdirectory installation Editor 5.9.3 normal critical Awaiting Review defect (bug) new dev-feedback 2022-03-01T18:47:29Z 2022-08-11T19:29:10Z "I'm getting an error when launching the site editor on 5.9.1, stating “The editor is unable to find a block template for the homepage”. This happens on both Twenty-Twenty-Two and a custom FSE theme (otherwise functional, has templates/single.html and templates/index.html). **My WP installation is in a subdirectory**, using the [[https://github.com/roots/bedrock|Bedrock]] site structure, so the editor URL is `https://example.test/wp/wp-admin/themes.php?page=gutenberg-edit-site`
I've tried it on PHP 7.4.25 and 8.0.14. I've confirmed it still happens with all plugins deactivated.
Notably, activating the Gutenberg plugin version 12.6.1 eliminates the error and the editor loads correctly.
There are several other reports of the same error in this Twenty-Twenty-Two forum thread: https://wordpress.org/support/topic/the-editor-is-unable-to-find-a-block-template-for-the-homepage/
The error code output from the copy button is
{{{
Error: `getHomepageParams`: HTTP status error, 404
at https://example.test/wp/wp-includes/js/dist/edit-site.js?ver=403e01f2b098b6a656118a51787581cb:8766:13
at async getHomepageParams (https://example.test/wp/wp-includes/js/dist/edit-site.js?ver=403e01f2b098b6a656118a51787581cb:8762:20)
at async redirectToHomepage (https://example.test/wp/wp-includes/js/dist/edit-site.js?ver=403e01f2b098b6a656118a51787581cb:8797:28)
at async reinitializeEditor (https://example.test/wp/wp-includes/js/dist/edit-site.js?ver=403e01f2b098b6a656118a51787581cb:9067:5)
}}}
" andronocean
Future Releases 55548 "Unchecked ""Uncategorized"" checkbox re-checks itself upon publish or update of a post" Editor 5.9.3 normal normal Awaiting Review defect (bug) new dev-feedback 2022-04-08T21:02:10Z 2022-04-08T21:02:10Z "A WordPress-based news website's editorial team has problems with the ""Uncategorized"" category.
1. They create a post and check the desired category and uncheck the default ""Uncategorized"" category.
2. Then they click ""Publish"".
3. At the last second during the Publish operation, the Block Editor unchecks the user-selected category and re-checks ""Uncategorized"".
4. Then they have to go back into the post and attempt to uncheck ""Uncategorized"" and recheck the desired category.
They have to do step 4 three or four times to get the result they want. Or they just use ""Quick Edit"" to change it in the post list.
It doesn't happen every time and is sometimes difficult to reproduce. But it happens often enough to be a problem. I cannot find a way to consistently reproduce it. Nor can I find any indication that this is a known issue with WordPress. It will happen with or without plugins enabled.
If there's no easy way to investigate or fix this in core, is there a way to add a script somewhere in the theme's functions.php or a jQuery script somewhere to ensure that ""Uncategorized"" *never* gets checked and that the originally-intended category remains checked? All the searches I do on Google for this topic ironically just reveal a bunch of posts on peoples' blogs that are set to ""Uncategorized""." rcwatson
Future Releases 53439 Updating failed. The response is not a valid JSON response. Editor 5.7.2 normal major Awaiting Review defect (bug) new dev-feedback 2021-06-17T10:57:16Z 2021-06-24T23:44:00Z "Hi, There seems to be a issue where when one tries to save a page you get the error ""Updating failed. The response is not a valid JSON response."" The only thing that seems to work is to set the permalink setting to plain.
I believe the issue has something to do with paths. I am running PHP 7.0.27
I have installed a fresh install of WP in wwwroot on a hosted service Hostek. Updated to 5.7.2. The only plugin I have is gutenberg using 2021 Theme. Set the permalink to Post Name. No problems with this setup.
Then I installed a test WP installation into wwwroot/_test/abc. Updated to 5.7.2. This only has gutenberg and 2021. Set the permalink to Post name. - WP throws the error and refuses to save the page - I do get offered to restore the backup so some sort of saving takes place. Following online guidance, I change the permalink to plain and then WP will save the page.
It seems that the issue has something to do with json not liking that WP is not installed at the root of the server. Possibly json is testing the slug and erroring out due to path conflict.
error site would be abc.com/_test/abc/slug.
good site is abc.com/slug
Kind Regards
Richard
" lupussolaris
Future Releases 51158 "With ACF Blocks in 5.5, ""enqueue_assets"" causes fatal error" Editor 5.5 normal blocker Awaiting Review defect (bug) new dev-feedback 2020-08-27T15:20:27Z 2020-09-03T00:49:09Z "This is related to ACF Pro, but didn't happen until the upgrade to WP 5.5. I downgraded to 5.4.2 to make sure and I can verify it's a WordPress issue, likely related to REACT or the Rest API. I don't know enough about the Gutenberg editor to know if it's specific to that, so I'm posting here with ""second-opinion"" Workflow Keyword.
I have several custom blocks created using ACF Pro. One of them requires multiple javascript files and uses the ""enqueue_assets"" attribute to enqueue them.
When I try to edit any post, I get a popup error that covers the entire screen saying ""The editor has encountered an unexpected error."" and has 3 buttons: ""Attempt Recovery"", ""Copy Post Text"", ""Copy Error"". None of the buttons work.
In the console, I get these errors:
{{{
react-dom.min.js?ver=16.9.0:103
TypeError: First argument must be a String, HTMLElement, HTMLCollection, or NodeList
at t.exports (compose.min.js?ver=c4775e2aa9288586791e26a980eff851:9)
at e.value (compose.min.js?ver=c4775e2aa9288586791e26a980eff851:9)
at new e (compose.min.js?ver=c4775e2aa9288586791e26a980eff851:9)
at compose.min.js?ver=c4775e2aa9288586791e26a980eff851:9
at Vb (react-dom.min.js?ver=16.9.0:104)
at Xi (react-dom.min.js?ver=16.9.0:151)
at unstable_runWithPriority (react.min.js?ver=16.9.0:26)
at Ma (react-dom.min.js?ver=16.9.0:52)
at Yb (react-dom.min.js?ver=16.9.0:150)
at O (react-dom.min.js?ver=16.9.0:120)
components-1480.js:24
Uncaught TypeError: Cannot read property 'clientHeight' of null
at G.hasOverflowedContent (components-1480.js:24)
at G.fitTitle (components-1480.js:24)
at components-1480.js:24
}}}
After the second error, the first error repeats and keeps getting hit every few milliseconds, telling me it has thousands of times within a minute.
I'll post this with ACF Pro, too, but wanted to mention here in case it's a WordPress bug. I don't know how many people use ACF blocks in the Block Editor, but it completely prevents people from editing posts if they have some.
Thanks!" bronsonoquinn
Future Releases 55586 `get_block_wrapper_attributes` generates PHP notices. Editor 5.6 normal normal Awaiting Review defect (bug) new dev-feedback 2022-04-18T16:12:37Z 2022-04-21T20:48:43Z "To replicate this issue:
1. Set both `WP_DEBUG` and `WP_DEBUG_LOG` in wp-config.php to `true` so that errors will be logged to `wp-content/debug.log`.
2. Using WP-CLI, run `wp shell`.
3. Call `get_block_wrapper_attributes();` in the terminal.
4. Note the errors and call stack output in `wp-content/debug.log`. It will look something like this:
[18-Apr-2022 16:05:27 UTC] PHP Notice: Trying to access array offset on value of type null in wp-includes/class-wp-block-supports.php on line 94
[18-Apr-2022 16:05:27 UTC] PHP Notice: Trying to access array offset on value of type null in wp-includes/class-wp-block-supports.php on line 96
`get_block_wrapper_attributes()` makes a singleton call to retrieve the `WP_Block_Supports` object, which in turn calls `apply_block_supports` on that object. The `apply_block_supports` method presumes that there is an editor block already assigned to the object, and attempts to retrieve the block type by using the `blockName` set on in the array of the `$block_to_render` property. Since the default value on the `WP_Block_Supports` object is `null`, this generates the error.
It seems that the easiest solution here is to return an empty array from `apply_block_supports` if `$block_to_render` is not set. Since `get_block_wrapper_attributes` is a public function that does not accept a block, it can be called outside of a sequence where `WP_Block_Supports` might already have set properties on the object. " jmichaelward
Future Releases 57237 file_exists(): open_basedir restriction in effect. File(core/post-comments) is not within the allowed path(s) Editor normal critical Awaiting Review defect (bug) new dev-feedback 2022-11-30T21:22:36Z 2022-12-15T13:33:18Z "Hello,
After updating wordpress to version 6.1.1 I see this php warning messages:
{{{
Warning: file_exists(): open_basedir restriction in effect. File(core/post-comments) is not within the allowed path(s): (/data/web/virtuals/291601/virtual) in /data/web/virtuals/291601/virtual/www/wp-includes/blocks.php on line 532
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/291601/virtual/www/wp-includes/blocks.php:532) in /data/web/virtuals/291601/virtual/www/wp-includes/pluggable.php on line 1416
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/291601/virtual/www/wp-includes/blocks.php:532) in /data/web/virtuals/291601/virtual/www/wp-includes/pluggable.php on line 1419
}}}
I can't get into admin. I use php 8.1.11.
I try to rename all plugins via FTP, but nothing change.
On my another testing website I see the same php warning messages, but I can reach the wordpress administration. So I tryed to disable all plugins and change theme to default ""Twenty Twenty-Two"" but nothing change.
I am not the only one who suffer with these errors. Here for examle:
https://stackoverflow.com/questions/74327979/wp-error-warning-file-exists-open-basedir-restriction-in-effect-filecore
Thank you,
David" davidki
Future Releases 44470 meta property=“og:image” doesn't register if an image is executed via a shortcode in WP Post and Pages Editor 4.9.6 normal critical Awaiting Review defect (bug) reopened dev-feedback 2018-06-27T03:28:41Z 2018-06-30T00:34:20Z "I want to try and explain a WordPress core issue and bug, in which I dont feel there is an available solution, at least I dont think after exhaustive research. I ran many many tests on fresh WP installations and twenty17 themes. And some may suggest this is a 3rd party plugin issue, while I am suggesting that it is both a Core and 3rd Party Plugin issue with the most widely used plugin in the world perhaps WPSEO. Applying shortcodes to WP post and Pages, of course it renders fine in the front-end, the output code that is. However, many recent updates to social media platforms Open Graph Protocols. The WPSEO plugin cannot understand that an image is being executed via php through a shortcode, unless the image is hard-coded directly into the WP page editor then it works fine. Problem is, no image executed from literally any 3rd party plugin shortcode contained within a wordpress post or page will execute the meta property=""og:image"" in the .... In short WordPress Core does not support opengraph functions or plugins when shortcodes are being used.
one of the last tests to try to continue to prove this is a WP core issue from their last several updates, that I am certainly of course trying to gain some attention on, that even an out of the box wordpress stock short codes like [gallery ids=""21""] to display images, cool enough that it displays visually in the post editor, still impossible to hook into the main property=og:image meta. Of course the other primary issue, no rhyme or reason either that a static front page cannot display the meta in the either by any know third party plugin or hard coded functions in the theme directory. Being that exhaustive testing has been done, without the modification of stock wordpress core files, continues to lead me to believe that this is a core issue again.
And after a lot of I intelligent research I believe wordpress next core update should fix this. Please read some other additional testing I have done on this issue as well. I am certainly trying to gain some attention to this issue because developers need to be able to execute php via shortcodes into wp post editors therefore execute images in a dynamic way via short codes and still be in compliance with al know third party plugins like yoasts og: settings and the social media platform og protocols. https://wordpress.stackexchange.com/questions/306973/property-ogimage-doesnt-register-with-including-a-php-file-as-a-shortcode-in" nlstm
Future Releases 53026 "register_block_type_from_metadata fails if path points to a JSON file that is not named ""block.json""" Editor 5.5 normal normal Awaiting Review defect (bug) new dev-feedback 2021-04-13T14:43:43Z 2021-04-26T18:06:11Z "If a path to a file is given that does not end with ""block.json"", the function will exit early and the block won't be registered because the path to the json file is not found.
The documentation states that either a directory or a path to a JSON file can be given:
{{{
Parameters #Parameters
$file_or_folder
(string) (Required) Path to the JSON file with metadata definition for the block or path to the folder where the block.json file is located.
}}}
Example:
register_block_type_from_metadata() is called with $path = path_join(__DIR__,'block-section.json'):
{{{#!php
, and then in tinyMCE I switch from Text to Visual, my caption breaks; sometimes it is reformmatted, sometimes the caption shortcode is removed.
Test caption:[[br]]
[[br]]
Label Description [[br]]
Text More text [[br]]
" iantresman
Future Releases 37577 "Allow users to ""petition"" for a post lock to be released" Editor normal normal Future Release enhancement new dev-feedback 2016-08-04T21:23:34Z 2020-05-25T17:12:05Z "Our post locking prevents two people from editing the same post, but introduces some awkwardness, in that your options are to wait and hope they exit the post (which slows you down), or boot them out (which could be rude or disruptive), or communicate with them through some other medium (which you might not have). It would be nice if there was a third option... to ""raise your hand"" about wanting to edit the post. If the editing user is actually working on the post, they could say ""not now,"" or they could ""save and release"". Or, if there is no response, that could be communicated to the petitioning user, as that could indicate that the editing user has left the post open and abandoned their computer. We could even communicate when the last mouse movement or on-page activity was." markjaquith
Future Releases 60001 Deprioritize categories Editor normal normal Awaiting Review enhancement new dev-feedback 2023-12-01T19:26:44Z 2024-02-14T00:08:28Z "In the old days of blogging, we used categories. Nice, hierarchical structures which we all understood how they worked. However, as I was recently discussing the many issues around tags and categories with @matt, he made a strong point: people coming into blogging these days might understand tags a whole lot better than categories.
We also agreed that the fact that by default, WordPress ships with two taxonomies, (categories and tags), is less than ideal from a new user UX perspective.
So I'm proposing a change (for which @matt should actually get credit as he said it first in our conversation): we should (slowly) deprioritize categories. To start, on the pre-publish checks, we should not suggest people add a category to their post if they've never done so, or if they only have posts in the ""Uncategorized"" category.
I'd also suggest removing the Categories panel if that's the case. Would love to hear other opinions, or see implementations :)" joostdevalk
Future Releases 58278 [Query Loop][Post Template][Custom dynamic block] Impossible to pass query loop context to a custom dynamic block as the post template context is hard coded. Editor 6.2 normal normal Awaiting Review enhancement new dev-feedback 2023-05-09T13:14:16Z 2023-05-09T13:14:16Z "Hello.
**Context** :
I'm writing a query loop variation, with post templates, then a custom dynamic block.
**Problem** :
I was trying to get the query loop id inside the custom dynamic block and could not, even when specifying usesContext and providesContext block.json configuration for my dynamic bloc of the core/post-template one.
**Observations** :
After some investigation, I found that the post template uses the `render_block_core_post_template` function as render callback inside the `post-template.php` file
Line 93 of this file, we can see that the function hard codes the context that is then passed to the block :
{{{#!php
$block_content = (
new WP_Block(
$block_instance,
array(
'postType' => get_post_type(),
'postId' => get_the_ID(),
)
)
)->render( array( 'dynamic' => false ) );
}}}
There's no filter or mechanism allowing us to provide more context here which is quite blocking.
**Suggestion** :
We could do something like this instead :
{{{#!php
// Render the inner blocks of the Post Template block with `dynamic` set to `false` to prevent calling
// `render_callback` and ensure that no wrapper markup is included.
$context = array(
'postType' => get_post_type(),
'postId' => get_the_ID(),
);
//Check if additional context is provided by ancestor blocks
if (!empty($block->block_type->provides_context)) {
foreach ($block->block_type->provides_context as $context_name) {
if (array_key_exists($context_name, $block->context)) {
$context[$context_name] = $block->context[$context_name];
}
}
}
$block_content = (
new WP_Block(
$block_instance,
$context
)
)->render( array( 'dynamic' => false ) );
}}}
With this code, I was able to specify and get the queryId to my custom block.
**Steps to reproduce** :
- Create a query loop variation
- In the variation, set the innerblocks setting to use a custom dynamic block.
- In your custom block block.json file, we're trying to use the queryId as the context.
- As it's not working, I've also specified that I wanted the core/post-template block to provide the queryId via providesContext.
- Realize the core/post-template block does not provide any context besides the hard coded one mentioned above.
**Expected output** :
If we specify that the core/post-template block should specify a context, it should be taken into account alongside the default values that are `postType` and `postId`
Thank you for your work." jdmweb
Future Releases 54288 Argument for allowed blocks when registering a post type Editor normal normal Future Release feature request new dev-feedback 2021-10-19T08:54:12Z 2021-10-19T23:15:41Z "Add argument for allowed blocks when registering a post type:
{{{
function wporg_custom_post_type() {
register_post_type('wporg_product',
array(
'labels' => array(
'name' => __('Products', 'textdomain'),
'singular_name' => __('Product', 'textdomain'),
),
'public' => true,
'has_archive' => true,
'allowed_blocks' => array(
'core/image',
'core/paragraph',
'core/heading',
'core/list',
'core/embed',
'core/missing',
'core/button',
'core/buttons',
),
)
);
}
add_action('init', 'wporg_custom_post_type');
}}}
" smeedijzeronline
Future Releases 50823 Miss button add new post on page edit post (editor guttenberg) audrasjb* Editor 5.4.2 normal major Future Release feature request accepted dev-feedback 2020-07-31T03:04:15Z 2022-10-20T05:40:29Z "Hey guys,
In the classic Editor when you were adding a post, you already had the button to add another one on the same screen and it speeds up the process a lot, please bring it back! (in red: add new)[[Image(https://prnt.sc/tpkyp8)]]" welitonmartins
Future Releases 56440 Embed blocks in widget areas caching in many posts Embeds 6.0.1 normal normal Awaiting Review defect (bug) new dev-feedback 2022-08-25T16:01:32Z 2022-09-06T17:04:13Z "When I am using blocks for my widget areas I can include an oEmbed easily enough. For example, I might include a video in a sidebar or footer widget area using the embed Gutenberg block. This is great!
Then I notice that ''every single post'' that a user visits which displays that widget area as part of its templates will get duplicated post_meta entries caching the embed. This quickly pollutes the post_meta table with hundreds of duplicate entries for the same embed on different posts.
These ""_oembed_xxx"" and ""_oembed_time_xxx"" entries all have the same identifier for the ""xxx"" since they all come from the same embed in the widget area. Shouldn't these entries be associated with the widget area instead of the post?
In fact, why are these oembed cache values stored in post_meta at all? Isn't this the kind of thing that deserves more universal storage in case the same embed is used on more than one page in any circumstance?
" eceleste
Future Releases 55762 All export xml files have same name Export normal normal Future Release enhancement new dev-feedback 2022-05-18T09:09:58Z 2022-06-07T14:38:53Z All download export files, whether posts or pages give the same file name. Its difficult to manage if you have several of them because unlike a picture or a word file that you can open and see the contents, a user cannot see the content of the xml file until they upload into a WordPress panel. Loading the wrong file means one needs to clean up and then go back to look for the right file. I suggest each xml download from the Export panel bear the unique name of the file. martiniwebb
Future Releases 14757 users with no posts are not exported Export 3.1 normal normal Future Release enhancement reopened dev-feedback 2010-09-01T18:14:31Z 2020-07-06T14:48:39Z I just exported a large standalone site and imported into a multisite setup, and I discovered that a number of users who hadn't yet posted anything didn't get moved to the new site. sillybean
Future Releases 59991 Included imagesLoaded libary broken External Libraries 6.4 normal normal 6.6 defect (bug) new dev-feedback 2023-11-30T10:48:57Z 2024-02-17T14:24:15Z On the current WordPress release version, the included imagesLoaded javascript file is broken. The minified file appears to include two minified versions of the actual script and breaks functionality. To reproduce, see wp-includes/js/imagesloaded.min.js. physalis
Future Releases 54739 Upgrade PHPMailer to 5.2.27 for WordPress < 5.3 (and to 6.5.3 for above 5.4) External Libraries normal normal Awaiting Review defect (bug) new dev-feedback 2022-01-04T16:59:56Z 2022-01-19T13:18:43Z "In WordPress 5.3 the PHP Mailer library was updated to the latest version from the 5.2-branch. See #40472
In WordPress 5.5 the PHP Mailer library was updated to the new version 6. See #41750
As background updates are available from 3.7 on we could update the PHP mailer library down to version 3.7 to protect those installations from being abused for spamming.
I checked https://wordpress.org/about/stats/ and WordPress installations with version smaller than 5.3. These sum up to 24.15 %.
We only can background update from 3.7, so we need to look at WordPress 3.7 to 5.2 which shows us 18,52 % of all installation which are unprotected.
This would at least close two from those three known security problems with this version:
https://www.cybersecurity-help.cz/vdb/phpmailer_sourceforge_net/phpmailer/5.2.22/
Quoted from https://github.com/PHPMailer/PHPMailer/releases/tag/v5.2.27:
> Note that the 5.2 branch is deprecated and will not receive security updates after 31st December 2018.
The same goes for WP 5.5 to 5.8
-> WordPress 5.5 (PHP Mailer 6.1.6)
-> WordPress 5.6 (PHP Mailer 6.2)
-> WordPress 5.7 (PHP Mailer 6.3)
-> WordPress 5.7.2 (PHP Mailer 6.4)
-> WordPress 5.7.3 (PHP Mailer 6.5.0)
WordPress 5.9 will contain PHP Mailer 6.5.3 as the latest version.
As version 6.4.1 and 6.5 are security releases this could be relevant too:
https://github.com/PHPMailer/PHPMailer/releases?q=security&expanded=true
Although this is related to security it seems that the other tickets about updating this library are handled in public so I created this one here too." zodiac1978
Future Releases 10955 Replace ThickBox External Libraries 2.9 normal normal Future Release enhancement reopened dev-feedback 2009-10-14T14:37:42Z 2023-11-10T16:01:17Z "Have you thought about replacing ThickBox? It is no longer under development (as their site says) and it doesn't conform to standard jQuery plugin practices. For example, I'm trying to use it for a plugin of mine and I'm wanting to tie into the ""onClose"" event for ThickBox which isn't too easily done. I know I could just include one of the other plugins, like colorbox, with my plugin but I think it'd be a great service to other developers if you included a more flexible library.
(I would have assigned this to 3.0+ but the option isn't available.)" aaron_guitar
Future Releases 60689 Concerning use of external libraries External Libraries normal normal Awaiting Review feature request new dev-feedback 2024-03-05T08:20:16Z 2024-03-05T10:17:53Z "As you get more advanced in using wordpress the need arises to use external libraries like bootstrap,font library,icon libraries,tailwind etc,off course this can be added using insert code plugins.the biggest disadvantage of this is that
1.you cannot maintain libraries version
2.You cannot delete the libraries.
This problem can be solved through a feature request to create an interface to manage external libraries.In this feature:
1.User adds external libraries through a url
2.user can edit the libraries url
3.user can delete the libraries,libraries ceases to exist in the wordpress environment
4.Ability of the interface to distinguish/or give user opportunity to distinguish between and
Thus it does not currently seem possible to serve the video from a CDN.
https://cdn.stratuscloud.co.za/wp-content/uploads/2017/06/Flying.mp4
vs
https://www.stratuscloud.co.za/wp-content/uploads/2017/06/Flying.mp4
Is it possible to override this value on database or file level or would this require an additional feature to be added to the Theme?" fbotha
Future Releases 40052 Issue with WP_Cache not invalidating stale cache after an update request Cache API 4.7.3 normal major Awaiting Review defect (bug) new 2017-03-06T22:40:50Z 2017-03-08T20:56:08Z "Hi,
There appears to be an issue with WP_Cache if/when an object-cache has a stale value, and you attempt to update that value to the value that already exists in the database ( race condition as an example ). The object-cache in this case will never be invalidated until the TTL is hit, or if/when the cache is flushed.
This affects high volume sites that has repetitive actions.
An example of this happens on our site in production on user_meta, where quick endpoints fire that requires a set value on user_meta, however occasionally redis-cache will not get updated with the new value, even though the wp database does have the proper value.
In this case there's an infinite loop where wp_cache will return the old stale value, and the code will correctly attempt to update it to the new value, but WP thinks the value is already correct, and thus the object-cache will not be updated.
Potentially related bugs are #26779 & #31245
An easy solution is to add a wp_cache_delete onto lines 195/196 here: https://github.com/WordPress/WordPress/blob/master/wp-includes/meta.php#L190-L253" cookiesowns
Future Releases 39382 Skipping term cache cleaning when cache invalidation is suspended Cache API 4.3 normal normal Awaiting Review defect (bug) new 2016-12-23T16:15:41Z 2017-03-17T01:58:09Z "Since v4.3, `clean_term_cache` checks if cache invalidation is suspended, and bails early if it is.
This behavior might be a bit obscure and unexpected, based on the documentation of `wp_suspend_cache_invalidation`.
I understand that the responsibility of ensuring that the cache is properly invalidated falls on the caller of `wp_suspend_cache_invalidation`, according to the Codex, but I believe that the word ""''cache''"" can be easily misinterpreted as the ''object cache'', not including the (persistent) ''term cache''.
Furthermore, even if persistent caches are not invalidated during invalidation suspension, there should probably be a simple function call to purge them all at once. One might suggest using `wp_cache_flush`, as its description states that it ""''removes all cache items''"", but that is also not exactly true, since the word ""''cache''"" does refer to the object cache at this point (expluding persistent caches, e.g. the term cache).
I don't exactly think of this as a bug, and I can imagine the performance-related considerations and decisions that led to that behavior. I just believe that, even if nothing changes, a more detailed description of `wp_suspend_cache_invalidation` and `wp_cache_flush` would be really helpful." zachop
Future Releases 43341 Proposal: new cache helper functions Cache API normal normal Awaiting Review enhancement new 2018-02-17T01:48:59Z 2018-02-17T01:48:59Z "[https://github.com/stevegrunwell/wp-cache-remember I just tagged version 1.0.0 of WP Cache Remember], which is a small WordPress library that adds six new functions:
* `wp_cache_remember()`
* `wp_cache_forget()`
* `remember_transient()`
* `forget_transient()`
* `remember_site_transient()`
* `forget_site_transient()`
These functions all follow the same pattern, with two each for the WP object cache, transients, and site transients, respectively. The goal is to reduce this common pattern:
{{{#!php
function get_some_value() {
$cache_key = 'some-cache-key';
$cached = wp_cache_get( $cache_key );
if ( $cached ) {
return $cached;
}
$value = new WP_Query( /* ... */ );
wp_cache_set( $cache_key, $value );
return $value;
}
}}}
...to something easier to manage:
{{{#!php
function get_some_value() {
return wp_cache_remember( 'some-cache-key', function () {
return new WP_Query( /* ... */ );
} );
}
}}}
Of course, if the function is being used in WordPress core or anywhere else that needs to support PHP 5.2, any callable — not just closures — could be passed.
The function is based on [https://laravel.com/docs/5.6/cache#cache-usage Laravel's Cache::remember() method] and is extremely useful for themes or plugins that are regularly making use of the object cache, transients, and/or site transients. The underlying code uses existing cache API functions, and thus won't require any modification in existing object cache adapters.
The complementary function, `wp_cache_forget()` will retrieve and empty the cache value, saving developers a step if they only want a cached value to be returned once (for instance, a ""flash"" message).
[https://github.com/stevegrunwell/wp-cache-remember#readme The GitHub README file has a full description of each function and its arguments], along with 100% test coverage. If there's any interest in including some or all of these helpers in core, I'd be more than happy to put together a PR." stevegrunwell
Future Releases 46061 Canonical prevents accessing paginated results of feed-named tags Canonical 2.7.1 normal normal Awaiting Review defect (bug) new 2019-01-22T05:41:38Z 2022-11-01T03:22:24Z "Given a tag of the name 'rss' (or any of `(feed|rss|rdf|atom|rss2)`) Canonical will cause a redirect for a paginated result to an incorrect url lacking the 'rss'
For example:
{{{
$ curl -Is http://wordpress.dev/tag/rss/page/2/ | grep Location
Location: http://wordpress.dev/tag/page/2/
}}}
This appears to be caused by https://core.trac.wordpress.org/browser/trunk/src/wp-includes/canonical.php?rev=43571&marks=297-302#L290
This was originally reported as https://meta.trac.wordpress.org/ticket/2945" dd32
Future Releases 42512 Domain with special character redirect loop on homepage Canonical 4.5 normal normal Awaiting Review defect (bug) new 2017-11-11T11:31:53Z 2018-03-14T01:39:00Z "Hi,
i am experiencing a problem with wordpress starting with 4.5 i think.
Since this commit [1] i always get redirect loops on the home page. this issue seemed to be fixed, and i can confirm this on various wordpress instances.
But one instance has a '''domain with a special character''' (""ö"" - german Umlaut), and the problem persists there.
Also i am not the only user who can confirm this issue [2].
Currently i have to reset the line [3] to the old value after every update since it gets overwritten. This is not a solution, only a very bad workaround.
Of course i already have tried to disable all plugins, themes etc. which could cause the issue. I can say, that the problem is not caused by the hoster since i have many wordpress instances running on the same hoster and no other does have this problem (and no other have a special character in the domain)
Regards
[1] https://github.com/WordPress/WordPress/commit/84a3b4407f9e03311aa591004f3bec0639f3ba3f?diff=unified
[2] https://wordpress.org/support/topic/45-causes-infinite-redirect-on-static-front-page/page/2/#post-8156893
[3] https://github.com/WordPress/WordPress/commit/84a3b4407f9e03311aa591004f3bec0639f3ba3f?diff=unified#diff-dc3247fd3fa65f15e6fc5ce8c6fa2d42L175" stefan-niedermann
Future Releases 41577 Fix Notice fixing Canonical 4.8.1 normal normal Awaiting Review defect (bug) new 2017-08-07T00:09:12Z 2021-03-19T11:53:15Z "The file wp-includes/canonical.php produces Notices for undefined indexes when a requested uri has no path or query.
The attached patch sets the indexes to empty strings.
#6977 (which was not used) had a different approach. The currently used ""Notice fixing"" approach does not fix up $original which is used afterwards.
" glehner
Future Releases 53362 Invalid paginated requests not treated as such SergeyBiryukov* Canonical 5.7.2 normal normal Future Release defect (bug) accepted 2021-06-08T20:38:20Z 2023-06-29T18:20:08Z "This is a follow-up to #40773.
The security department that scans our WordPress websites identified the issue resolved in #40773 as cross-site scripting, as our themes add the webpage's precise URL to Open Graph data (`og:url`) in the ``.
So, we were happy to see the resolutions applied in that ticket. Unfortunately, while testing, we found that adding `/0/` to any URL is still possible, e.g. https://example.com/about-us/0/ does not redirect back to the canonical https://example.com/about-us/.
Additionally, we have found that it is possible to append `/page/` followed by a number to the URL of a page that does not support pagination, e.g. https://example.com/about-us/page/0/, https://example.com/about-us/page/12345/, etc.
In the latter example, the `` also changes from ""About Us"" to ""About Us – Page 12345"" as WordPress seems to think this is a valid paginated page. The `paged-12345` and `page-paged-12345` classes are also added to the ` `. These specific tests were done using the Twenty Twenty-One theme.
Furthermore, appending `/page/0/` to the page that displays blog posts does not trigger a 404 or a redirect, e.g. https://example.com/blog/ is ""identical"" to https://example.com/blog/page/0/." daleharrison
Future Releases 43249 Redirection issue with Japanese characters in query string on static front page Canonical 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-07T17:15:03Z 2018-02-09T10:54:03Z "Hello,
I have found a bug that when a static page option is enabled from here:
http://jom.x10.mx/wp-admin/options-reading.php
Then, you accessed the home page with the Japanese characters on the query string, it causes redirection issues “ERR_TOO_MANY_REDIRECTS”.
Example links are:
http://jom.x10.mx/?%E3%83%89%E3%83%A0%E3%83%BB%E3%83%88%E3%83%AD%E3%83%94%E3%82%AB%E3%83%AB%E3%83%86%E3%82%B9%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97
http://jom.x10.mx/index.php?%E3%82%B6%E3%82%AF%E2%85%A1F%E5%9E%8B%EF%BC%88%E7%A0%B2%E6%92%83%E8%A3%85%E5%82%99%EF%BC%89
You can test this on any self hosted WordPress installation with the “static page” option enabled. This causes our client’s SERP to have been ruined.
http://www.almondmarketing.co.uk/index.php?%E3%83%89%E3%83%A0%E3%83%BB%E3%83%88%E3%83%AD%E3%83%94%E3%82%AB%E3%83%AB%E3%83%86%E3%82%B9%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97
http://www.almondmarketing.co.uk/index.php?%E3%82%B6%E3%82%AF%E2%85%A1F%E5%9E%8B%EF%BC%88%E7%A0%B2%E6%92%83%E8%A3%85%E5%82%99%EF%BC%89" jomgapuz
Future Releases 35562 Single post pagination redirect back to page one with nextpage tag - WordPress 4.4.1 Canonical 4.4 normal normal Future Release defect (bug) new 2016-01-21T18:07:31Z 2017-02-07T19:11:07Z "When a single post post content, {{{$post->post_content}}}, does not contain the {{{}}} tag, and we append more pages to the single post through the {{{content_pagination}}} filter, pagination works as expected
Sample code to test
{{{
add_filter( 'content_pagination', function ( $pages )
{
$pages[] = 'This is another page we want to append';
return $pages;
});
}}}
However, when we add the {{{}}} tag inside the post content ($post->post_content}}} and run the same sample code, any appended page simply redirects back to page one as a 404 header is set on appended pages.
I tracked this down to the following block of code (lines 623 - 628) inside the {{{WP}}} class ({{{wp-includes/class-wp.php}}} which seems to be introduced in either v4.4.0 or 4.4.1
{{{
// check for paged content that exceeds the max number of pages
$next = '';
if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) {
$page = trim( $this->query_vars['page'], '/' );
$success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
}
}}}
Removing those lines fixes the issue.
What I recommend is that instead of simply checking for the {{{}}} and returning a 404 according to that, we must rather have a check that acts on the amount of pages we have counted immediately after the {{{content_pagination}}} filter and then return a 404 if the current page exceeds the amount of pages after the {{{content_pagination}}} filter" pietergoosen
Future Releases 45687 URL params get lost because of canonical redirect on static front page Canonical 5.0.1 normal minor Awaiting Review defect (bug) assigned 2018-12-18T12:13:31Z 2018-12-18T12:24:43Z "Please see #25143.
A shortcode that changes its output via (prettified) URL params, i.e. `/test/1/`.
Use the shortcode on a **static front page**.
The params are added either with `add_rewrite_rule()` or `add_rewrite_endpoint()`, but **without adding query vars**.
This is basically what the patch in #25143 fixed (3rd param ''false''):
{{{
add_rewrite_endpoint( 'test', EP_PERMALINK | EP_ROOT | EP_PAGES, false );
}}}
However, the later change on line 175 in changeset [36237] causes a request such as `/test/1/` to redirect to `/` **and the shortcode can't work with the param**.
On a side note, adding the params as query vars causes the intended static front page to use the posts template because `is_home()` is ''true''.\\
I understand that if I don't want URL params to modify the query, I should not register them as query vars (see [ticket:25143#comment:21 boonebgorges]). However, the template change feels rather wrong to me, too (see [ticket:25143#comment:20 mordauk]).
Thanks for listening." captain.crash
Future Releases 42423 Warning in redirect_guess_404_permalink if $query->post_type is an array instead of a string Canonical 4.8.3 normal normal Awaiting Review defect (bug) new 2017-11-02T20:02:01Z 2019-02-01T12:30:46Z "I am not familiar enough with WordPress to know if this is an issue or intended.
redirect_guess_404_permalink has a block that looks like:
wp-includes/canonical.php:594
{{{#!php
// if any of post_type, year, monthnum, or day are set, use them to refine the query
if ( get_query_var('post_type') )
$where .= $wpdb->prepare("" AND post_type = %s"", get_query_var('post_type'));
else
$where .= "" AND post_type IN ('"" . implode( ""', '"", get_post_types( array( 'public' => true ) ) ) . ""')"";
}}}
This works in the case that post_type is a single value, but if it has been changed to an array of values then this looks to trigger the warning:
wp-includes/wp-db.php:1353
{{{#!php
_doing_it_wrong( 'wpdb::prepare', __( 'The query only expected one placeholder, but an array of multiple placeholders was sent.' ), '4.9.0' );
}}}" augustuswm
Future Releases 30581 http/https pages have different canonical URLs joostdevalk Canonical 2.9 normal normal Future Release defect (bug) assigned 2014-12-02T22:40:18Z 2019-04-03T12:48:19Z "If you have SSL turned on, but don't force redirect, http and https pages will have different URLs. Ideally, I think the canonical URL should always use http unless `FORCE_SSL` is turned on.
Even a filter for `rel_canonical` would be better than what we have now. Unhooking and creating your own version of `rel_canonical()` works, but if multiple plugins do this, you end up with multiple canonical URLs set on every page.
Related: #18660, #14458" betzster
Future Releases 51733 redirect_canonical unneeded redirect Canonical 3.3 normal minor Awaiting Review defect (bug) new 2020-11-09T18:27:18Z 2021-08-25T13:38:31Z "Recently caught an unneeded redirect in `redirect_canonical`. Started caching responses, and ended in a redirect loop.
tl;dr
Per [https://tools.ietf.org/html/rfc3986#section-2.2 RFC3986], `+` is a reserved character, and we should use `%20` to encode a space in URLs (percent encoding).
Per [https://tools.ietf.org/html/rfc1866#section-8.2.2 RFC1866], encode query args as `application/x-www-form-urlencoded` in which case a space is encoded as a `+`.
Posting here to discuss whether we want to fix this in core, or simply leave it as is.
To reproduce:
- Use any `twenty{year}` theme
- Customize homepage
- Select `A static page`
- Visit homepage with query args, e.g. https://vubuesinessplantest.help/?test=a+b+c
- A redirect occurs to https://vubuesinessplantest.help/?test=a%20b%20c
Considering we're using `parse_str()` to parse query variables, and it correctly parses both RFCs I'd argue we shouldn't redirect in the case when query args are the same.
Here's a filter I've written to skip redirects in this case:
{{{#!php
example.com/?s=keyword
It appears as though search results can have pretty URLs:
> example.com/search/keyword
Maybe show the pretty URL in the browser instead?" henry.wright
Future Releases 52865 Strip 'enclosed' trailing spaces in URLs Canonical low normal Awaiting Review enhancement new 2021-03-19T10:32:40Z 2021-03-19T10:42:06Z "#20383 made improvements that strip trailing punctuation from URLs. E.g., https://ma.tt/2012/03/productivity-per-square-inch%20 redirects correctly to the canonical URL.
However, URLs like https://ma.tt/2012/03/productivity-per-square-inch%20/ (which 'enclose' the trailing space with a trailing slash) are ''not'' redirected. It, and others like it, typically return a 404 error.
This kind of 'broken link' pattern is ''extremely'' common on the web; particular as a trailing slash is often appended to a malformed URL ''before'' WP runs (e.g., via a server/htaccess/nginx configuration).
We should refine the canonical redirect logic (in `redirect_canonical`) to also consider and redirect these types of requests.
**Considerations**
- The ""''Remove trailing spaces and end punctuation from the path''"" section of `redirect_canonical` doesn't consider the presence of trailing slashes in the URL. This could/should be adapted to catch those.
- There might be cases where a user 'legitimately' has a permalink structure (or slug) that ends in `%20` or `%20/`. That might(?) make a fix more complicated than just sniffing for whether the permalink structure ends with `/`.
- It looks like it's inconsistent in WP where `%20` (and/or `%20/` ) can be added to slugs or structures. It's stripped in some places, but not in others.
- ''Should'' a permalink or slug be 'allowed' to contain, or end in, a space character? If this is being stripped in some parts of WP, maybe that's a good argument to prevent it elsewhere/everywhere. In which case, fixing this becomes a lot simpler.
" jonoaldersonwp
Future Releases 35248 "WordPress should remove domain trailing dot (as/like it removes ""www."")" Canonical 4.4 normal normal Awaiting Review enhancement reopened 2015-12-29T00:35:21Z 2020-01-31T16:22:59Z "I think, WordPress should redirect from address with trailing dot of domain to version without the dot, like it redirects from address with ""www."".
I have read about which version is correct and seems version without dot is allowed according to RFCs, and it is very widely used, and even almost nobody know that trailing dot can be used.
(
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol ""The first definition of HTTP/1.1, the version of HTTP in common use, occurred in RFC 2068 in 1997, although this was obsoleted by RFC 2616 in 1999""
->
https://tools.ietf.org/html/rfc2616#section-14.23 ""The Host field value MUST represent the naming authority of the origin server or gateway given by the original URL.""
->
https://tools.ietf.org/html/rfc2616#section-3.2.1 ""For definitive information on URL syntax and semantics, see ""Uniform Resource Identifiers (URI): Generic Syntax and Semantics,"" RFC 2396 ...""
->
http://tools.ietf.org/html/rfc2396#section-3.2.2 ""The rightmost domain label of a fully qualified domain name will never start with a digit, thus syntactically distinguishing domain names from IPv4 addresses, and may be followed by a single ""."" if it is necessary to distinguish between the complete domain name and any local domain.""
)" qdinar
Future Releases 35437 dot in permalinks Canonical normal normal Future Release enhancement new 2016-01-13T06:49:02Z 2019-01-08T13:53:11Z "Just try to add dot in request uri (begin or end of any part) – it will return status 200, but should 404 or may be it should redirect to url without dots, otherwise it generates duplicate pages that is not so good.
For example.
Correct url is http://site.com/some/url/
Let's try: http://site.com/.some/url/ – will return status 200 and open the correct page.
The same behavior if:
http://site.com/some./url/
http://site.com/some/.url/
http://site.com/some/url./
Temporary solution in functions.php helpful for me:
{{{#!php
$s) {
if( $s[0] == '.' || $s[strlen($s)-1] == '.' )
$parts[$k] = clear_uri($s);
}
if( $clear_processed ) {
$location = '/' . implode('/', $parts) . '/';
header(""Location: "" . $location, true, 301);
exit;
}
}}}
" vk_code
Future Releases 38186 Database Collations Bypassed by determine_charset() in wp-db.php Charset 4.6.1 normal major Awaiting Review defect (bug) new 2016-09-29T14:26:56Z 2017-02-10T14:32:55Z "The function 'determine_charset' in wp-db.php, since 4.6.0 will try to set the database collation to the best option available, 'utf8mb4_unicode_520_ci'. This makes sense when the collation is not explicitly defined in wp-config.php, and most likely beneficial to novice developers.
However, this assumptive behavior occurs even when the DB collation ''is'' explicitly defined in wp-config, effectively ignoring 'utf8_general_ci', 'utf8mb4_unicode_ci', and collations starting with 'utf8_' in certain environments.
There appears to be no way to force these collations when defined by the developer. If the developer has set the collation in the config file, shouldn't the software obey the word of the developer?
In short, ''a valid database collation set in wp-config should not be bypassed by WP Core.'' There is no workaround that vindicates the logic in determine_charset().
A possible solution would involve determine_charset() checking for a config setting such as 'FORCE_DB_COLLATE'. If true, use the collation defined in wp-config without assuming otherwise.
" natecf
Future Releases 41581 Cleared Comments stuck in moderation Comments 4.8.1 normal normal Awaiting Review defect (bug) new 2017-08-07T18:32:40Z 2018-08-31T23:57:30Z "I am the third person to report this issue, since it was first reported in June on the [https://en.forums.wordpress.com/topic/comments-stuck-in-moderation-queue-even-though-akismet-cleared-this-comment?replies=44 Dot Com Forum]. A Staff Member responded to the ticket, at the time, and stated that they would be filing a Bug Report, but we have not heard back.
A third user reported the issue on the [https://wordpress.org/support/topic/comments-held-in-moderation-even-after-previously-approved-comment/#post-9388458 Dot Org Forum] 2 months and 2 weeks ago.
Not all cleared users are getting their comments bumped into moderation. This is the case for all three of us. The only plugin the other dot org user and I have in common is the Akismet plugin and I disabled that to confirm that it didn't fix the problem.
Please advise." fb2ts
Future Releases 41037 Comment author can't edit their comment(s) if they aren't the post author Comments normal normal Awaiting Review defect (bug) new 2017-06-14T00:26:14Z 2019-11-22T11:42:32Z "In {{{map_meta_cap()}}}, the {{{edit_comment}}} meta capability is eventually mapped to {{{edit_others_posts}}} which results in comment authors not being able to edit their own comment(s) if their comment(s) are on a different user's post.
Note 1: The issue is specific to the author role. The editor role doesn't see the issue because this role has the {{{edit_others_posts}}} cap.
Note 2: The problem doesn't exist if the comment author is also the post author. This is because, in such cases, {{{edit_comment}}} is mapped to either {{{edit_published_posts}}} or {{{edit_posts}}}" henry.wright
Future Releases 48519 Comment reply form in admin incompatible with most custom fields plugins Comments 5.2.4 normal normal Awaiting Review defect (bug) new 2019-11-06T22:17:16Z 2019-11-06T22:17:16Z "If you are using any plugin that adds custom (meta) fields to comments the admin interface for replying isn't compatible.
The front-end comment template includes various hooks for plugins to use.
The admin however does not (at all).
See:
Front-end: `wp-invludes/comment-template` function: `wp_comment_reply()` from around line 2393
Admin: `wp-admin/includes/template.php` function `comment_form()` from around line 437
In my case it's a compatibility bug with required fields created by Pods.
Within WP Admin it won't show the custom fields and this doesn't save any comments because required fields are not filled.
Some missing hooks:
Filters:
- `comment_form_default_fields`
- `comment_form_fields`
- `comment_form_logged_in` (Not needed as it's in WP admin)
- `comment_form_field_comment`
- `comment_form_field_{$name}`
- `comment_form_submit_button` (Not sure if this is desirable in WP admin)
- `comment_form_submit_field` (Not sure if this is desirable in WP admin)
Actions:
- `comment_form_before`
- `comment_form_must_log_in_after` (Not needed as it's in WP admin)
- `comment_form_top`
- `comment_form_logged_in_after`
- `comment_form_before_fields`
- `comment_form_after_fields`
- `comment_form`
" keraweb
Future Releases 42459 "Comments metabox doesn't load all the comments when clicking ""Show more comments"" link" Comments 4.8.3 normal normal Awaiting Review defect (bug) new 2017-11-07T18:04:17Z 2018-07-31T18:11:29Z "Recently, I found an issue related to the Comments meta-box on a post edit screen. To reproduce the bug, go to the article with a certain number of comments. Suppose there are 25 comments. Then go to the post edit screen, enable the comments and scroll down to view all the comments(you will see 10). Then click the link ""Show more comments"" at the bottom of the section. You will see the second part of the comments (10 again), and the link ""Show more comments"" will disappear. You may notice that you can't load the remaining comments(5).
Why this happened? My short investigation below.
I found that on my opinion there is a mismatch in amount of loaded comments between the ''commentBox'' object(`/wp-admin/js/post.js`) and comments meta-box init script(`/wp-admin/includes/meta-boxes.php`).
First have a look at `/wp-admin/includes/meta-boxes.php:741`
{{{#!php
}}}
As you can see there are 10 comments set to be loaded.
Then go to `/wp-admin/js/post.js:42-45`
{{{#!js
if ( ! num )
num = 20;
this.st += num;
}}}
As you can see there is default `num` value set to 20. Important: then commentBox.st was increased by a `num` value.
But now have a look at ""Show more comments"" link onclick attribute.
{{{#!php
Show more comments
}}}
As you can see `commentsBox.load(26)` call will update `commentBox.st` but then `commentBox.get(26, 20)` will be called (because `num = 20`). But to fit the init script(`meta-boxes.php`) it should be `commentBox.get(26, 10)`.
My solution here is to set default `num` value to 10. So I guess `/wp-admin/js/post.js:42` should looks like this:
{{{#!js
if ( ! num )
num = 10;
}}}
Let me know if I missed something and we can't accept new default `num` value.
I have tested it on my local end. It works well after I changed `num` default value to 10." rku4er
Future Releases 57432 Edit comments capability issue Comments normal normal Awaiting Review defect (bug) new 2023-01-09T08:46:16Z 2023-03-31T14:14:20Z If the user does not have capability to edit comments, the checkbox for Discussion - Allow comments disappears. This will store the null value into database and cause comments form as not visible. AitThemes
Future Releases 20846 Multisite: Network Users can post comments without being members of the site Comments 3.0 low minor Future Release defect (bug) new 2012-06-05T14:35:41Z 2020-05-05T16:27:27Z "This is probably an 'ever since inception' issue and I can replicate it on 3.4
Setup:
Have a user added to your network but '''not''' to a site (domain.com/test).
Set up domain.com/test to only allow registered users to comment. Remember, we've not added this new user to the site, just the network.
Log in as that user and go to domain.com/test
Oh look! You can comment as a 'registered' user.
This should be check for 'Is this a user ''and'', if multisite, is this user a member of the site?'
It's that or the wording needs to be clearer that anyone registered on the network can comment." Ipstenu
Future Releases 36058 "PHP notices and invalid ""View Post"" link on edit-comments.php when post type does not exist" Comments normal normal Future Release defect (bug) reviewing 2016-03-03T05:48:30Z 2017-05-06T17:13:37Z "Steps to reproduce:
1. Register a custom post type
2. Create a post
3. Create a comment on that post
4. Stop registering the post type
5. Visit wp-admin/edit-comments.php
The markup built in `WP_Comments_List_Table::column_response()` for the ""In Response To"" column requires a valid post permalink, as well as the post type label corresponding to ""View Post"". Since permalinks to non-existent CPT objects cannot be valid, and since non-existent CPTs don't have any post type labels, it seems to me that we can probably bail out of this method early if the post type doesn't exist.
Similarly, `column_date()` probably shouldn't attempt to link to the post if the post type doesn't exist." boonebgorges
Future Releases 6342 "Rapidly spamming/deleting comments can break ""infinite river"" feature on comment moderation pages" Comments 2.5 low minor Future Release defect (bug) assigned 2008-03-21T22:05:16Z 2019-03-15T00:41:30Z "Comment moderation pages have an ""infinite river"" feature whereby when you remove one comment (spam/delete), it'll load a new one at the bottom. Unfortunately, it doesn't seem to catch up if you click more rapidly than about once every 2 or 3 seconds, and you'll ""lose"" comments. At the end, you may just have one comment that, when dealt with, will be replaced by only one comment. This may have to do with doubleclicking the ""spam"" link, or maybe clicking the ""spam"" link of the next comment before the river action has finished." markjaquith
Future Releases 46943 Settings ->Discussion bad view dropdown in mobile version Comments normal normal Awaiting Review defect (bug) new 2019-04-15T23:00:28Z 2019-10-21T16:44:39Z "Settings ->Discussion all dropdown are bigger on the responsive view. so need to make it size small same as desktop view and content align proper same as desktop view.
" ketanumretiya030
Future Releases 50202 Use tag instead of tag in `Walker_Comment::html5_comment` Comments normal normal Future Release defect (bug) new 2020-05-18T14:32:56Z 2020-08-26T13:48:40Z It is well documented that when some text is bolded using the tag, it will come to no benefit for users using screen readers. This patch aims to fix that in an instance of `html5_comment` method in `Walker_Comment`. itowhid06
Future Releases 35937 "Visual improvements for the comment ""pending status""" Comments normal normal Future Release defect (bug) new 2016-02-24T16:25:05Z 2019-01-13T16:55:31Z "Splitting this out from #35392.
While working on #35392, noticed and agreed there's room for some visual (and further accessibility) improvements. Specifically, the comment ""pending status"" relies on a small ""flag"" icon, followed by a `[Pending]` text.
From a design perspective, this could use some love. Whether it would be some additional, descriptive, text or a new icon etc. it would be possible to expand the new text or icon with some `screen-reader-text` in order to provide a reasonably understandable feedback for assistive technologies users.
Worth noting this applies to the Dashboard ""Recent Comments"" widget and the list of comments in the Comments screen and Edit post screen as well, where the pending status information is conveyed using just color.
cc @melchoyce
[[Image(https://cldup.com/IWyv7rKuEE.png)]]
" afercia
Future Releases 48088 Anonymous Avatar should be served locally Comments low normal Future Release enhancement new 2019-09-20T17:12:35Z 2019-11-01T17:09:20Z "Right now, even the mystery man is retrieved by querying gravatar.
We should have a local copy of the anonymous avatar that is served.
At the least, if there is no requirement for an email, which is what is used to provide the gravatar requests, why make requests to gravatar?
We could say caching gravatar responses is plugin territory, and while I would like to do with with gravatar for performance, this is about not making a call in the first place." dshanske
Future Releases 39028 Comments on private posts or specific edge cases can get a confusting white screen error. Comments 4.4 normal normal Awaiting Review enhancement new 2016-12-02T14:29:01Z 2017-08-03T14:00:53Z "I have a plugin that uses the private status for a custom post type used in private BuddyPress groups.
When a group member tries to comment on one of the post type he's getting a white screen. I've fixed the issue on my side, problem was about caps mapping.
But still, i was pretty confused by this behavior. At first i thought it was a fatal error, but xdebug returned nothing, so i've looked in my error.log again nothing ??
Then i've found some returned WP_Error was missing data like the 403 status in `wp_handle_comment_submission()`. As this function was introduced in 4.4, i guess it first appeared in 4.4.
I think it could be interesting to have a screen looking like this in this kind of cases :
[[Image(https://cldup.com/ymyxLMacts.png)]]
I suggest the attached patch." imath
Future Releases 22579 Confusion of WP admin Discussion settings Comments normal normal Future Release enhancement new 2012-11-24T20:46:05Z 2019-11-05T13:26:24Z "On the ""Settings>Discussion"" page:
1) ""'''Default article settings'''"" should be replaced by ""'''Default comment settings'''"" (because these important settings do not only apply to posts (''articles'')), but also to pages!
2) ""'''Allow people to post comments on new articles'''"" should be replaced by:
--> ""'''Allow people to post comments'''"" (best option in my opinion)
or
--> ""Allow people to post comments on new pages and posts""
Sorry if this is not the right place to make such suggestions." Lorangeo
Future Releases 44923 Filter .children class on nested comments list Comments normal normal Awaiting Review enhancement new 2018-09-09T20:52:44Z 2019-04-21T07:19:28Z "The `start_lvl()` method of `Walker_Comment` should have a filter hook to customize the `.children` class. This will allow theme authors to utilize their preferred system or CSS framework for handling nested comment lists. And, `.children` is generic and requires writing nested CSS selectors to target it.
This change would put the comment walker on par with the nav menu walker, where we have the `nav_menu_submenu_css_class` filter hook." greenshady
Future Releases 33627 In-Context Comment Moderation Comments normal normal Future Release enhancement new 2015-08-31T17:24:33Z 2021-01-27T19:20:14Z "One of the more painful points in the comment moderation UX revolves around knowing whether or not a comment is in context. Right now, WordPress says who a person was replying to and offers a link to the frontend of that comment on replies to a comment. However, it can be quite tedious to go view the original comments a bunch of people were replying to to see if the reply was in-context.
An easy fix for this would be to offer a ""Show context"" link next to the ""replying to {name} link on replies, that when clicked, would ajax show the comment the pending comment was originally replying to. " chriscct7
Future Releases 41731 Make it Easier to Locate Restored Comments SergeyBiryukov Comments 4.8.1 normal normal Future Release enhancement assigned 2017-08-25T19:30:34Z 2019-06-21T17:56:20Z "When a comment is in the trash, WordPress does not allow you to edit its details without restoring it first. After restoring the comment, it disappears from the Trash and the user is then required to locate it either by memorizing the post it's on or searching for it in the backend. It doesn't show up on the approved comments page because of its original published date.
I suggest that if a single comment is restored, it takes users to the post it's on. Even better would be taking the user straight to where the comment is in the Discussions meta box. However, since users can hide this meta box via the screen options, I'm unsure how to account for that.
Perhaps redirecting users to the post where the comment is displayed is enough?" jeffr0
Future Releases 56261 Normalize comment function parameters with mixed case names SergeyBiryukov* Comments normal normal Future Release enhancement accepted 2022-07-20T16:30:32Z 2023-02-08T14:39:53Z "Background: #56244
As of WordPress 2.9, core normalizes the `user_ID` parameter to `user_id` when passing data to comment functions, see [12267], [12300], and [28915].
We should consider normalizing other parameters in the same way as it was done for `user_ID` → `user_id`:
* `comment_ID` → `comment_id`
* `comment_post_ID` → `comment_post_id`
* `comment_author_IP` → `comment_author_ip`
Then any combination of these parameters would work regardless of the case.
This would allow extenders to name variables in accordance with the WordPress coding standards:
* `$comment_id`
* `$comment_post_id`
* `$comment_author_ip`
and use them subsequently in a `compact()` call without having to worry about a case mismatch.
This would also allow us to revert some of `compact()` rearrangements made in [53719] and [53723]:
{{{
$compacted = array(
'comment_post_ID' => $comment_post_id,
'comment_author_IP' => $comment_author_ip,
);
$compacted += compact(
'comment_author',
'comment_author_email',
'comment_author_url',
...
'user_id'
);
}}}
which could then be:
{{{
$compacted = compact(
'comment_post_id',
'comment_author',
'comment_author_email',
'comment_author_url',
'comment_author_ip',
...
'user_id'
);
}}}
The list of functions this may affect:
* `wp_insert_comment()`
* `wp_new_comment()`
* `wp_update_comment()`
* `wp_filter_comment()`
* `wp_handle_comment_submission()`" SergeyBiryukov
Future Releases 6286 "Proposed changes to ""E-mail me whenever"" Discussion Options" Comments 2.5 normal normal Future Release enhancement new 2008-03-18T19:14:55Z 2019-03-15T00:40:35Z "WRT the ""E-mail me whenever"" options on the Discussion options page:
[[Image(http://img132.imageshack.us/img132/4215/picture1vf1.png)]]
1. For ""a comment is helf for moderation,"" the ""me"" is ambiguous. It should specify that it means the blog admin e-mail address.
1. For ""anyone posts a comment,"" again, ""me"" is ambiguous. In this case ""me"" means the author of the post. The comment notification setting is personal, and therefore should be set in the profile options (where it can retain the ""me""). Some authors may want e-mail notification, others might not." markjaquith
Future Releases 39282 The process for approving and then replying to a comment can be made more visible Comments 3.1 low normal Awaiting Review enhancement new 2016-12-14T18:17:51Z 2020-09-01T15:53:25Z "The workflow for approving and then immediately replying to a comment has a shortcut in WordPress, but it's not obvious. If you don't know about it, you can waste time and effort switching between the pending and approved views on the comment moderation screen after approving a comment and then wanting to reply to it.
The `Reply` link on a pending comment is actually a shortcut for approving and then replying to a comment. The `Reply` link text should be updated to `Approve and Reply` to reflect this and make comment moderation a more enjoyable process." johnbillion
Future Releases 55922 Update wp_list_comments type parameter to allow array or string Comments 2.7 normal normal Awaiting Review enhancement new 2022-06-05T06:27:24Z 2022-06-05T06:27:24Z "Right now, the options here are all, or a specific comment type. This should allow for multiple comment types as allowed in WP_Comment_Query
" dshanske
Future Releases 40073 "WP_Comment_Query should support a comment type of ""comment""" Comments 4.8 normal normal Future Release enhancement new 2017-03-08T20:44:29Z 2017-03-13T16:18:07Z "Scenario: User is leveraging the `comment_type` field in their theme or a plugin, and desires all comments to have a type. They assign ""regular"" comments a `comment_type` of ""comment"" as that seems to make sense.
If they then ask for those comments using `get_comments` or another function which leverages `WP_Comment_Query`:
{{{
$comments = get_comments( [
'type' => 'comment',
] );
}}}
The returned list will not return any comments which have `comment_type` set to ""comment"", only those with no type at all.
As this behavior (the swallowing of ""comment"" as a type entirely, rather than looking for `['','comment']`) is undocumented, perhaps `WP_Comment_Query` could be altered as such:
{{{
715 case 'comment':
716 case 'comments':
717 $comment_types[ $operator ][] = ""''"";
___ $comment_types[ $operator ][] = ""'comment'"";
___ $comment_types[ $operator ][] = ""'comments'"";
718 break;
719
720 case 'pings':
721 $comment_types[ $operator ][] = ""'pingback'"";
722 $comment_types[ $operator ][] = ""'trackback'"";
___ $comment_types[ $operator ][] = ""'pings'"";
723 break;
}}}
A sounder approach would probably be to allow a flag to be passed:
{{{
708 foreach ( $_raw_types as $type ) {
___ if ( empty( $this->query_vars['ignore_default_types'] ) ) {
709 switch ( $type ) {
...
729 }
___ } else {
___ $comment_types[ $operator ][] = $wpdb->prepare( '%s', $type );
___ }
...
735 }
}}}
An alternative might be to throw an exception when setting `comment_type` to one of the default values using `wp_new_comment`, `wp_insert_comment` and similar functions.
(I feel since there is no way to retrieve a comment when the type is one of these ""reserved"" words with standard WP functions, comments should probably not be able to be saved with a ""reserved"" type using standard functions if `WP_Comment_Query` is not altered.)
At the very least, the documentation for comment ""insert"" functions should mention that there are reserved keywords on `comment_type`, note what they are, and that if you use one of them you will need to use the `comments_clauses` filter to allow them to be retrieved." rogerlos
Future Releases 10975 comment form nonce Comments normal normal Future Release enhancement new 2009-10-19T06:49:16Z 2020-02-27T17:33:32Z "This adds a nonce to public comment forms, via the comment_form action.
" tellyworth
Future Releases 35650 title_reply_to should work when javascript is enabled Comments normal normal Future Release enhancement new 2016-01-28T21:51:05Z 2019-06-21T01:16:40Z "`title_reply_to` is a parameter in the `comment_form` function, and has even been around since 2.7 in the `comment_form_title` function, allowing you to display a different heading when replying to a comment, including who you are replying to. While a cancel comment reply link does appear, having a different heading is a very useful concept for making it clear to users exactly what they are doing.
Except, nobody ever sees it because it only applies when javascript is disabled. Everybody* has javascript enabled.
The javascript for replying to comments should be updated to change the heading based on this parameter.
" smerriman
Future Releases 40031 Consider Adding Web Annotations to WordPress Comments normal normal Awaiting Review feature request reopened 2017-03-04T05:20:30Z 2018-02-19T23:30:39Z "This is a strawman ticket published to generate discussion and hopefully concensus.
The W3C has standardized [https://wptavern.com/web-annotations-are-now-a-w3c-standard-paving-the-way-for-decentralized-annotation-infrastructure Web Annotions] to decentralize annotations across the web ''(""annotations"" being a superset of commenting.)''
As WordPress' mission is to ''""Democratize Publishing,""'' and as WordPress is by far the most widely used tool for publishing content on the web that also allows other people to comment on said content, it would seem fitting ''(at least to me)'' that WordPress would empower users of WordPress to control their own annotations across the web, moving forward.
How might to work? WordPress could offer three (3) new and yet related features:
1. Add enhancements to the commenting system to accept references to annotations.
2. Enable a WordPress site to be an ''""Annotation Server.""'' This would likely leverage the existing comment system where the comments could be associated with a new custom post type where each inidividual post could collection annotations for and represent one ""persona"" of a given registered user as well as how that persona could be presented to the outside world in the form of a URL that represents the user.
3. An ''""Annotate This""'' feature similar to ''""Press This""'' which can store annotations at the user's own WordPress site where the Annotate This UI could become the UI for commenting on all future WordPress websites (and potential non-WordPress sites) that offer feature 1. For those that doesn't offer feature 1 this UI could provide functionality to more easily transfer the comment to the foreign commenting system ''(such as copying it to the clipboard on user request)'' and possibly even implement commenting for specific well-known services ''(Twitter, Facebook, LinkedIn, Disqus, Medium, etc.)''
Note that some people's first reaction to this idea might be ''""that's plugin territory""'' -- which I can appreciate -- but there are four (4) reasons why I think this is core territory instead:
1. It is reasonable to assume that 80% of WordPress users would want to maintain their own comments in addition to their own posts,
2. This idea only really has benefits if it can become ubiquitous, e.g. If the 3 features are all available. If a plugin then an individual can only ever control one side of annotations thus dooming their implementation to obscurity. Note that a ''""Feature Plugin""'' slated for a future version of WP core is not ''""plugin territory""'' that I am arguing against.
3. It is a W3C recommendation, not some startup 3rd party service so it is likely to be adopted by many if not all of the web in the next few years. Why should WordPress not be the tool that helps define for the world how annotations should best be utilized, before some walled-garden like Facebook establishes the defacto-approach ahead of WordPress?
4. And finally, WordPress's mission is to ''""Democratize Publishing""'' and I cannot think of many other feature requests that are more ''""on-mission""'' than this one,
Thoughts?" MikeSchinkel
Future Releases 44226 Link to Privacy Policy in comment consent Comments 4.9.6 normal normal Awaiting Review feature request new 2018-05-25T13:18:42Z 2021-10-29T09:31:19Z "Hi!
It's possible add the url to privacy policy after consent in comments?
Thank You!" paolobros
Future Releases 35214 Custom Comment Types Comments normal normal Future Release task (blessed) assigned 2015-12-24T00:28:11Z 2021-07-13T16:02:18Z "It's time to take another look at Custom Comment Types. We have a nice stable example in post types, but there's a '''lot''' to do here, so we'll use this as a centralized tracking ticket for everything. As such, I'm sure the description here will be fluid for a while as we figure out how much there is to do.
Here's a rough list of things that need to be looked at and addressed:
* UI/UX - In order for custom comment types to be really useful, we need to put some serious thought into the UI/UX surrounding comments in the admin.
* The `comment_type` field needs to start using `'comment'` instead of `''` for comments. This will mean an upgrade routine as well as some back-compat work.
* We need to decide what to do about non-default comment types in various admin areas (comments table, recent comments, etc). The thing that makes most sense is for `WP_Comment_Query` to be adjusted to only show default comment types (comments, pingbacks, and trackbacks) by default. Additional comment types would then be handled by whatever plugin or theme adds them. Unfortunately, this is a breaking change (comment:58:ticket:12668) because right now those areas show all comment types. Maybe we can create new management areas to be able to pull these out of the default one? Lets put our heads together.
* A lot of existing functions, like `comment_type()`, will need to be fixed to make room for newly registered comment types and their registered strings.
Previous tickets for history:
#25674
#12668
" aaroncampbell
Future Releases 36082 Schedule post, not added to cron, shown as 'scheduled' in admin. Doesn't publish. Cron API 4.4.1 normal normal Awaiting Review defect (bug) new 2016-03-03T14:08:09Z 2019-06-04T18:13:40Z "Hello,
We have an intermittent problem on a high traffic site.
The issue is that occasionally, a post will be scheduled but not picked up in cron (we log whats in the cron). In the admin, it shows as being scheduled but obviously never posts because it's not actually present in the cron.
What could make this happen?
The site has about 20 users in the admin, with around 30 pageviews/second on frontend. (4 webservers etc)" dencreativeltd
Future Releases 39340 Scheduled Posts are being missed (problem with wp-cron.php?) Cron API 4.6.1 normal normal Awaiting Review defect (bug) new 2016-12-20T09:45:33Z 2020-04-03T14:39:45Z "Scheduled posts are missing their set time. This is not an issue with out server times, nor is it an issue with the cron jobs.
I have seen that many other users are experiencing problems with this, but as of yet there has been no word from WordPress.
Has this been fixed in 4.7? Or is this still outstanding? " remarkablemike
Future Releases 29581 Scheduled Posts do not work in WordPress 4.0 Cron API 4.0 normal normal Awaiting Review defect (bug) new 2014-09-08T04:56:28Z 2019-06-04T18:13:38Z "The post says ""missed schedule"" after the scheduled time has passed. We have to manually force the publishing by changing the date and updating from the admin. We've done it on installs with no conflicting plugin and replicated the issue on different installs as well. All show the same behavior. This was not the case through 3.9.2." pro99
Future Releases 56490 wp-cron.php using count() on null Cron API 6.0.2 normal normal Awaiting Review defect (bug) new 2022-09-01T16:47:36Z 2022-09-04T12:35:06Z "WE're using PHP 8.0 and the latest version of WordPress (6.0.2), we tried with all plugins disabled and the default theme enabled and we're having this fatal error happening every minute:
{{{
PHP Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in wp-includes/class-wp-hook.php:292
}}}
Here's the stack trace:
{{{
#2 wp-cron.php(138): do_action_ref_array('wp_privacy_dele...', NULL)"",""Thu Sep 01 2022 18:37:06 GMT+0200 (Eastern European Standard Time)""
#1 plugin.php(524): WP_Hook->do_action(NULL)"",""Thu Sep 01 2022 18:37:06 GMT+0200 (Eastern European Standard Time)""
#0 /nas/content/live/bbgsstaging/wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters('', NULL)"",""Thu Sep 01 2022 18:37:06 GMT+0200 (Eastern European Standard Time)""
}}}
It looks like the default WordPress core hook ""wp_privacy_delete_old_export_files"" is causing this error. We excluded this hook but then ""wp_version_check"" caused the same fatal error.
This issue also happens when on PHP 7.4, but on 7.4 it's just a warning, but it's also occurring. We're happy to provide additional information or access to our staging site if needed." Bishoy.A
Future Releases 40161 Wrong documented or coded 'schedule_event' filter Cron API low normal Future Release enhancement reopened 2017-03-15T12:39:06Z 2019-01-08T03:28:43Z "https://core.trac.wordpress.org/browser/trunk/src/wp-includes/cron.php#L41
says that $event parameter should always be an object.
But the following code allows to terminate script only when passing ""false"" values to filter ("""", array(), null, 0 or false), whereas checking false as object will produce error.
The documentation should be changed to force check isset( $event->hook ) when using this filter, otherwise the filter should be changed to something like this
{{{#!php
hook, $event );
if ( ! $event->hook )
return false;
}}}
" esemlabel
Future Releases 45168 Additional CSS complains of markup inside CSS comments Customize 4.7 normal normal Future Release defect (bug) new 2018-10-24T20:17:17Z 2021-05-30T19:36:39Z "When adding CSS to a site via Appearance > Customize > Additional CSS, the syntax validator will complain if it finds markup regardless of it being inside a /* */ comment.
Steps to replicate:
1. Go to Admin > Appearance > Customize > Additional CSS
1. Add a comment with some markup in it
`/* this is markup test */`
3. Hit Publish
1. See attached error message - but note that no indicator as to what line contains the markup appears.
The only workaround is to remove the markup from the comment.
Ideally the syntax validator should not care about anything in CSS comment blocks." useStrict
Future Releases 38573 Ajax requests in customizer controls don't inject customized state as done in preview Customize normal normal Future Release defect (bug) assigned 2016-10-30T21:01:04Z 2017-01-21T17:19:51Z "In the customizer preview, Ajax requests now get the `customized` state injected via `jQuery.prefilter`. In the customizer controls pane, however, this was not also implemented. This is important to ensure that that requests to the REST API will return back the expected previewed state.
Also relates closely to #38122." westonruter
Future Releases 53529 Block based widget admin screen causes a NS_ERROR_FAILURE error in Firefox Customize 5.8 normal major Future Release defect (bug) reopened 2021-06-27T16:30:56Z 2022-06-07T09:48:43Z "On the new widget screen the following error occurs in Firefox 89.0.2 in the console, when loading the page:
{{{
Uncaught
Exception { name: ""NS_ERROR_FAILURE"", message: """", result: 2147500037, filename: ""http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-p…gacy-widget-preview%5Binstance%5D%5Braw%5D%5Bnav_menu%5D=181"", lineNumber: 14, columnNumber: 0, data: null, stack: ""t.supports[o[r]]<@http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-preview%5BidBase%5D=nav_menu&legacy-widget-preview%5Binstance%5D%5Bencoded%5D=YToxOntzOjg6Im5hdl9tZW51IjtpOjE4MTt9&legacy-widget-preview%5Binstance%5D%5Bhash%5D=2421412fbc986f068f1a768eb85295f7&legacy-widget-preview%5Binstance%5D%5Braw%5D%5Bnav_menu%5D=181:14:628\n@http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-preview%5BidBase%5D=nav_menu&legacy-widget-preview%5Binstance%5D%5Bencoded%5D=YToxOntzOjg6Im5hdl9tZW51IjtpOjE4MTt9&legacy-widget-preview%5Binstance%5D%5Bhash%5D=2421412fbc986f068f1a768eb85295f7&legacy-widget-preview%5Binstance%5D%5Braw%5D%5Bnav_menu%5D=181:14:1102\n@http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-preview%5BidBase%5D=nav_menu&legacy-widget-preview%5Binstance%5D%5Bencoded%5D=YToxOntzOjg6Im5hdl9tZW51IjtpOjE4MTt9&legacy-widget-preview%5Binstance%5D%5Bhash%5D=2421412fbc986f068f1a768eb85295f7&legacy-widget-preview%5Binstance%5D%5Braw%5D%5Bnav_menu%5D=181:14:1779\n"" }
widgets.php:14
t.supports[o[r]]< http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-preview[idBase]=nav_menu&legacy-widget-preview[instance][encoded]=YToxOntzOjg6Im5hdl9tZW51IjtpOjE4MTt9&legacy-widget-preview[instance][hash]=2421412fbc986f068f1a768eb85295f7&legacy-widget-preview[instance][raw][nav_menu]=181:14
http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-preview[idBase]=nav_menu&legacy-widget-preview[instance][encoded]=YToxOntzOjg6Im5hdl9tZW51IjtpOjE4MTt9&legacy-widget-preview[instance][hash]=2421412fbc986f068f1a768eb85295f7&legacy-widget-preview[instance][raw][nav_menu]=181:14
http://wpbeta.localhost/wp-admin/widgets.php?legacy-widget-preview[idBase]=nav_menu&legacy-widget-preview[instance][encoded]=YToxOntzOjg6Im5hdl9tZW51IjtpOjE4MTt9&legacy-widget-preview[instance][hash]=2421412fbc986f068f1a768eb85295f7&legacy-widget-preview[instance][raw][nav_menu]=181:14
}}}
Tested this in WordPress 5.8-beta4-51244. It seems to be related to the use of a canvas element in an iframe. Also see https://bugzilla.mozilla.org/show_bug.cgi?id=941146.
This errors does not occur in other browsers.
" walterebert
Future Releases 55954 CSS editor marks some lines as errors even though they're perfectly fine Customize normal normal Awaiting Review defect (bug) new 2022-06-09T12:38:17Z 2022-06-09T13:32:17Z "I keep getting error messages in the WP CSS Editor in Live view for pieces of code which are perfectly fine, even according to a CSS3 validator. E.g.:
{{{
.post-content a:not(.tags a){
text-decoration: underline;
}
}}}
It's kinda annoying. Please update it to relevantly mirror CSS versions and standards." zikamatej
Future Releases 49421 Cannot use conversion specifications in `theme mod` default values Customize 5.3 normal normal Future Release defect (bug) new 2020-02-12T17:50:26Z 2021-09-26T03:07:44Z "This is a follow-up to #34290.
With the fix [46395] it is no longer possible to have a `theme_mod` which is itself a format string and has a default value which includes a conversion specification, e.g.
{{{#!php
\printf(
\get_theme_mod('site_copyright', 'Copyright %%1$s; all rights reserved.'),
\get_bloginfo('name', 'display')
);
}}}
With a double `%%`, the default string is now unchanged, but with a single `%` it is replaced with the ‘template directory’ URL. It is now no longer possible to achieve the desired `%1$s` in the default string.
Also, where the default is something like `100%`, the code supplying the default value to `get_theme_mod` now needs to test the WordPress version to know whether it should pass `100%` or `100%%`.
A fix might be for the `sprintf` code path also to be followed if the string contains a double `%%`. Or revert the change (so that the behaviour of `get_theme_mod` is more clearly defined as it was before - i.e. the default value is a format string and literal `%` signs need escaping as `%%`) and find another solution to the initial problem.
" jqz
Future Releases 51093 Custom CSS output runs through the wrong filter for custom user role Customize 5.4.1 normal normal Future Release defect (bug) new 2020-08-21T12:15:08Z 2020-10-26T21:14:31Z "I added a custom user role, which is able to see the Custom CSS in the Customizer. As soon as a user with such a role publishes the Customizer settings, the Custom CSS gets filtered through the wrong filter. This wasn’t the case in WordPress < 5.5 and is a new issue.
My created user role:
{{{#!php
false,
'update_plugins' => false,
'update_themes' => false,
'activate_plugins' => false,
'edit_plugins' => false,
'edit_themes' => false,
'delete_plugins' => false,
'delete_themes' => false,
'switch_themes' => false,
'create_users' => false,
'edit_users' => false,
'delete_users' => true,
'edit_files' => true,
'edit_theme_options' => true,
'export' => false,
'import' => true,
'list_users' => true,
'manage_options' => true,
'remove_users' => true,
'edit_dashboard' => true,
'customize' => true,
'unfiltered_html' => true,
'delete_others_pages' => true,
'delete_others_posts' => true,
'delete_pages' => true,
'delete_posts' => true,
'delete_private_pages' => true,
'delete_private_posts' => true,
'delete_published_pages' => true,
'delete_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_private_pages' => true,
'edit_private_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'manage_categories' => true,
'moderate_comments' => true,
'publish_pages' => true,
'publish_posts' => true,
'read' => true,
'read_private_pages' => true,
'read_private_posts' => true,
'upload_files' => true,
'copy_posts' => true,
)
);
}
add_action( 'init', 'add_custom_role' );
}}}
Tested CSS:
{{{
body > a {
color: #fff;
}
}}}
Actually CSS output:
{{{
body <
a {
color: #fff;
}
}}}
The data is stored correctly in the database, so it doesn’t seem to be a problem during the save function but rather during the output.
Tested with WordPress 5.5 and Twenty Seventeen theme." kittmedia
Future Releases 43074 Custom site identity Crop Image function does not work for images smaller than 512px Customize 4.9.1 normal normal Future Release defect (bug) new 2018-01-11T22:52:34Z 2021-05-30T17:20:37Z "Site Identity image.
After the image source is selected, crop image popup window arises.
Then the image is shown in a crop frame, but crop function does not work as crop frame does not react to mouse.
Wordpress 4.9.1
Firefox 57.0.4 64
Internet Explorer 11.192.16299.0" obermeister8080
Future Releases 42046 Customize Themes: Clarify active and previewed themes Customize 4.9 normal normal Future Release defect (bug) new 2017-09-30T19:40:09Z 2018-01-15T18:05:32Z "The current active (live) theme is displayed first in the installed themes list, but not necessarily with anything indicating that it's active. The current previewed theme (in the current customize session) gets different styling and a ""Previewed:"" prefix on its name in the installed themes view.
Let's clarify which theme is being previewed and whether it's active by highlighting it in the sidebar.
Follow-up to #37661." celloexpressions
Future Releases 39475 Customize doesn't consider the hash in the URL after change Customize 3.4 normal normal Future Release defect (bug) new 2017-01-05T03:42:15Z 2021-05-24T03:03:41Z "When I open a page that has a hash in the URL, in the Customize, the behavior wasn't the expected. At least for me. The preview Iframe is loaded in the first time with the hash. But after a setting update, using the refresh transport, the hash disappear.
Customizer URL
/wp-admin/customize.php?url=http%3A%2F%2Flocalhost%3A8080%2F%23hide-entry-screen
First preview Iframe href
/?customize_changeset_uuid=e041a773-41df-4fcb-a800-01fa3249233d&customize_theme=senplo&customize_messenger_channel=preview-0#hide-entry-screen
Second preview Iframe href (after a change)
/?customize_changeset_uuid=e041a773-41df-4fcb-a800-01fa3249233d&customize_theme=senplo&customize_messenger_channel=preview-1
I debugged the customize JS scripts and saw that in the line 796 of the wp-includes/js/customize-preview.js file is set the frame URL. It come from api.settings.url.self value. I cannot identify where this value is the.
In a quick test, I concatenated the hash with the URL and the second Iframe was loaded with it." edpittol
Future Releases 40272 Customize: Account for media queries in l10n.css Customize normal normal Future Release defect (bug) new 2017-03-27T07:48:03Z 2017-10-03T17:00:48Z "Noticed while working on #40271 / #40152.
`wp-admin/css/l10n.css` contains some locale-specific CSS adjustments, some of them for the customizer. For example:
{{{
.locale-de-de #customize-header-actions .button {
padding: 0 5px 1px; /* default 0 10px 1px */
}
}}}
Now, that default is correct — as long as you are not using the Customizer on a smaller device. There, the default padding is `6px 14px`, not `0 10px 1px`.
On an iPhone 6, that de_DE specific CSS looks like this:
[[Image(https://cldup.com/8Zl2SQwmIT.png)]]
As you can see, there's a clear lack of top and bottom padding." swissspidy
Future Releases 42614 Customize: Changesets can still be previewed even after having been published Customize 4.7 normal normal Future Release defect (bug) new 2017-11-18T00:44:05Z 2019-01-21T03:56:34Z "Steps to reproduce:
1. Change the site title to “First Changeset”
2. Save Draft.
3. Open frontend preview link in a new tab and see “First Changeset” as site title.
4. Back in Customizer tab, publish the changes.
5. Change the site title now to “Second Changeset”
6. Publish the changes.
7. Go back to the frontend preview in the other tab and reload.
Bug: notice the first changeset is still able to be previewed even though it it is published (or rather, trashed, since in core a published changeset by default is immediately trashed for garbage collection if revisions support is not enabled).
Note however that if you click the “Customize” link in the admin bar from the published changeset frontend preview, you'll land on the Customizer with an error (from [https://github.com/WordPress/wordpress-develop/blob/b424eecd0b255537ec3b7d87f8096d8158f92aae/src/wp-admin/customize.php#L77-L84 customize.php]):
> This changeset cannot be further modified.
It seems something similar should be done for changesets on the frontend. I can see a case for why being able to preview a changeset with a `publish` status could be useful. For example, if revisions are enabled for changesets, it could indeed be useful to preview an old published changeset to see old changes re-applied. However, when a published changeset goes straight to trash, these do not seem they should be able to be previewed.
Should attempting to preview a trashed changeset be silently ignored or should there be an error message like when accessing `customize.php` with a trashed changeset?" westonruter
Future Releases 39913 Customize: Disable auto-trashing of published changesets in anticipation of revisions Customize 4.7 normal normal Future Release defect (bug) new 2017-02-18T22:29:08Z 2021-05-29T17:10:47Z "When changesets were introduced in 4.7 (via #30937), we decided by default to auto-trash a `customize_changeset` post upon publishing. The reason for this is that there was no UI for changesets and there would be no way to clean up old revisions from the UI, meaning the posts would just be added indefinitely. However, with revisions being planned for 4.8 being planned for in #31089 and #21666, it would perhaps be beneficial to disable the auto-trashing behavior so that once revisions support ''is'' added the revision history won't be empty.
Nevertheless, even with changesets not being auto-trashed, there would still be [https://core.trac.wordpress.org/ticket/21666#comment:33 challenges] with reverting to a previously-published changeset:
> == Challenges of Reverting to a Previously-published Changeset ==
>
> Reverting to a revision of a changeset is easier than reverting to a previously-published changeset. When reverting to a revision of the current changeset, all this means basically is to reset the settings to match the state of the changeset at that revision. However, reverting to a previously-published changeset is more complicated/interesting. Take this changelog:
>
> 1. January 1st: User changes site title to “Foo”.
> 2. January 2nd: User changes site tagline.
> 3. January 3rd: User changes site title to “Bar”.
>
> Now, if the user clicks the changeset revision for January 1st, my assumption is that this will restore the site title of “Foo”. However, will it also include a revert of the change made to the tagline on January 2nd? Each changeset only contains the settings that were modified, so as it stands right now we would not know what to revert the tagline to since it's previous value is not captured. Whenever a changeset is about to be published, we could capture the current value for each setting prior to saving. This would allow us to roll back all of the changes made to the site between two published changesets. The process would involve walking over the previous changesets to gather up a list of the previous values and merge them and apply them to the current changeset for previewing.
>
> Complication: What about when a user makes a change to the tagline ''outside'' of the customizer? In that case the tagline would not be referenced in any changeset, and reverting to the changeset on the 1st would only rollback the site title. Would this be expected behavior?" westonruter
Future Releases 42872 Customize: Improve display of theme tag filters on mobile Customize 4.9 normal normal Future Release defect (bug) new 2017-12-11T19:04:32Z 2017-12-11T19:04:32Z "Split out from #42212.
The filter bar disappears on screens shorter than a magic number (or narrower than a different, also magic number), unless you scroll all the way up to the top (quite difficult with one-column infinite scroll of themes). I don't happen to use this feature on any devices that would be affected by this problem, but the experience is quite subpar for those users currently. I'm guessing there might be some issues with CSS caching in the above screenshots, or, those that worked on the previous changes in this ticket may have a better idea of why certain browsers don't like something here. Probably worth exploring before 4.9 release if anyone is able to do that, though." celloexpressions
Future Releases 39091 Customize: Nav menu item controls should be inactive when items are excluded from preview Customize 4.3 normal normal Future Release defect (bug) new 2016-12-05T20:44:48Z 2017-01-15T23:03:48Z Plugins can exclude nav menu items from displaying in nav menus in a plugin like Nav Menu Roles. This is similar to how widgets can be conditionally excluded from sidebars via a plugin like Jetpack's Widget Visibility module. This is currently implemented for widgets, where a widget that is not shown in the preview will have its control's `active` state set to `false` (causing it to become partially-opaque rather than fully hidden). Something similar should be done for nav menu item controls that are excluded from the preview. westonruter
Future Releases 39128 Customize: Preview fails to load when domain mapping in use (home/siteurl domain mismatch) Customize 4.7 normal normal Future Release defect (bug) assigned 2016-12-07T00:12:58Z 2017-10-20T13:38:44Z "When the `home` URL and the `siteurl` have different domains, in 4.7 the preview shows the error message “Non-existent changeset UUID.” The reason is because the user is (probably) not authenticated on the frontend, and so the user cannot `customize` and since the changeset doesn't exist yet the user blocked from accessing the site. (The thought here is that the UUID serves as a unique key which would allow an unauthenticated user to access the preview if they knew it, though this wouldn't do any good for users who are previewing a theme switch since `switch_themes` capability is required regardless in that case). Note that the issue goes deeper when `FORCE_SSL_ADMIN` is enabled because the browser's cross-domain security policy blocks the preview frame altogether (in 4.7).
Nevertheless, even as far back to 4.3 (at least) when attempting to access the customizer with the frontend (`home`) domain mapped to another domain from the backend (`siteurl`), the preview loads with a login form and submitting the form just results in the form being re-displayed indefinitely. The user can never advance past it. So cross-domain customizer preview seems to be broken prior to 4.7 as well.
Note that the issue likely does not manifest in domain mapping plugins which dynamically change the `home` option (such as WordPress.com), as they do it conditionally based on whether or not the customizer is bootstrapped." RomainVB
Future Releases 39352 Customize: menu widgets have two edit shortcuts Customize 4.7 normal normal Awaiting Review defect (bug) new 2016-12-20T22:59:37Z 2021-05-24T02:47:23Z "r39622 fixes the edit shortcut for menus inside widgets, but that still leaves two edit shortcuts for those partials, generally with one on top of the other. Right now the menu shortcut is on top of the widget shortcut, so I was thinking it might be worth while to hide one, but I wonder which one is the better experience for users?
Clicking on the menu shortcut brings up the editor for that menu.
[[Image(https://cldup.com/7lTAzaHguo.png)]]
Clicking on the widget shortcut brings up the widget settings, which allow changing which menu is displayed there.
[[Image(https://cldup.com/mWvyLgbTc1.png)]]
It seems to me that both could be what a user might be looking for, but I think we can really only have one. Since you can click the ""Edit Menu"" button to get from the widget settings to the menu settings and not the other way around, I suggest we hide the menu shortcut, but I'm open to a dissenting opinion.
cc: @folletto and @melchoyce for a UX perspective
Split from #39101
" sirbrillig
Future Releases 38967 Customizer display Menus, although the theme not support menus Customize 3.9 normal normal Future Release defect (bug) new 2016-11-28T12:56:53Z 2021-05-24T02:55:36Z The Customizer display the panel ''Menus'', although the theme not support widgets or menus. elisa-demonki
Future Releases 57128 Customizer shows link to site editor when previewing themes Customize 5.9.3 normal minor Future Release defect (bug) new 2022-11-16T12:22:30Z 2023-02-14T05:30:08Z "#54878 removes the link to the customer from the theme installer in some cases, and #57127 will cover another, but if a user navigates directly to the customizer with a theme get var then they still get a confusing experience.
Repro steps:
1. Activate a block theme e.g. twenty twenty-three
2. Install an additional block theme but don't activate it
2. Go to /wp-admin/customize.php?theme=loudness (where loudness is the slug of the installed but inactive block theme)
3. Notice you are previewing the second, inactive theme.
4. Get a notice saying 'Hurray! Your theme supports site editing with blocks. Tell me more. [ Use Site Editor]'
5. Click Use Site Editor (goes to /wp-admin/site-editor.php?postType=wp_template&postId=twentytwentythree%2F%2Fhome)
6. You will be editing the active theme and not the theme you were previewing
I expected to be editing the theme I was previewing." dsas
Future Releases 29040 Customizer: Header Image not Updating when using static front page Customize 3.9 normal normal Future Release defect (bug) reopened 2014-07-27T15:56:39Z 2019-11-29T21:07:37Z "Using WordPress 4.0 Beta 2. Steps to reproduce:
only happens if theme has default header image
(with twenty fourteen)
- Open Customizer
- Open Header image section
- Click on previously uploaded, theme default, or new uploaded image
- current header updates in customizer controls and preview
- changing header image activates the save and publish button, but after pressing it and closing customizer the header image is not changed
- when returning to the customizer the newly uploaded image is not present, however it does appear in the media library
- after switching themes and the switching back all images do show up
(in another theme which has several default images and no header text)
- Open Customizer
- Open Header image section
- Click on previously uploaded, theme default, or new uploaded image
- current header updates in customizer controls
- customizer preview does not update image, even after triggering a preview refresh with another control
- changing header image activates the save and publish button, but after pressing it and closing customizer the header image is not changed
Tried on Google Chrome and Safari on both Windows and Mac
Is not always reproducible with every theme, inconsistent results." zhalsey
Future Releases 38954 Customizer: Increase preview refreshBuffer (perhaps with decay) when making rapid changes such as via text inputs Customize 4.6.1 normal normal Future Release defect (bug) new 2016-11-26T21:53:32Z 2021-05-31T16:30:52Z "Editing menu item fields (label, description, etc.) currently triggers preview refreshes with every keystroke (the Ajax requests are aborted when a subsequent request is triggered with the next keystroke). Usually menus support selective refresh, but that isn't always the case; and regardless, previewing should be debounced to a few hundred ms.
This may have existed at some point, or may have been an oversight in 4.3. Confirmed that the behavior exists on 4.6.1, so not a recent 4.7 regression." celloexpressions
Future Releases 43168 Customizer: Iris color picker handle above section title Customize normal normal Future Release defect (bug) new 2018-01-27T18:58:05Z 2019-12-16T00:49:42Z "When Iris color picker is opened, the handle displays bevor the section title – if section is visible during scroll-up.
Section title styles:
{{{
#customize-controls .customize-info.is-in-view,
#customize-controls .customize-section-title.is-in-view {
z-index: 9;
}
}}}
Handle styles:
{{{
.iris-picker .iris-square-handle {
z-index: 10;
}
}}}" crstnio
Future Releases 22037 Customizer: Live preview fetches page but does not display (show error message) Customize 3.4.2 normal normal Future Release defect (bug) new 2012-09-28T15:14:54Z 2021-05-22T18:03:28Z "I just set-up a plain installation of 3.4.2. Configured it for multisite use. Set-up two sites, both working fine.
When going into a sites Appearance settings to customize the theme (TwentyEleven), the Customizer shows the control panel on the left, but the preview remains blank.
Firebug shows no Javascript errors.
'''It also shows, that a POST request is sent to fetch the front page and that the page is actually returned in the response. It appears the response is just not added to the right-hand preview area.'''
----
Per duplicate #28227:
> When Customizer can't load due to an error, there's no indication as to what's going on. It would be nice if some information was presented instead of seeing a blank screen on the right side." marcoliverteschke
Future Releases 32667 Customizer: autofocus should load as soon as the panel/section/control is active Customize 4.3 normal normal Future Release defect (bug) new 2015-06-17T06:06:18Z 2020-11-29T16:34:19Z Currently, autofocusing waits until the preview loads fully, which can take quite a while on a lot of pages and themes. Widgets need to wait for this to determine whether they should be activated, but for most other sections, we should be able to autofocus as soon as the Customizer controls finish loading. For menus, this would shave seconds off of the percieved loading time of the Customizer. See https://make.wordpress.org/flow/2015/06/14/menus-in-the-admin-and-the-customizer-ux-flow-performance-comparisons/. celloexpressions
Future Releases 33085 Customizer: controls description inside labels are not real labels nor descriptions Customize 4.2 high normal Future Release defect (bug) reviewing 2015-07-22T22:45:01Z 2023-11-14T04:54:29Z "Splitting this out from #32493 (which changed its scope)
I'd propose to investigate about the Customizer controls descriptions. Currently, they're inside the label element. The result is they're not a proper form label, since labels should be short. Longer descriptions should be associated with form controls using `aria-describedby`.
As consequence for accessibility: as soon as a form control is focused, its label gets read out. In the following example from the new ""Site Icon"" functionality in 4.3, all the text highlighted in the blue box will be read out but the actual button text ""Select File"" won't. [http://www.w3.org/TR/html5/forms.html#category-label Buttons can have labels], that's correct HTML, but of course the label text will override the button text.
Not to mention all the label text is clickable and will activate the button when clicked.
[[Image(https://cldup.com/YrBf73CbMo.png)]]
Same for input fields, the control description used as label will be read out as... a label.
[[Image(https://cldup.com/cgetk_WbNT.png)]]
Related: #31540" afercia
Future Releases 36442 Customizer: when setting header image and site logo, also create a 2x image if possible Customize 3.9 normal normal Future Release defect (bug) new 2016-04-07T15:46:44Z 2017-01-24T18:49:45Z Currently after cropping an image for a header image or site logo, we make only smaller sizes images with the same ratio. These sizes are used (automatically) in srcset. We also need to make a 2x size for use on high density displays, if the original image is large enough. azaozz
Future Releases 36441 Customizer: when setting header image, site icon and logo, do not force the user to crop the image if cropping is not required Customize 4.3 high normal Future Release defect (bug) new 2016-04-07T15:33:28Z 2022-07-20T21:18:04Z "This is a long time standing UX ""weirdness"". When using ""the Cropper"" in the Customizer, it forces the user to crop the selected image even when it only requires scaling. To reproduce:
- Open the Customizer and go to setting a site icon.
- Upload an image that is square, I tested with 800 x 800px. We require 512 x 512px image for site icon, so the uploaded image only needs to be scaled. However on the next screen there is no ""Skip cropping"" button. If the users wants to use the whole image, they will have to ""crop"" it at 100% x 100% to get to the next step.
" azaozz
Future Releases 54443 "Database Error Breaks ""custom_css_post_id"" Theme Mod" Customize 4.7 normal normal Future Release defect (bug) new 2021-11-15T11:41:06Z 2023-05-18T09:27:08Z "We have now seen this issue on a couple of WordPress installations and it is rare but it happens.
When MySQL falls over during a page load (for RAM issues or whatever) the request on line 1863 of **/wp-includes/theme.php** ...
{{{#!php
ID : -1 );
}}}
... this results in the **custom_css_post_id** theme mod being set to -1 and all the Additional CSS is seemed to be wiped out from the Customizer.
At this point the content of the post with post_type set as custom_css in the database has to be copied back into ""Customizer - Additional CSS"".
Here is an example of a PHP error around the time that this happened ... please note that we have seen it happen on completely different themes and most recently on the latest version of WordPress (yesterday) ...
{{{
[24-Feb-2021 20:46:45 UTC] WordPress database error Server shutdown in progress for query SELECT * FROM wp_posts WHERE ID = 2213700 LIMIT 1 made by require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/plugins/wp-property-feed/templates/archive-wppf_property.php'), get_header, locate_template, load_template, require_once('/themes/twentyseventeen/header.php'), wp_head, do_action('wp_head'), WP_Hook->do_action, WP_Hook->apply_filters, wp_custom_css_cb, wp_get_custom_css, wp_get_custom_css_post, get_post, WP_Post::get_instance
}}}
To fix this issue from re-occuring I think that **set_theme_mod** on line 1877 is replaced with ...
{{{#!php
ID );
}
}}}
... so that the theme mod cannot be broken and CSS cannot be lost when the database has a blip.
What do you think?
Oliver" domainsupport
Future Releases 42075 Do not show default image on using WP_Customize_Cropped_Image_Control. Customize 4.2 normal normal Future Release defect (bug) new 2017-10-03T15:28:41Z 2021-05-29T18:19:17Z "Add New Control use WP_Customize_Cropped_Image_Control.
Do not Show default image.
But show Default button. When click the button, nothing happens.
Instead of using WP_Customize_Image_Control, Show image.
{{{#!php
add_section( 'theme_options', array(
'title' => __( 'Theme Options' ),
) );
$wp_customize->add_setting( 'custom_image', array(
'default' => get_parent_theme_file_uri( '/images/default-header.jpg' ),
) );
$wp_customize->add_control( new WP_Customize_Cropped_Image_Control( $wp_customize, 'custom_image', array(
'label' => __( 'Upload an Image' ),
'section' => 'theme_options',
'width' => 1920,
'height' => 1080,
)
)
);
}
add_action( 'customize_register', 'foo_customize_register' );
}}}
" Toro_Unit
Future Releases 50060 Header Video: Use playVideo after mute instead of autoplay to prevent video blocking because of autoplay with sound enabled Customize normal normal Awaiting Review defect (bug) new 2020-05-02T22:11:50Z 2021-06-01T02:53:06Z "Hi,
wp-includes\js\wp-custom-header.js uses autoplay to play video.
When it's a video managed by the NativeHandler, the mute attribute is set on the creation of the video element, so there is no problem.
But when it's a YouTube video managed by the YouTubeHandler, the YouTube player is created with the autoplay option active, and the video is muted on the onReady event of the YouTube player. So it can happend that the video tries to autoplay before beeing muted, especially with Firefox, then the video is stopped by the web browser because there is autoplay with sound enabled.
I propose to use e.target.playVideo() after e.target.mute() instead of autoplay to prevent the web browser from blocking the Youtube video if the autoplay starts before e.target.mute() is executed.
Please see https://github.com/WordPress/WordPress/pull/471 with the pull request to correct the bug with this solution (or attached files).
Best regards,
Olivier Blanc, web developper" olivierblancdev
Future Releases 46422 "Improve the Customizer header ""placeholder""" Customize normal normal Awaiting Review defect (bug) new 2019-03-05T18:42:24Z 2020-03-23T18:52:51Z "Splitting this out grom #43151.
In #43151, all the Customizer ""placeholders"" used for the site logo, site icon, background image, and media widgets have been replaced with real `` elements. For more details, please refer to that ticket.
There's one special case left though: the header image ""placeholder"". This ""box with dashed border"" looks like a clickable thing but it's not clickable. The header image control works in a very peculiar way and its ""placeholder"" is only informative. Also, it has a few different states, depending on the current setting (see screenshot below).
Its purpose is to communicate different states:
- no image
- randomizing uploader headers
- randomizing suggested headers
- finally, when a single image is set as header, it's replaced by the image
To remove the potential confusion, I'd like to propose the simplest option: just make it look ''not'' clickable. Making it look like an ""info"" notice (the one with the blue border on the left), would make it clear it just communicates the current state and it's not clickable.
" afercia
Future Releases 31970 Live Preview header image crop is not correct size Customize normal normal Awaiting Review defect (bug) assigned 2015-04-14T15:51:37Z 2017-03-21T18:34:08Z "Steps to reproduce
- Activate Twenty Fifteen
- Live Preview Twenty Eleven
- Add new header image and crop it
- See that the image is large and distorted
When you first select a new header image and are choosing where to crop it, everything looks good. Once you click crop and it shows the live preview, you can see that the image is the incorrect size." MikeHansenMe
Future Releases 42533 New pages scheduled via Customizer viewable as admin, 404 as visitor Customize 4.9 normal normal Future Release defect (bug) new 2017-11-13T15:12:36Z 2021-05-29T18:38:36Z "'''I'm not 100% if this is a bug, but here's the issue I am seeing:'''
If I add a new page via the Customizer and schedule the changes for 5 minutes in the future:
* As an admin viewing the '''Share Preview Link''', I can view the new page.
* As a visitor viewing the '''Share Preview Link''', I get a 404 when trying to access the new page.
----
I posted a Google Doc with steps to reproduce and screenshots here:
https://docs.google.com/document/d/1tiTjWjlUnVGNDaUZjFWmyg1BFRz6nF7tCTO-jjaXXUs/edit?usp=sharing
'''If the document is unreachable, here are the steps from the doc:'''
1. Install a new WordPress site via Softaculous
1. Install WordPress Beta Tester plugin and upgrade to latest WordPress versions:
1. Access the Customizer
1. Menus > Top Menu > Add Items > ''Add New Page'' '''New Page 1''' > Add
1. Schedule the changes for the future, like 1 hour in the future.
1. Copy the Share Preview Link, you’ll need it in step 10.
1. Click the Share Preview Link
1. Click the link in the menu for '''New Page 1'''. You’re currently logged in as an admin, and you can see it.
1. Logout of WordPress.
1. As a visitor, access the '''Share Preview Link''' (the link you copied in step 6).
1. Click '''New Page 1''' in the menu. You’ll get a 404.
This 404 I believe is a bug. If I’ve been working on ''New Page 1'' and I want a client to preview my draft, I would expect them to be able to see it without logging in.
" bwmarkle
Future Releases 40146 Starter content can be silently published with other themes Customize 4.7 normal normal Future Release defect (bug) new 2017-03-13T18:07:33Z 2017-11-02T18:59:40Z "To replicate on a fresh install, open the Customizer with Twenty Seventeen active, preview a different theme, then ""Save & Activate"" the new theme. All of the Twenty Seventeen starter content will be published along with the new theme.
The potentially confusing part of this behavior is that starter content might or might not have been in the preview, depending on the new theme.
For example, in Twenty Eleven, some of the Twenty Seventeen starter widgets are visible in the preview, but the menu items aren't.
I'm not quite sure what the preferred behavior would be in this scenario, assuming it's not the current behavior. The attached patch would have `WP_Customize_Manager::unsanitized_post_values()` skip any changeset values flagged as starter content when the current theme doesn't support it, but that might not be desirable." dlh
Future Releases 36191 Support responsive images in WP_Customize_Media_Control joemcgill Customize 4.1 normal normal Future Release defect (bug) assigned 2016-03-10T02:14:17Z 2021-05-23T19:01:25Z "When you add a custom logo, the preview in the Customizer sidebar isn't retina, even if the image file you uploaded is big enough.
Discovered in https://core.trac.wordpress.org/ticket/35942#comment:13. Some additional comments there.
Related:
* #21455: HiDPI (retina) theme custom backgrounds
* #36442: Customizer: when setting header image and site logo, also create a 2x image if possible" melchoyce
Future Releases 50696 UI issue in customizer menus section Customize 5.5 normal normal Future Release defect (bug) new 2020-07-19T05:42:31Z 2021-06-01T03:13:09Z "I have found 2 issues in customizer menu section
1) Input box-shadow issue if the input is invalid.
2) Add button properly not display
I have attached an image for better understanding." dilipbheda
Future Releases 33589 Using the customizer on wp-login.php (and similar) Customize 4.3 normal normal Future Release defect (bug) new 2015-08-28T15:16:45Z 2021-05-23T17:58:43Z "See related: https://core.trac.wordpress.org/ticket/28650#comment:19
I've been attempting to write a plugin to customize the `wp-login.php` page using the native customizer controls. So far it seems to work fine except that `postMessage` settings/controls do not update. I'm not sure why it doesn't work, as it appears that all of the customizer code is loading (maybe it isn't?), but something is getting messed up at runtime. The `refresh` setting works fine however.
Any ideas as to what might be going on? Is this something that I can help get pushed into core? Since `wp-login.php` is sometimes a vital part of some sites, it makes sense that it should be available to edit in the customizer. I'm no expert but it seems that this may just be a missing hook that needs to be added to the `wp-login.php` file?" daronspence
Future Releases 55051 WP_Customize_Nav_Menu_Item_Setting class needs hooks/filters parity for preview and update Customize 4.3 normal normal Future Release defect (bug) new 2022-02-02T18:46:59Z 2022-04-27T05:07:00Z "the `WP_Customize_Nav_Menu_Item_Setting` class needs parity with the `WP_Customize_Setting` class.
The following actions exist in the `WP_Customize_Setting` class:
`do_action( ""customize_preview_{$this->id}"", $this );`
`do_action( ""customize_preview_{$this->type}"", $this );`
[see source](https://github.com/WordPress/WordPress/blob/234877c9c3d81b6341bef5539ef52b0745b2a660/wp-includes/class-wp-customize-setting.php#L389-L411)
and
`do_action( ""customize_update_{$this->type}"", $value, $this );`
[see source](https://github.com/WordPress/WordPress/blob/234877c9c3d81b6341bef5539ef52b0745b2a660/wp-includes/class-wp-customize-setting.php#L692-L703)
The `preview()` and `update()` methods are overriden in `WP_Customize_Nav_Menu_Item_Setting` and ''don't'' have those `do_action` hooks, so there's no straightforward way to filter nav menu meta values on preview/update.
For example, the Nav Menu Roles plugin adds meta fields to the Nav Menu Items in the customizer and am currently using a workaround to attach the preview/save routines since there's no direct way to do this with these hooks missing.
Potentially related, the `WP_Customize_Nav_Menu_Item_Setting` class has an unimplemented `@todo` in the `preview()` method: see [source](https://github.com/WordPress/WordPress/blob/071c322bf2211db37cb38b4ddf4d2ed660e745d6/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php#L461)
I'm not 100% certain what is meant there and if it can be ignored if those hooks are implemented. (a quick test suggests that I can filter the metadata in a callback on `customize_preview_nav_menu_item` once it exists.
" helgatheviking
Future Releases 51947 When Customizer `setup_theme` action fails during wp-settings.php, WordPress crashes due to missing global $wp_locale Customize 4.6 normal major Future Release defect (bug) new 2020-12-06T12:48:49Z 2021-02-08T16:21:11Z "The `wp-settings.php` sets up the global `$wp_locale` (line 499 in WordPress 5.5.3) but before doing that it calls `do_action( 'setup_theme' );` (line 478).
The problem is that `WP_Customize_Manager::setup_theme()` has several failure actions that call the class's `wp_die()` ""wrapper"" which - depending on the value of the `messenger_channel` might try to call `wp_enqueue_scripts()`, which will eventually call `wp_localize_jquery_ui_datepicker()` that expects `$wp_locale` to be already set. The result is a crash.
Here is one such stack trace:
{{{
PHP Fatal error: Uncaught Error: Call to a member function is_rtl() on null in /var/www/html/wp-includes/script-loader.php:1684
Stack trace:
#0 /var/www/html/wp-includes/class-wp-hook.php(287): wp_localize_jquery_ui_datepicker('')
#1 /var/www/html/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array)
#2 /var/www/html/wp-includes/plugin.php(478): WP_Hook->do_action(Array)
#3 /var/www/html/wp-includes/script-loader.php(2001): do_action('wp_enqueue_scri...')
#4 /var/www/html/wp-includes/class-wp-customize-manager.php(454): wp_enqueue_scripts()
#5 /var/www/html/wp-includes/class-wp-customize-manager.php(551): WP_Customize_Manager->wp_die(0, 'Non-existent ch...')
#6 /var/www/html/wp-includes/class-wp-hook.php(287): WP_Customize_Manager->setup_theme('')
#7 /var/www/html/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array)
#8 /var/www/html/wp-includes/plugin.php(478): WP_Hook->do_action(Array)
#9 /var/www/html/wp-settings.php(478): do_action('setup_theme')
#10 /var/www/html/wp-config.php(97): req...
in /var/www/html/wp-includes/script-loader.php on line 1684, referer: https://somesite.com/
}}}
Moving the `do_action( 'setup_theme' );` line down a few lines until after the local has been setup, and just before loading the active theme's `function.php` file (which is arguably where it was supposed to be in the first place) solves the problem. " Guss77
Future Releases 24844 get_theme_mods doesn't return the theme customizer preview's new values. Customize 3.5.2 normal normal Future Release defect (bug) new 2013-07-26T13:41:52Z 2017-02-14T18:44:32Z "Using the theme customizer API, you can call get_theme_mod($option) to return the value for a specific theme option.
In the case of the user interacting with the theme customizer, if they have changed an option, the theme customizer replaces the saved option with the previewed / new setting by hooking onto the {{{theme_mod_$name}}} filter applied in {{{get_theme_mod}}}.
However, should the user need or desire to retrieve all theme mods at once, the filter is not applied, and the new settings are never injected into the saved settings array.
There's a workaround to simply loop through the settings and manually apply the filter, but it would be better if {{{get_theme_mods}}} had an argument like {{{$use_filter}}} and could add the filter in the core functionality.
{{{get_theme_mods}}} is in [source:tags/3.5.2/wp-includes/theme.php#L746 wp-includes/theme.php] on line 746.
{{{get_theme_mod}}} is in [source:tags/3.5.2/wp-includes/theme.php#L776 wp-includes/theme.php] on line 776.
{{{theme_mod_$name}}} filter is applied in [source:tags/3.5.2/wp-includes/theme.php#L780 wp-includes/theme.php] on lines 780 and 785.
{{{ theme_mod_$name}}} filter is added in [source:tags/3.5.2/wp-includes/class-wp-customize-setting.php#L72 wp-includes/class-wp-customize-setting.php] on line 72." nessworthy
Future Releases 41972 Add Import/Export functionality to the Customizer Customize 4.8.2 normal normal Awaiting Review enhancement new 2017-09-25T08:35:01Z 2018-07-13T03:25:18Z "As a theme author, a big part of our documentation and guidance is instructing people how to replicate different theme previews. Fr complex Customizer settings, it would be great to be able to provide a user with a file which could be uploaded to the site. Much like uploading an xml file to import the post/page content.
I'm aware of plugins such as https://wordpress.org/plugins/customizer-export-import. However I think it would be a great enhancement to add import/export functionality to core, removing the reliance on a plugin and the extra burden this adds for beginner level users.
This could also help alleviate issues raised in #27177.
The import/export options could be a further development of the UI mentioned in #39896." anonymized_11892634
Future Releases 40243 Allow Manual Hue input for the HSL Color Picker Customize 4.7 normal normal Future Release enhancement new 2017-03-23T17:58:50Z 2021-05-29T17:23:19Z "The new HSL mode for the color picker is insanely useful! However, if someone has certain brand colors that they wish to incorporate, it might be helpful to allow a specific hue input via an integer value that will allow accurate matching.
Right now, with the hue slider, it's anyone's best guess if they near their brand colors." calvinkoepke
Future Releases 37281 Allow non-error notifications to be set for Customizer settings from PHP Customize normal normal Future Release enhancement new 2016-07-04T22:46:29Z 2019-04-19T21:05:35Z "An API adding notifications to Customizer settings was added in #34893. In JS a notification can be added of type `error`, `warning`, `info`, and custom. In PHP, however, only `error` notifications can be added to a setting, and this is done by returning `WP_Error` from a validation routing (or sanitization routine). It may be useful to allow other kinds of notifications to be added via PHP as well. This would likely require adding a `WP_Customize_Setting::$notifications` collection with a `WP_Customize_Setting::add_notification()` and `WP_Customize_Setting::remove_notification()` to provide a similar API in PHP for the general notifications API in JS. It seems clear that non-error notifications shouldn't be added by returning `WP_Error` instances from validation routines, but that the notifications could be added inside of such routines, for example:
{{{#!php
20 ) {
$this->add_notification( array(
'type' => 'warning',
'code' => 'long_value',
'message' => __( 'This is a long value!' ),
) );
}
}
}
}}}
The non-error notifications could be sent back as part of full refresh and selective refresh responses in a similar way that error notifications are sent back and updated into the JS models." westonruter
Future Releases 38624 Allow starter content to apply after a site has already been set up and is no longer “fresh” Customize normal normal Future Release enhancement new 2016-11-02T17:26:32Z 2020-11-23T21:19:54Z "Starter content for themes was introduced in #38114. In order to prevent the starter content from overriding a site's existing content, a `fresh_site` option flag was added to prevent the content from applying after the site has been first updated. This means the starter content has limited use when installing new themes to try out during the life of a site.
The primary problem for applying starter content on an existing site is how to handle the merge conflicts, how to decide when to use the starter content/configs and when to use existing site content/configs. One option would be a button to “reset” a site to use the starter content. For more granularity, once the starter content is applied there could be a list of the settings that were modified so that you could then go through and evaluate each change to see if you want to keep it. Each control that has a setting containing dirty starter content could be highlighted in some way with a button that allows you to revert the starter content or toggle the starter content so you can compare before/after.
This is closely related to #21666 (Customizer reset/undo/revert) and #31089 (Add revisions of settings to the Customizer)." westonruter
Future Releases 42115 "Customize Menus: Add ""Your theme already has a basic menu"" view" bpayton Customize 4.9 normal normal Future Release enhancement assigned 2017-10-05T19:33:34Z 2021-05-29T18:22:01Z "When your theme creates a menu by default, we should display the following text:
> Your theme already has a basic menu, to help readers find all your pages. If you’d like to choose what appears instead, create a new menu to replace the default.
>
> Click the button to start.
>
> [ Replace default menu ]
See screenshot." melchoyce
Future Releases 38957 Customize Menus: Menu locations should be able to opt-out of menu item types that can be added to associated menus Customize 4.3 normal normal Future Release enhancement new 2016-11-26T22:24:31Z 2017-01-21T17:34:56Z "Certain menu locations are often designed to use a particular type of menu item - for example, social menus only make sense with custom links, or a custom nav menu walker may be used to display a deeper index of posts within taxonomy terms featured in a menu location.
If themes could specify what types of content a particular menu location is intended to contain, the menus UI could correspondingly show/hide or prioritize the types of menu items in the available menu items panel. This should be handled with the `object` and `object_type` menu item parameters.
As with #38956, this is difficult due to the current way the menu locations API works, and the fact that menus can be added to multiple locations. This should be considered a usability enhancement that is more conservative in hiding available menu items for items in multiple locations, and that adapts as menu locations are changed." celloexpressions
Future Releases 38956 Customize Menus: menus assigned to locations with limited depths should not allow deeper depths Customize 4.3 normal normal Future Release enhancement new 2016-11-26T22:16:54Z 2019-04-03T03:59:02Z "`wp_nav_menu()` allows themes to control how many levels of depth will be displayed in the menu hierarchy. However, the menus UI doesn't reflect this or explain why submenu items may not always be visible. There are often valid situations where menus can only accept one level of hierarchy (such as social menus), and the API allows this on the theme side but doesn't address the usability side of the issue.
This may be tricky because depth is defined here a menu is displayed, not where a location is registered. Menus can also be assigned to multiple locations. A better API for menu locations may facilitate this improvement." celloexpressions
Future Releases 22880 Customize Themes without activation Customize normal normal Future Release enhancement new 2012-12-12T11:34:51Z 2021-05-22T18:12:20Z "Add a posibility to customize deactivated themes with the Theme-Customizer without activating them by default.
Useful for Blogs running multiple Themes between which the frontend user can switch." kkkrys
Future Releases 42635 Customize: Add default value for customizeAction param for sections Customize 4.3 normal normal Future Release enhancement new 2017-11-20T05:30:21Z 2018-10-12T04:07:05Z "Currently the `customizeAction` has to be explicitly provided when dynamically adding sections via JS. If not, then the section header has broken layout. There should be a default value provided so that this doesn't have to be provided each time (see #42083). Adding a default value for `customizeAction` is complicated a bit by the fact that it [https://github.com/WordPress/wordpress-develop/blob/4af1237176c326e7840361fd580fdc3f97841e6a/src/wp-includes/class-wp-customize-section.php#L228-L233 varies based on whether the section has a parent panel]. The `getContainer` method of `wp.customize.Section` probably should check if `customizeAction` is empty and if so supply one: it could look to see if it has a `panel` parent, and if so, grab the title; otherwise, it can use the default “Customizing” value. A default value should have been originally provided in #30737.
Workaround for plugins to provide a default value in the mean time:
{{{#!php
unused - the theme is considerably more fundamental to the Customizer experience
However, since the `theme` is not just another `setting` then this means that the theme cannot currently be made part of a changeset, and as such a theme switch cannot be previewed on the frontend by non-authenticated users and also a theme switch cannot be scheduled in the customizer. Ideally there could be a `theme` setting with the `switch_themes` capability that could be added to a changeset, and when that changeset is published, the `switch_theme` call should then be made.
See also #22880." westonruter
Future Releases 39389 Customize: Make sure selective refreshed partial placement is scrolled into view Customize 4.5 normal normal Future Release enhancement new 2016-12-24T23:11:57Z 2022-08-26T08:01:45Z As of #36678 there are visible edit shortcuts in addition to the “shift-click to edit” behavior in the preview. This ensures that the corresponding control for a given element in the preview can be focused and discovered. However, there is no corresponding facility to quickly discover and jump to an element in the preview that corresponds to a given control. When making a change in a control any corresponding element (partial placement) in the preview should be scrolled into view. This is a key usability improvement. westonruter
Future Releases 42191 Customize: Selectively merge settings from autosave revisions Customize normal normal Future Release enhancement new 2017-10-12T04:06:54Z 2021-05-29T18:26:08Z "In follow-up on #42024, an autosave revision is created as part of changeset locking. When a user returns to the customizer after a lock has been lifted, they will be prompted to restore their revision. The restoration logic should only load settings from the changeset which are older than the settings in the `customize_changeset` post (see new setting prop `date_modified_gmt`), or the settings for which there is no existing setting in the changeset. This merge will more intelligently ensure that a user's restored autosave revision won't override the changes another user saved. There may be some cases, however, where selectively restoring parts of an autosave will have unexpected results (e.g. opting to include a newly-created widget, but not accepting the change to the sidebar), so more investigation will be needed.
The problem of conflict resolution in the Customizer is a large problem which is also being worked on in the [https://github.com/xwp/wp-customize-snapshots Customize Snapshots] plugin.
See also #31436 (Handle conflicts in concurrent Customizer sessions)" westonruter
Future Releases 42272 Customize: Use client-side templates for rendering base controls Customize 4.9 normal normal Future Release enhancement new 2017-10-19T03:05:59Z 2019-01-09T06:25:05Z "This is a follow-up on #30738. See patches on that ticket. Eliminating server-side rendering of the control content for server-side registered controls was not included as part of 4.9 due to it being a big change and it got too late in the release.
This will necessarily need to include support for `dropdown-pages` which we didn't implement in #30738, since we ran out of time and wanted to rely on REST API for fetching the pages." westonruter
Future Releases 37916 Customize: ability to disable content creation in menus Customize 4.7 normal normal Future Release enhancement new 2016-09-01T20:55:33Z 2019-06-04T19:41:28Z "There should be a hook to disable the ability to create new posts (and eventually terms, see #37915) in nav menus in the customizer. Ideally, it should be able to be disabled for specific post types as well as all post types. For terms, we'll need to turn it off for the `post_format` taxonomy.
This is being split out from the initial merge in #34923, where there are patches with an approach we could take here." celloexpressions
Future Releases 36581 Customizer Header Image Control should extend the cropped image control Customize 3.9 normal normal Future Release enhancement new 2016-04-18T19:55:06Z 2019-05-29T17:36:05Z "`WP_Customize_Header_Image_Control` was written (in 3.9) before all of the other customizer media controls were refactored to use the media library (in 4.1) and additional controls were introduced (in 4.2 and 4.3). It uses an almost entirely separate codebase right now, and by merging it back in to use the newer functions, future enhancements can be made in fewer places to apply to more controls, and the cropped-image control will likely benefit with some new reusable features as well. Additionally, this cleanup will simplify the codebase and make it much easier to contribute to and understand the way the headers UI works, and why.
Ideally, we would be able to use `WP_Customize_Cropped_Image_Control` directly for header images by bringing more features that are currently specific to headers to all media controls. However, in practice we may end up needing it to remain a distinct control for various reasons. Regardless, it should extend WP_Customize_Cropped_Image_Control directly and make use of its functions in both PHP and JS where possible. Additionally, it should leverage the core API for JS-templated contols introduced in 4.1.
See #29211, and #32861, which would likely be fixed in the process of implementing this ticket." celloexpressions
Future Releases 41126 Customizer does not work if both wp_footer() and wp_head() functions are not present in the theme. Customize 4.7 normal normal Future Release enhancement new 2017-06-22T14:56:18Z 2017-07-05T21:06:03Z I know there is another ticket (#14752) that refers to when wp_head() and wp_footer() are not present in the theme and it was discarded. But in this case, I refer specifically to the Customizer. Since it will not work when those functions are missing, maybe we can disable it completely (maybe with a dismissible notice in the head) or find a way to include the necessary files and data and make it work even when those functions are missing. mdifelice
Future Releases 39609 "Customizer should display ""Fade"" effect for entire iFrame for settings using partialRefresh when selector is not visible" Customize 4.5 normal normal Future Release enhancement new 2017-01-17T01:30:41Z 2017-11-06T17:26:53Z "When modifying the value of a setting in the customizer that uses partialRefresh for the transport, typically, the element that is being modified on the live site fades out as the customizer replaces the element with the correct output. This gives the user a nice visual letting them know to be patient as the output is modified.
In some cases, the element being modified may not be visible in which case there is no cue to the user to let them know things are being updated.
A good example would be an advanced setting for changing the color scheme of the site which adds inline CSS to the head tag. Here is a little video example: https://cl.ly/illS (I don't use postMessage for this setting because there are filters in place so developers can hook in custom elements to be modified and for 3rd party plugin support).
I'm sure there are other circumstances where a setting may be altering a ""hidden"" element. This is just one example and while there is very little delay in my specific example, I believe for consistency and UI purposes it would make sense to add the extra check to see if the element is visible and if not fade-out the whole iFrame during the refresh process.
Thank you for considering!" AJClarke
Future Releases 39910 Customizer: Add ability to drag & drop widgets and menu items Customize normal normal Future Release enhancement new 2017-02-17T19:38:19Z 2021-05-29T17:06:55Z Currently when you add a new widget in the Customizer, the available widgets will show, but you can not drag and drop any of the those widgets, rather you have to select the widget then, that widget will be added in. Drag and drop does work on widgets that already exist or where just added. lukecavanagh
Future Releases 38707 Customizer: Additional CSS highlight, revisions, selection, per-page, pop-out Customize normal normal Future Release enhancement new 2016-11-08T06:04:04Z 2021-06-01T03:01:11Z "[[Image(https://core.trac.wordpress.org/raw-attachment/ticket/35395/customizer-css-i2.png)]]
This ticket is to track the next steps of Additonal CSS after 4.7. See #35395 for the discussion so far.
The MVP of the Additional CSS editor in customizer included the basic UI, navigation and backend work.
There are various next steps that area already included in the design above, and can be done either in a single next release or staggered further as needed. From the latest discussed design, the features we already have ready to build are:
1. Syntax Highlighting
2. Revisions
3. Selection of items on the page (CSS selector)
4. Per-Page CSS as a complement of the current ''site-wide'' CSS for better management
5. The ability to pop-out the editor in a separate window for a more comfortable editing experience
Just one special note regarding revisions: we might want to not do CSS revisions, and instead build the more flexible and general revision UI for the customizer as a whole. That's being discussed in #31089.
" folletto
Future Releases 35827 Customizer: Create a dropzone for adding images Customize 4.1 high normal Future Release enhancement assigned 2016-02-13T22:27:11Z 2017-09-26T13:52:00Z "This is a follow-up to #35826.
On panels that let you upload images (identity, header, background) we should make the ""no image set"" container a dropzone to drag & drop your images onto. Like the editor, when you drag and drop an image into those dropzones, it would open the media modal and start uploading the image." melchoyce
Future Releases 40432 Customizer: Should we stop contextually hiding features? Customize 4.0 normal normal Awaiting Review enhancement new 2017-04-12T22:20:48Z 2018-09-12T17:52:10Z "This is a continuation of the conversation in #39087.
If something doesn't appear on a page you're previewing, it gets hidden in the Customizer panel. For example, if your archive pages have a sidebar, but your static pages do not, you will not be able to edit your archive sidebar. It will be hidden until you go to an archive page.
The same goes for contextual theme options. For example, you can't assign sections to your homepage in Twenty Seventeen unless you're on your homepage.
This is often very confusing for folks new to WordPress, as evident in the previous ticket linked above. I think we should change this behavior, and I'm interested in hearing what others think." melchoyce
Future Releases 40527 Decouple WP_Customize_Manager Customize 4.8 normal normal Future Release enhancement new 2017-04-22T10:59:58Z 2017-09-25T17:24:37Z "When you create multiple instances of `WP_Customize_Manager` it adds/removes multiple hooks in its constructor which should be executed single time.
So let's say if I want to create two new changeset posts it I will do.
{{{#!php
save_changeset_post( array( 'data' => $data ) );
$manager2 = new WP_Customize_Manager();
$manager2->save_changeset_post( array( 'data' => $data ) );
}}}
This will cause `wp_ajax_customize_save` to add twice with `$manager1` and `$manager2` it should add only once.
`wp_ajax_customize_save` is a just example.
See Constructor: https://github.com/WordPress/WordPress/blob/5f771393a318d333503d5e13525dfcd543819302/wp-includes/class-wp-customize-manager.php#L229-L369.
So we should decouple `WP_Customize_Manager` class and maybe extract changeset methods in separate class `WP_Customize_Changeset`." utkarshpatel
Future Releases 38072 Eliminate placeholder nav menu items in favor of auto-drafts in Customizer Customize 4.3 normal normal Future Release enhancement new 2016-09-16T05:46:06Z 2017-06-07T00:21:05Z "When nav menus were added to the customizer in 4.3, newly-created nav menu items were assigned a random negative integer to represent the ID for that `nav_menu_item` post. (This was also true of `nav_menu` terms for newly-created nav menus.) Upon saving the customized state, any such `nav_menu_item[...]` settings with negative IDs would then get inserted and assigned actual IDs which would then get sent back in the `customize_save_response` and the UI then replaces the placeholder nav menu item's control with the newly-inserted nav menu item's control. The key motivation here was to ensure that changes made in the customizer would not have an impact any part of WP until hitting Save. (What happens in the customizer stays in the customizer… until you hit Save.)
Now, aside from a momentary flicker of placeholder nav menu item controls that get replaced with actual nav menu item controls, there is a key disadvantage to using such placeholder nav menu items (with negative post IDs): it is not possible to relate postmeta to them. There is a long-standing ticket #18584 for allowing nav menu items to be extensible to add custom fields in the customizer (and in the admin screen). In the call to `get_metadata` it has a behavior whereby it passes the supplied post ID through `absint` so if any postmeta are attempted to be related to placeholder `nav_menu_item` posts, they will fail to be accessed when calling `get_post_meta()`.
Now, in #34923 there was the introduction of being able to create stubs for posts and pages inside the customizer so that they can have nav menu items created for them. The stubs created here are `auto-draft` posts which ensures that they do not affect other parts of WordPress and they will be automatically garbage-collected if never published. Now, the original Menu Customizer plugin did make an Ajax request for each created new nav menu items but they were `nav_menu_item` posts that were not related to a `nav_menu` (they were orphaned) rather than being `auto-draft`. We could consider going back to making an Ajax request to create each `nav_menu_item` (now an `auto-draft`) in the same way that is being done for post/page stubs.
A downside of going to using Ajax to create new nav menu items (to reserve an auto-incremented post ID) is that adding a new nav menu item would no longer be instant. However, it would mean that upon save there wouldn't be any rebuild of nav menu item controls replacing placeholders with actuals, and as such it could mean a lot of code could be removed. But the most important benefit of switching to use `auto-draft` posts for nav menu items is that postmeta could then be created in the customizer and related to actual post IDs which could then be properly targeted in `get_post_metadata`filters.
Alternatively, `get_post_meta` could just replace the `absint` with a call to `intval` and then ensure that the `get_post_metadata` filters apply with that negative ID, but then short-circuit if the filter doesn't return with `null` (since it wouldn't be able to find entries with negative IDs in the database).
See feature plugin for adding custom fields to the customizer: https://github.com/xwp/wp-customize-nav-menu-item-custom-fields
Note how the plugin has to postpone the presentation of custom fields until a newly-added nav menu item is saved the first time: https://github.com/xwp/wp-customize-nav-menu-item-custom-fields/blob/2ad056634441a74ba91982ca88b089297f630971/customize-nav-menu-item-custom-fields.js#L279-L284
Dependency for: #18584" westonruter
Future Releases 36582 Export main query from Customizer preview Customize 4.0 low normal Future Release enhancement assigned 2016-04-18T20:45:09Z 2021-05-23T19:56:36Z "Controls, sections, and panels in the Customizer support the concept of an active state (#27993) which controls whether or not the control is contextual to the current query. Controls may want more information than whether to hide/show, but to show contextual information based on which kind of query is loaded in the Customizer preview, such as if it `is_singular` or which post specifically was queried. This information should be exposed from the Customizer preview to the pane as well.
An initial implementation of this has been implemented in the Customize Posts feature plugin: https://github.com/xwp/wp-customize-posts
When the preview syncs the `WP_Query` data from the preview to the pane, the data should get sent along with the `ready` message along with the `activeControls`, `activeSections`, and `activePanels` data. When the data is received by the pane, it should get populated into a model which can have events attached to it. For example, a `wp.customize.Values` instance could be used as a collection to represent the query_vars. Or there could be one single `wp.customize.Value` that stores the exported `WP_Query` data in like `wp.customize.previewedQuery` which plugins could then listen to changes on. For example:
{{{#!js
wp.customize.previewedQuery.bind( function( newQuery, oldQuery ) {
if ( newQuery.is_singular !== oldQuery.is_singular ) {
if ( newQuery.is_singular ) {
// We switched to a singular template!
} else {
// We switched to a non-singular template!
}
}
} );
}}}
Some thought will need to be given to how a JavaScript object is used to represent `WP_Query`.
See Slack: https://wordpress.slack.com/archives/core-customize/p1461011732000103" westonruter
Future Releases 37275 Facilitate creating controls that manipulate settings with object values Customize 3.4 low normal Future Release enhancement new 2016-07-04T20:39:26Z 2019-04-19T21:05:06Z "While #37274 addresses the difficulty to manipulate updating settings that have object values, the Customizer JS API also does not facilitate creating controls that have fields which manage a setting that has a object value.
The `MenuNameControl` provides a good example of a control that has a text field for managing a nav menu setting's `name` property:
{{{#!js
control.nameElement = new api.Element( control.container.find( '.menu-name-field' ) );
control.nameElement.bind(function( value ) {
var settingValue = control.setting();
if ( settingValue && settingValue.name !== value ) {
settingValue = _.clone( settingValue );
settingValue.name = value;
control.setting.set( settingValue );
}
});
control.setting.bind(function( object ) {
control.nameElement.set( object.name );
});
}}}
This works but it is tedious when scaling and makes it difficult to extend, as can be seen in the `MenuItemControl`. There should be a more declarative way to link a field to ''a property'' of a setting value object. One implementation of this can be seen in the [https://github.com/xwp/wp-customize-posts/blob/0.6.1/js/customize-dynamic-control.js Dynamic control] as seen in the Customize Posts plugin. While Core supports a `data-customize-setting-link` attribute in a control template to declaratively link an input field to a setting value, the Dynamic control Dynamic adds support for a `data-customize-setting-property-link` attribute which will link the input field to the a ''property'' of the (default) setting. This eliminates the need for custom JS logic to link the input elements.
See an example control which has fields which manipulate a setting value containing a street address: https://github.com/xwp/standalone-customizer-controls/blob/master/class-customize-address-control.php
This will facilitate extending nav menu items in the Customizer: #18584." westonruter
Future Releases 37274 Facilitate updating/extending Customizer setting values that are objects Customize 3.4 normal normal Future Release enhancement new 2016-07-04T20:22:46Z 2019-04-19T21:04:47Z "There is bit of a dance to work with setting values that are objects.
Consider a `mailing_address` setting that represents a street address:
{{{#!json
{
""street"": ""123 Fictional St."",
""city"": ""Portland"",
""state"": ""OR"",
""zip"": ""97201""
}
}}}
Getting the value is as simple as `wp.customize( 'mailing_address' ).get()`, but updating the value is not so simple. To change the `street` part of this setting, the following is required:
{{{#!js
var value = wp.customize( 'mailing_address' ).get();
value = _.clone( value );
value.street = '123 Imaginary Ave';
wp.customize( 'mailing_address' ).set( value );
}}}
The clone is required because objects are passed by reference, and if the `value` were to set directly, the subsequent `set` would not trigger a `change` event.
Widgets and nav menus use objects as values in Core. Widgets aren't manipulated directly in JS (until #33507) but nav menus and nav menu items are. Here's the code for managing how a nav menu's name gets changed when the nav menu's name field is updated:
{{{#!js
control.nameElement.bind(function( value ) {
var settingValue = control.setting();
if ( settingValue && settingValue.name !== value ) {
settingValue = _.clone( settingValue );
settingValue.name = value;
control.setting.set( settingValue );
}
});
}}}
To make it easier to work with setting values as objects, we could introduce a `wp.customize.Value#setExtend` method that allows an object value to be extended in the same way that `setState` works in React, take an object of key/value pairs that are merged on top of the existing value.
Here is an example implementation:
{{{#!js
wp.customize.Value.prototype.setExtend = function( props ) {
var value = _.clone( this.get() );
_.extend( value, props );
this.set( value );
};
}}}
With this, to update the `mailing_address` setting value property in the above example could be changed to simply:
{{{#!js
wp.customize( 'mailing_address' ).setExtend( { street: '123 Imaginary Ave' } )
}}}
See #26061.
Related #37275." westonruter
Future Releases 38077 Facilitating embedding customizer controls outside of sections westonruter* Customize normal normal Future Release enhancement accepted 2016-09-16T20:14:50Z 2017-05-07T02:46:53Z "Controls are currently assumed to be always contained within sections in the customizer. This makes it difficult to reuse the controls in other contexts, such as embedding multiple controls inside another control or embedding a control outside the context of the customizer entirely. This will facilitate embedding customize controls on the frontend for contextual editing without having to have the customizer sidebar open or even having to go into `customize.php` at all.
Some of the hacks required to get controls to appear outside of the customizer can be seen in https://github.com/xwp/standalone-customizer-controls
The Media control in particular needs to be updated to remove the logic resize the player controls when the section is expanded. The `embed` method (used by widgets) also needs to not wait generally for a contained section to expand.
Key dependency for #29071 (Make it easier to include an instance of the Customizer outside of customize.php)
Depends on or is closely related to #37964 (Allow customizer controls to be encapsulated by accepting pre-instantiated settings)" westonruter
Future Releases 31436 Handle conflicts in concurrent Customizer sessions Customize 3.4 normal normal Future Release enhancement assigned 2015-02-24T19:42:44Z 2021-05-22T20:00:44Z "If two users open the Customizer at the same time and modify the same settings, the user who saves their changes last will win out, and the person who saves first will have their changes lost. (The frequency of the problem was reduced in #29983 since now only dirty settings now get POSTed.) The Customizer needs Heartbeat integration to add the “Post Locking” functionality. We don't need to lock the entire Customizer, however, from concurrent users: we need to add locking for individual settings in the Customizer. When a setting becomes dirty, we need to broadcast via Heartbeat to other users that the setting has been changed and thus any controls for this setting should be marked as ""locked"", with any changes prevented. This will become increasingly important as more and more settings are added to the Customizer and users go there more often to make changes.
The locking UI could provide a button to copy the other user's change into the other Customizer session, and this could result in the control being editable again, with subsequent changes pushed out to other users as well, who would then also get the corresponding setting automatically updated if it was dirty, but if it was not dirty then it would remain in its clean state but with a locking notification added.
This also should apply when a setting is modified by some means other than the Customizer: if someone is in the Customizer and another user changes a setting via an admin page or via XML-RPC or REST API, then this setting update should also be illustrated in the Customizer to note that the settings are stale and should be refreshed. This refresh could be done inline, without having to reload the entire page.
For the issue of conflicting auto-incremented widget IDs across user sessions, see #32183.
For the previously-reported issue specific for handling conflicts between editing widgets on the widget admin page, see #12722.
For the introduction of concurrency locking for options pages (settings API), see #32202.
Some enhancements for a feature plugin: The Customizer UI would benefit from having a list of users currently in the Customizer appearing somewhere, with a list of the changes each user has made. If someone left their Customizer session open, this list would also allow an administrator to sign the user out, using something like the [https://wordpress.org/plugins/user-session-control/ User Session Control] plugin; or the Customizer UI could provide a way to boot a user from the Customizer.
For use of Heartbeat to keep nonces fresh, see #31897.
See also #42191 (Customize: Selectively merge settings from autosave revisions)" westonruter
Future Releases 38845 Implement HTML5 input validity constraints in customizer settings Customize 4.6 normal normal Future Release enhancement new 2016-11-17T23:58:38Z 2017-09-18T19:10:39Z "Ever since #28477 controls in the customizer have supported custom HTML5 input types along with new input attributes passed via the control's `input_attrs` param. The support, however, has been lacking because when a user supplies something that violates some of the constraints (such as `pattern` or `step`) there is nothing that blocks the setting from being saved (using setting validation model in #34893). So using the `input_attrs` along is in fact somewhat harmful if it is not accompanied by the same constraints being applied in the setting's `sanitize_callback` or `validate_callback`. The browser's built-in input validation error UI also does not show because no form actually gets submitted, and there are no calls to the poorly-supported `input.reportValidity()` method.
To address these issues, I suggest that the default `validity_callback` for `WP_Customize_Setting` could look for any associated controls and then check the type of the value against the control's `type` and also check the value against the validation constraints defined in the control's `input_attrs` param, such as `min`, `max`, `pattern`, `step`, `maxlength`, and so on. In this way, a setting's `sanitize_callback`/`validate_callback` wouldn't even need to be defined since the validation constraints would be defined declaratively and checked automatically.
It's not exactly the best pattern, however, for the setting's validation constraints to be defined on the control. So there could be a new `validation_constraints` param on `WP_Customize_Setting` where the validation input attributes could be defined instead of the on the control's `input_attrs`. A control could then automatically populate it's own `input_attrs` by copying from the setting's `validation_constraints`.
These changes will ensure that setting validation routines will apply and error notifications will be displayed when settings fail validation on the server with a full refresh, selective refresh, or changeset update. In order to get the browser's native validation error reporting to appear, the JS control logic can be updated to call `input.reportValidity()` if it is available (it's currently only implemented in Chrome).
See feature plugin: https://github.com/xwp/wp-customize-input-validity-constraints" westonruter
Future Releases 42331 Improve setting up header images in Customizer Customize 3.9 normal normal Future Release enhancement new 2017-10-25T11:47:08Z 2018-01-15T19:05:10Z "I think the process of setting up header images in Customizer can be more streamlined.
When only 1 image is there (uploaded or suggested), why do we offer the 'randomize' option? If you click the button, it gets the 'selected' class, the preview greys out, but nothing has been changed (how could it having only 1 image) -
1) Shouldn't this button rather be only there if we have more then 1 image?
2) Small glich
Scenario:
Current header image is not set
We have 1 uploaded image
Set it to 'Randomizing uploaded headers'
then delete the image (clicking 'X')
Publish
It's still set to 'randomize headers' instead of 'no image selected'
I think it should switch to 'No image set' in the moment the image is deleted
There was a lot of activity in #21785 I'm unable to sum this all up" Presskopp
Future Releases 40200 Introduce WP_Customize_Embed_Control Customize 4.7 normal normal Future Release enhancement new 2017-03-18T22:28:29Z 2018-07-08T17:36:03Z Similar to the previously-introduced `WP_Customize_Media_Control`, `WP_Customize_Embed_Control` would offer a UI framework for options that store media information. For this control, associated settings would always store the embed URL, whereas the media control stores an associated local attachment ID. This control would be used to add and manage options that use externally-hosted media via oembed. The initial core usage would be for the external header video control, and this would facilitate showing the embed within the customize pane so that you can directly see what the embed is in the pane, similarly to how the media controls show small previews in the pane to complement the full previews in the customize preview. celloexpressions
Future Releases 37887 Make attachments atomic until a Customizer session is published Customize 4.7 normal normal Future Release enhancement new 2016-08-30T16:50:18Z 2017-10-16T06:45:09Z "== Current behavior ==
When you upload attachments via a Customizer session they are:
1. Added to the filesystem.
2. Saved to the database as a new post.
3. Immediately visible in the Media Library to all other logged in users.
== Desired behavior ==
Attachments that are uploaded during a Customizer session should not be published, or even visible by other logged in users, until the user decides to publish the changes.
== Possible idea
Until Customizer changed are published, all `attachment` posts that have been uploaded inside the Customizer could have their post status set to `auto-draft` rather than `inherit`. This will make them invisible inside the Media Library from other logged in users.
All `attachment` posts uploaded during the Customizer session could be stored inside the new Customizer transaction, and the Media Library query could be made to only show those uploads during the current unpublished session.
== Publish or Discard
If a transaction (customizer changes) is '''published''', then the post status on these `attachment` IDs can be set to `inherit`, making them visible inside in the Media Library like normal.
If a transaction (the customizer changes) is '''discarded''', then the `attachment` IDs can be force deleted via `wp_delete_attachment( $ID, true )` which will not only delete them from the database, but also from the filesystem." fjarrett
Future Releases 29071 Make it easier to include an instance of the Customizer outside of customize.php Customize 3.4 normal normal Future Release enhancement reopened 2014-07-30T20:27:19Z 2021-05-22T19:29:30Z "A lot of the bootstrapping of the customizer goes on either in customize.php or in function calls that are hardwired to this instance.
We should make this code more modular, so there isn't so much boilerplate required to load a customizer instance on a different page." ericlewis
Future Releases 49876 Menu section improvement ryokuhi* Customize normal normal Future Release enhancement accepted 2020-04-11T10:23:39Z 2021-07-30T15:53:54Z I use wordpress for more than 15 years i still wondering why you dont make the menu section easier, for example if someone have more than 100 categories in a woocomerce he can be lost in the categories and subcategories. It should be good idea to show BOLD wich of items are in use in the current menu preview, so can be easy use the other items. also need more flexibility in menu items column Dblii
Future Releases 43469 Native Site Icon feature in Customizer is outdated Customize 4.3 normal normal Future Release enhancement new 2018-03-04T14:17:06Z 2021-05-31T15:07:39Z "Hi,
The native Site Icon feature in Customizer is outdated and should be updated.
Windows:
1) There's only 1 Windows Tile (270x270px). To cover newer devices there should be a delcaration for the small, medium, wide and large Tile.
Source [https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/samples/dn455106(v=vs.85) here].
2) There should be a colorpicker for the Windows Tile.
3) Because the wide Windows Tile is rectangular (310x150px), there should be an additional file input for this Tile.
4) To overwrite the prefered XML browser configuration file, this should be added:
{{{ }}}
Regarding 2 and 3 check attachment.
iOS:
5) Instead of using {{{rel=""apple-touch-icon-precomposed""}}} it's more common to use {{{rel=""apple-touch-icon""}}} nowadays. Example:
{{{ }}}
Guido
" Guido07111975
Future Releases 29316 Need more value and preview hooks for WP_Customize_Settings Customize 3.4 low normal Future Release enhancement new 2014-08-22T11:57:04Z 2018-03-20T01:22:38Z "There should have more filters to handle settings.
for example:
add
{{{
apply_filters( 'customize_value', $this->defaults, $this);
}}}
or
{{{
apply_filters( 'customize_value_'.$this->type, $this->default, $this);
}}}
before
{{{
apply_filters( 'customize_value_' . $this->id_data[ 'base' ], $this->default );
}}}
add
{{{
do_action( 'customize_preview_setting', $this );
}}}
before
{{{
do_action( 'customize_preview_' . $this->id, $this );
}}}
" dedepress
Future Releases 47990 Opening/Closing the 'Add Items' slideout in the Customizer Menu editor loses the check icon Customize 4.3 normal normal Future Release enhancement new 2019-09-06T08:09:50Z 2021-06-01T00:47:14Z "Hello,
While testing [https://core.trac.wordpress.org/ticket/46830 46830] I came across a separate issue I'll open here. The checkbox to indicate an item (page/post) is in the menu gets reverted to the + add icon if you click 'All Items' button to open and close the select menu item drawer.
It would be nice if the checkbox icon was persistent to continue to indicate to the user what items are selected in the menu.
Thank you
" garrett-eclipse
Future Releases 35186 "Put the Customizer ""back"" button next to the ""Close"" button" Customize 4.4 normal normal Future Release enhancement new 2015-12-21T15:44:55Z 2020-11-22T16:27:21Z "Seems like a pretty small thing. The ""Back"" button that takes you to the top of the Customizer menu scrolls out of view but the ""Close"" button does not. If we put the Back button next to the Close button, it would be slightly less confusing." DragonFlyEye
Future Releases 43464 Search Options in Customizer Customize normal normal Future Release enhancement new 2018-03-04T07:05:30Z 2021-05-30T17:34:24Z "If a theme has more than few settings, finding the setting gets frustrating at times. A search functionality in the customizer will be helpful.
Here is a plugin that we have developed as a POC:
https://wordpress.org/plugins/customizer-search/
But I believe, it will benefit if it is added in the core.
" brainstormforce
Future Releases 29288 Settings updated within the Customizer Preview are not synced up to main app Panel Customize 3.4 lowest normal Future Release enhancement new 2014-08-20T20:05:43Z 2021-05-22T19:32:28Z "The Customizer has two copies of models for the registered settings: one set in in the Customizer panel parent frame, and changes to these result in the settings getting copied over to the preview either via postMessage or via a refreshing the preview entirely. Updating a setting model from within preview directly, however, does not propagate up to the model. There is currently a one-way-sync from the panel to the preview.
As a workaround, the preview can send messages to the panel for which handlers can apply the updates to the settings, but it would be good if this was automatic.
By implementing a bi-directional syncing of settings between the panel and preview, there would be lots of opportunities for inline front-end editor controls to more easily be added into the preview directly.
See also https://twitter.com/bradyvercher/status/502163462990995456" westonruter
Future Releases 32861 Site Icon: Provide display for all existing site-icon cropped images Customize 4.3 normal normal Future Release enhancement reopened 2015-07-01T21:14:10Z 2019-06-04T19:30:23Z "Example:
I had a picture and tried to set it up as site icon. I cropped this image and now I have `cropped-image.png` variant of this image 512 x 512 px. Then I tried other images and in the end I wanted to go with the first one. But when I selected this cropped image, I had to crop it once again even if right dimensions. So, now there is another `cropped-cropped-image.png` image in media library and it does not make sense...
Also images for site icons should be somehow marked (as for header images in Customizer). How can I find my cropped images for site icon in media library when trying to set up site icon?" pavelevap
Future Releases 30277 Split up Customizer JS into separate files and remove self-booting jQuery.ready call Customize 3.4 normal normal Future Release enhancement new 2014-11-06T20:11:45Z 2018-06-13T16:28:06Z "The `customize-controls.js` file is huge and is named incorrectly now with #28709 and the fleshed-out models for Panels and Sections. The file should be broken up into `customize-sections.js`, `customize-panels.js`, and `customize-utils.js`. The last of which should include the private function exposed as public methods off of `wp.customize.utils`. This may also include the `wp.customize.init()` mentioned in #29071. We need to stop booting the Customizer inside of these JS libraries with a direct `jQuery.ready` call, and instead let the including page invoke that. This is critical for code reusability and for unit testing. For instance, the `customize.php` page could do in the footer:
{{{#!php
}}}
For `wp.customize.utils`, see existing patch at: https://github.com/xwp/wordpress-develop/pull/47" westonruter
Future Releases 34233 There is not a body class filter within the customizer. Customize 3.4 normal normal Future Release enhancement new 2015-10-09T16:23:40Z 2019-12-11T06:58:49Z "I'm hoping for a way to filter the body classes for the customizer panel.
https://core.trac.wordpress.org/browser/trunk/src/wp-admin/customize.php#L112
My particular use: I happen to have some custom controls on my widgets. I'd like to style them differently for superadmins versus other users. The rest of my application handles this as a body class, and does so in pure php via filtering.
I know that's a pretty specific use, but I do find it surprising that there's not a filter here, given how useful it is in wp-admin and the front end.
If it were to mimic admin body classes, where the classes are a new string, it would look something like
{{{
$customizer_body_classes = apply_filters( 'customizer_body_classes', '' );
?>
"">
}}}
I happen to prefer the front-end treatment, where existing classes are passed in as an array. In that case it would look more like
{{{
$classes = array_map( 'sanitize_html_class', $classes );
$classes = apply_filters( 'customizer_body_classes', $classes );
array_unique( $classes );
$classes_str = implode( ' ', $classes );
"">
}}}
I see some objections to a similar ticket here: #32623
But my request is slightly different because I'm not advocating that we re-use the admin_body_class fliter. Rather, I'm suggesting a new filter just for the customizer body class.
This is my first ticket! I would be happy to attempt to make it my first patch as well if there is traction for this enhancement." scofennell@…
Future Releases 29948 Use contextual controls (active_callback) API for conditionally-displayed core contextual controls Customize 4.0 lowest normal Future Release enhancement new 2014-10-13T18:18:28Z 2017-02-20T18:33:50Z See `wp-admin/js/customize-controls.js`, near the bottom. Rather than doing some unstructured JS to show/hide controls based on the values of other settings, this should use custom callbacks for the active_callback argument when adding the control (in php). celloexpressions
Future Releases 39614 Video header: Support free formats like .webm/vp8 and .ogv/theora Customize 4.7.1 normal normal Awaiting Review enhancement new 2017-01-17T16:15:52Z 2017-03-13T00:51:54Z It seems like the theme do not support free formats like webm or ogv. This concerns me as the web should use open standards and not closed ones. Content wise, WordPress supports the use of both mp4 and webm to provide broader support of browsers and it seems like the same practice should be applied here. As I'm not a great programmer I will just create this ticket as a suggestion. fnadde42
Future Releases 39681 Add RGBA to Customizer color picker Customize normal normal Future Release feature request new 2017-01-24T18:39:25Z 2019-02-08T17:15:54Z "It would be helpful to provide a UI for changing color opacity in the Customizer's color picker.
Some prior discussion about supporting RGBA in Iris here: https://github.com/Automattic/Iris/issues/13
See #21059" melchoyce
Future Releases 46629 Allow replacing placeholders in starter content posts/pages content Customize 4.7 normal normal Future Release feature request new 2019-03-24T21:43:51Z 2019-06-12T18:32:59Z The ability to create posts/pages doesn't really offer a whole lot of use out the gate unless a theme uses hardcoded urls for images in the content. It would be a great improvement if the same handling for placeholders in menus/theme_mods/options could be applied in context of posts/pages content. timph
Future Releases 38900 Customize: Add REST API endpoints for changesets Customize normal normal Future Release feature request assigned 2016-11-22T04:54:47Z 2020-11-06T13:51:48Z "In WordPress 4.7, the `customize_changeset` post type was introduce to persistently store the `customized` state until the staged changes are published (see #30937). In 4.7 the changesets were managed using the same `customzie_save` Admin Ajax request that has always been used to send customizer changes to WordPress. However, changesets are designed so that they needn't be used in the current “Customizer” app at all. A `customize_changeset` post can be created by any means (such as via WP-CLI) and as long as the HTTP request includes the `customize_changeset_uuid` query parameter, the changes stored within the changeset will be applied to preview in the response. As such, changesets for headless sites and apps consuming the REST API to also make use of WordPress's framework for previewing changes.
In addition to an app being able to preview changes in read requests to the REST API, changesets must also be able to be written via the REST API. This is also relevant to creating new changesets for previewing changes on a site's frontend (frontend editing).
The Customize Snapshots has some initial read-only endpoints for the REST API: https://github.com/xwp/wp-customize-snapshots/pull/63
It did not yet implement support for writing changes: https://github.com/xwp/wp-customize-snapshots/issues/64
A few points about what how the changeset endpoints could behave:
- Allow changesets posts to be created and updated, ensuring that `content` is in the proper format as an object mapping setting IDs to setting params. The `content` could be the decoded contents of the `post_content`.
- Prevent editing of `slug`, since the UUID should never change.
- Allow making changes to the `content` via `PATCH` method updates.
- Use the UUID (`post_name`) of the `customize_changeset` posts as the resource IDs as opposed to the underlying post ID. We really don't need regular post IDs since snapshots have UUIDs. Really a random `PUT` request could be made to create a snapshot if it just supplies a proper UUID.
- Let the endpoint be `/changesets` as opposed to `/customize-changesets`.
Ideally the `customize_save` Ajax requests initiated by `wp.customize.previewer.save()` and `wp.customize.requestChangesetUpdate()` could both make use of the changesets endpoints, replacing the use of the `customize_save` Admin Ajax request.
Updates to a changeset should be invoking `WP_Customize_Manager::save_changeset_post()` to apply the changes to the post.
Feature plugin repo: https://github.com/WP-API/wp-api-customize-endpoints" westonruter
Future Releases 42644 Customize: Add rich text control for managing tagline and new footer credit theme support Customize 4.8 normal normal Future Release feature request new 2017-11-20T19:47:50Z 2019-01-09T00:15:08Z "In #35243 we extended the Text widget to add TinyMCE. This depended on #35760 which introduced the `wp.editor.initialize()` API for dynamically-instantiating TinyMCE editors. Similarly in #41897 we introduced a Code Editor control which leveraged the `wp.codeEditor.initialize()` API introduced in #12423. It would seem that there should similarly be a rich text control available in the Customizer.
The rich text control could be used to manage the site's tagline.
This rich text control could also be leveraged by themes to manage a site's footer credits; the control could appear in the Site Identity section. Instead of “Powered by WordPress” being hard-coded into the theme's footer, it could instead be the default value for a `footer_credit` option. This would then allow a user to easily add additional site credits and copyright information to the footer of their site, without having to modify the theme template to do so. WordPress.com has a dropdown control with preset options for this “powered by” text and then a final option to hide for business plans. There could also be a “custom” option which could then reveal a footer credit rich text input where a user could supply links and other content allowed by the Text widget. Naturally the bundled core themes in WordPress.org could make this available by default without requiring a business plan.
A new `footer_credit` theme support could be added support added to Twenty Seventeen to take advantage of this new functionality. Previewing the change to the footer text should be done with selective refresh.
The rich text control could also be used in themes for managing other parts of the template, like business hours appearing in the header, without having to add a new widget sidebar.
Editor should only initialize once the control's containing section is expanded, as was done with the Code Editor control. " westonruter
Future Releases 39752 Customize: add a post editing flow Customize normal normal Future Release feature request new 2017-01-31T20:09:14Z 2020-10-11T15:47:50Z "The Customizer has always prevented following any non-frontend links in the preview, which has disabled post links provided by `edit_post_link()` from working. This was worked around in #38648 by no-op'ing the edit links.
One approach to solving this problem would be to bring post editing into the Customizer, which has been explored: https://github.com/xwp/wp-customize-posts
Another approach would be:
1. Navigate to the appropriate edit post screen when an `edit_post_link()` is clicked on
2. Before 1), save a Customize changeset if the state is unsaved
3. Provide a UI on the edit posts screen to return to the Customizer after editing is complete
4. When returning to the Customizer, restore the changeset stored in 2) if one was needed.
This would solve the problems of there being no way to edit posts from the Customizer, while not trying to stuff a (duplicate) post editing UI into a space that is not well-suited to it.
This could also help to editing posts created in nav menus #38002" mattwiebe
Future Releases 21666 Customizer Revisions (previously reset/undo/revert) melchoyce Customize 3.4.2 normal normal Future Release feature request assigned 2012-08-23T10:09:49Z 2021-05-24T14:32:56Z "It would be useful to be able to reset the settings to the defaults as specified in the add_setting() class method when setting up each setting.
These could be reset on a section by section basis and/or for ALL settings." dgwyer
Future Releases 53688 add super admin feature to help developer Customize normal major Awaiting Review feature request new 2021-07-19T06:32:02Z 2021-07-19T08:09:13Z "hello wordpress team .
i am a developer from nepal . i use to manage different company websites . Many of my clients ask admin when i provide them admin they damage website because they are not tech savvy . sometime they make error white they try to change some data using theme editor . so i request to make one use like super admin or developer which we have feature to edit / download . delete theme and plugins but super admin have to give access to administrator user access to edit anything functionally . admin user can add user and remove user at their level but cant access to theme and plugin so it will help developers to save their time of solving bugs create by clients .
we can disable theme edit and plugin edit from wp-config file but if we want to add new plugin we should upload it using ftp and we have to save that file in our pc so it will be more time consuming .
i hope you have understand my issue and make this feature as soon as possible . thank you . " janakkafle
Future Releases 30181 Add more Underscore.js array methods to wp.customize.Values and re-use _ for Customizer JS methods Customize 3.4 lowest normal Future Release task (blessed) new 2014-10-29T18:53:41Z 2017-03-14T17:02:13Z "Now that the Customizer explicitly uses Underscores.js (#26061), we should re-use Underscore.js as much as possible to eliminate duplicated logic, and to flesh out our Customizer models to have an API consistent with Backbone models.
This depends on having QUnit tests (#28579)." westonruter
Future Releases 40278 Customizer: Introduce theme uploading Customize 4.9 normal normal Future Release task (blessed) new 2017-03-27T18:12:04Z 2020-11-22T16:01:06Z "This is an offshoot of #37661. Please note: this ticket only addresses uploading themes to the Customizer. It does not touch on browsing and discovering new themes.
Theme switching in the Customizer was introduced in 4.2. Within the Customizer, you can preview any theme you currently have installed on your site. This feature would allow you to upload new themes directly from the Customizer, so you can preview them immediately without having to jump back into your themes admin screen.
Additionally, this introduces a new header for the Themes section, which was initially mocked up in #21666. This header will hopefully clarify some of the confusion between going in and out of the Themes section, by adapting the back arrow the other Customizer panels use.
See mockups for specific details and interactions." melchoyce
Future Releases 43664 $wpdb->get_results fails in specific cases with non-latin charaters in where clause Database 4.9.4 normal normal Awaiting Review defect (bug) new 2018-03-30T08:37:47Z 2018-04-08T19:09:08Z "Let's say we have user with display name 'Алексей';
{{{$wpdb->get_results(""SELECT user_login FROM $wpdb->users where `display_name`='Алексей' "", ARRAY_A);}}}
executes normally
{{{$wpdb->get_results(""SELECT user_login AS 'russian person' FROM $wpdb->users where `display_name`='Алексей' "", ARRAY_A);}}}
executes normally as well
but
{{{$wpdb->get_results(""SELECT user_login AS 'person from Russia' FROM $wpdb->users where `display_name`='Алексей' "", ARRAY_A);}}}
returns empty array and results in error:
[table Russia.doesn't exist]
SHOW FULL COLUMNS FROM `Russia`
That means 'from' in 'person from Russia' somehow gets in sql
It's an obscure enough situation, but might signify that something is wrong with wpdb query handling" altert
Future Releases 39811 Bug maybe_unserialize() broke mysql data. Database 4.7.2 normal normal Awaiting Review defect (bug) new 2017-02-08T13:53:06Z 2017-02-20T06:34:57Z "I have an issue what is realated to maybe_unserialize() function.
Example:
When someone made MySQL export or backup and you want that data to import in database again, widgets, some plugin setup, some template setup, particular WPBakery Visual Composer or similar visual editors lost it's setup.
To get all work well I change function into this:
{{{
function maybe_unserialize( $original ) {
if ( is_serialized( $original ) ) {
$fixed = preg_replace_callback(
'!(?<=^|;)s:(\d+)(?=:""(.*?)"";(?:}|a:|s:|b:|i:|o:|N;))!s',
'serialize_fix_callback',
$original );
return @unserialize( $fixed );
}
return $original;
}
function serialize_fix_callback($match) { return 's:' . strlen($match[2]); }
}}}
-wit this code I get all data to work well but I'm unable to install new plugins or made any kind of update.
What to do with it, how to fix this problem and can you made some update to this code or add some solution to not happen this problems?
Here is also my StackOwerflow question: http://wordpress.stackexchange.com/q/255591/82023
Thanks!" ivijanstefan
Future Releases 60037 Differentiate between minimum required MySQL and MariaDB versions Database normal normal Future Release defect (bug) new 2023-12-08T14:13:08Z 2024-02-16T23:23:14Z "Currently, there is only [https://core.trac.wordpress.org/browser/tags/6.4.1/src/wp-includes/version.php#L47 one minimum required version defined] and checked against for database software when determining if a server is capable of installing and running WordPress. It's currently set at `5.0`, though that will hopefully be updated to `5.5` in WordPress 6.5 (see #60036).
This has worked over the past 12+ years without issue, even though WordPress supports running either MySQL or MariaDB. This is due to the fact that MariaDB versions previously followed MySQL's numbering scheme with each release representing a fully-functional drop-in replacement.
However, in 2012 this changed when MariaDB jumped from version `5.5` to `10.0`, where they have continued to increment from (the current LTS version is `10.11`, and current short term support version is `11.2`).
In the near future when support for any version of MariaDB > 5.5 is dropped, this check will become useless, because MySQL 5.7, 8.0, 8.1, etc. will always be lower than 10.0, 10.11, 11.0, etc.
An additional angle to this problem is [https://make.wordpress.org/core/2023/04/19/status-update-on-the-sqlite-project/ a recent proposal to add support for SQLite]. The most recent version of that software is `3.44.2`. SQLite is not a drop-in replacement in the same way MariaDB is. But with that and other challenges to adding support aside, no versions of SQLite would work in WordPress today (even with the minimum currently set at `5.0`).
The relevant code should be updated to ensure that the correct minimum version for the current database type is used when checking a server is properly equipped to run WordPress.
Follow up to #60036." desrosj
Future Releases 52496 Improve MySQL 8.0 support Database 5.4 normal normal Future Release defect (bug) new 2021-02-11T07:11:12Z 2024-02-05T20:45:49Z "While setting up the GH Action for the WP Importer plugin which runs the plugin integration tests (using the WP Core test framework) against various PHP/MySQL/WP combinations, I noticed a number of PHP/MySQL 8.0 combinations which error out during the running of the WP Core test bootstrap with errors which seem to indicate underlying incompatibilities with MySQL 8.0.
Relevant files in the Importer plugin setting up the test environment:
* https://github.com/WordPress/wordpress-importer/blob/master/phpunit/install.sh
* https://github.com/WordPress/wordpress-importer/blob/master/phpunit/bootstrap.php
Test run showing the errors: https://github.com/WordPress/wordpress-importer/actions/runs/556887133
== Errors reported:
PHP 5.6 / MySQL 8.0 / WP 5.5 and latest (5.6)
(Error line numbers are based on latest)
{{{
PHP Warning: mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /tmp/wordpress/wp-includes/wp-db.php on line 1653
PHP Warning: mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in /tmp/wordpress/wp-includes/wp-db.php on line 1653
PHP Warning: mysql_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /tmp/wordpress/wp-includes/wp-db.php on line 1685
PHP Warning: mysql_connect(): Server sent charset unknown to the client. Please, report to the developers in /tmp/wordpress/wp-includes/wp-db.php on line 1685
}}}
PHP 7.0 - 7.3 / MySQL 8.0 / WP latest (5.6)
{{{
PHP Warning: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in /tmp/wordpress/wp-includes/wp-db.php on line 1653
PHP Warning: mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client in /tmp/wordpress/wp-includes/wp-db.php on line 1653
}}}
**Note:** ''**with the exact same setup, the PHP 7.4/8.0 - MySQL 8.0 - WP 5.6 test runs will pass.**''
== Investigating needed
I haven't dug into the code. Reporting it here for further investigation.
I imagine that either the PHP/MySQL version check could be adjusted to indicate that MySQL 8.0 is only supported when running on PHP 7.4 or higher.
Alternatively, the underlying issues will need to be solved.
I also wonder if the WP Core tests in CI are being run against enough PHP/MySQL combinations, as I would imagine that these issues could have been discovered earlier if the above problem combinations would haved been used in WP Core CI.
Related: #49344 #51740" jrf
Future Releases 60503 MySQL VALUES function deprecated in MySQL 8 Database normal normal Awaiting Review defect (bug) new 2024-02-12T12:19:23Z 2024-02-12T22:19:14Z "e.g. for add_option SQL query (but issue happens in other places too, but not many)
{{{#!php
""INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)""
}}}
we get the SQL logs spammed with:
>'VALUES function' is deprecated and will be removed in a future release. Please use an alias (INSERT INTO ... VALUES (...) AS alias) and replace VALUES(col) in the ON DUPLICATE KEY UPDATE clause with alias.col instead
Since WP 6.4 minimum SQL is 8+, so this deprecated syntax isn't necessary anymore, since the new syntax is supported in all supported SQL versions.
This should have been fixed in WP 6.4, but at least now with WP 6.5 release, as it's easy to fix and avoid having a performance penalty from the deprecation notice handling/reporting.
" kkmuffme
Future Releases 41278 SQL_CALC_FOUND_ROWS slow query Database 4.8 normal normal Awaiting Review defect (bug) new 2017-07-09T17:12:10Z 2017-07-19T18:41:46Z "In the logs of slow queries when searching for steel, the following types of logs appear:
{{{
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1
AND (((wp_posts.post_title
LIKE '%donald%') OR (wp_posts.post_excerpt
LIKE '%donald%') OR (wp_posts.post_content
LIKE ‘%donald%’)) AND ((wp_posts.post_title
LIKE '%trump%') OR (wp_posts.post_excerpt
LIKE ‘%trump%’) OR (wp_posts.post_content
LIKE '%trump%')))
AND wp_posts.post_type
IN ('post', 'page', 'attachment')
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'acf-disabled'
OR wp_posts.post_author = 186
AND wp_posts.post_status = 'private')
ORDER BY (CASE WHEN wp_posts.post_title
LIKE ‘%donald trump%' THEN 1 WHEN wp_posts.post_title
LIKE ‘%donald%’ AND wp_posts.post_title
LIKE '%trump%' THEN 2 WHEN wp_posts.post_title
LIKE '%donald%' OR wp_posts.post_title
LIKE '%trump%' THEN 3 WHEN wp_posts.post_excerpt
LIKE '%donald trump%' THEN 4 WHEN wp_posts.post_content
LIKE '%donald trump%' THEN 5 ELSE 6 END),
wp_posts.post_date DESC LIMIT 0, 30;
}}}
How can I eliminate it?" lubimow
Future Releases 30795 Upgrade bug affecting indexing Database 2.1 normal normal Awaiting Review defect (bug) reopened 2014-12-20T16:29:49Z 2019-03-22T13:46:01Z "Every time WordPress is updated I was getting an entry in my error_log as follows:
WordPress database error Duplicate key name 'type_status_date' for query ALTER TABLE wp_posts ADD KEY type_status_date (post_type,post_status,post_date,ID) made by wp_upgrade, make_db_current_silent, dbDelta
After some heavy back tracking through the code, this is coming from a mismatch between the reported indexing of my database and what WordPress is expecting. in particular to the 'post_status' part. It seems WordPress expects the 'SubPart to be NULL, only in my main site is was '1'.
So, my index was reporting as:
KEY type_status_date (post_type,post_status(1),post_date,ID)
Rather than:
KEY type_status_date (post_type,post_status,post_date,ID)
This means the upgrade code is called on every update and fails on every update also.
I've managed to force through a fixed on my own site by dropping the index and recreating it using SQL in PHPMyAdmin.
Googling for the above error message it would seem I'm not the only one affected." MattyRob
Future Releases 53320 Why delete_metadata and update_metadata slow performance? Database normal normal Awaiting Review defect (bug) new 2021-06-02T11:11:06Z 2021-06-02T11:11:06Z "I’ve been doing some investigating on the overall performance of a local WordPress with WooCommerce build and something doesn’t seem to be making sense, I’m not sure if I’m missing something or if it’s an oversight in the development.
WooCommerce has ways of checking if meta keys and values need to be updated, for example update_post_meta in class-wc-order-data-store-cpt.php
The plugin also has a method update_or_delete_post_meta for handling the meta of posts integration with the WordPress Core.
Here’s where the confusion comes in,
1. [delete_metadata](https://github.com/WordPress/WordPress/blob/21cf92796123e98bcc9cc7981d80472977673fab/wp-includes/meta.php#L335)
Why does delete_metadata by default query to see if it exists before running the DELETE operation? I understand the DELETE operation is expensive but in this instance, we know the keys that are going to be removed. I understand we could hook into the delete_{$meta_type}_metadata
filter, return false and run the query ourselves but this doesn’t future proof things. I propose an additional filter and/or argument that allows you to bypass the initial lookup.
2. [update_metadata](https://github.com/WordPress/WordPress/blob/21cf92796123e98bcc9cc7981d80472977673fab/wp-includes/meta.php#L159)
There is a similar problem here too. [Every update queries the database](https://github.com/WordPress/WordPress/blob/21cf92796123e98bcc9cc7981d80472977673fab/wp-includes/meta.php#L220) to see if a row already exists and if so, then use the add_metadata. If we know the meta key 100% exists, why go to the expense of then querying the database again? Once again, I appreciate this is added as a fail-safe to ensure the data gets stored but this leaves the developer with no “official” way of updating the meta without having to do a lookup first. Again, we can hook into update_{$meta_type}_metadata but this has the same problem as before.. breaking future changes. I propose the same as above for this method too.
Has anybody else experienced this or found any solutions to excessive SQL lookups (other than relying on cache)?" cjj25
Future Releases 58133 WordPress database error Illegal mix of collations Database 6.1.1 normal major Awaiting Review defect (bug) reopened 2023-04-15T00:27:53Z 2023-04-24T14:31:43Z "Please see attached WordPress database error. I have run query in local database to check if those post exists in wp_posts table. But they do not exist anywhere in database, site-content and codebase.
Site Info
PHP version 8.0.25 (Supports 64bit values)
Extension mysqli
Server version 5.7.12
Database charset utf8mb4
Database collation utf8mb4_unicode_520_ci
" varinupadhyay
Future Releases 41302 WordPress not stopping queries which have reached limit and preventing users to load WordPress until query times out Database 4.8 normal normal Awaiting Review defect (bug) new 2017-07-13T07:28:09Z 2017-07-14T07:58:38Z "[[Image(Pasted image at 2017_07_13 10_14 AM.png)]]
I have problem with WordPress mysql `max_questions=600, max_updates=600` limit
{{{
User 'id1561843_wp_ac6601cd835d82e22d89d11a3ea228a0' has exceeded the 'max_queries_per_hour' resource (current value: 500)
}}}
After
{{{
wp-db.php:830
}}}
comes timeout.
I suspect that that after limit is reached
{{{
public function set_charset( $dbh, $charset = null, $collate = null ) {
}}}
throws and error.
After that WordPress gets stuck on loading something. And you cannot make any other queries on other browser windows.
Proper script should just kill the query after error that limit has been exceeded." juslintek
Future Releases 36924 dbDelta(): Support more than one whitespace between field name and its type definition Database 4.5.2 normal normal Awaiting Review defect (bug) new 2016-05-23T22:42:46Z 2018-08-10T00:39:26Z "dbDelta() fails to remove multiple spaces between field name and field type definition in ALTER / CREATE statements. In result some table definitions may lead to constant ALTER statements to be executed which may easily crash MySQL server.
Compare:
== Correct
{{{#!php
$sql = ""CREATE TABLE some_table (
id bigint(20) NOT NULL KEY AUTO_INCREMENT,
test varchar(100) NOT NULL,
);"";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}}}
vs
== Wrong, due to multiple spaces between 'test' and 'varchar' ALTER query is executed
{{{#!php
$sql = ""CREATE TABLE some_table (
id bigint(20) NOT NULL KEY AUTO_INCREMENT,
test varchar(100) NOT NULL,
);"";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}}}
== Possible fix:
- in dbDelta() call trim() on $tablefield->Type,
- or remove extra spaces during preg_match:
replace:
{{{#!php
preg_match(""|"".$tablefield->Field."" ([^ ]*( unsigned)?)|i"", $cfields[strtolower($tablefield->Field)], $matches);
}}}
with:
{{{#!php
preg_match(""|"".$tablefield->Field.""\s+([^ ]*( unsigned)?)|i"", $cfields[strtolower($tablefield->Field)], $matches);
}}}" matt_fw
Future Releases 41469 test_charset_switched_to_utf8() is not tested on Travis CI Database 4.7.1 normal normal Awaiting Review defect (bug) new 2017-07-28T00:26:11Z 2017-07-28T02:09:13Z "The `Tests_DB::test_charset_switched_to_utf8()` test (introduced in #37982) is skipped on Travis, because the test gets skipped when the environment's database driver supports utf8mb4. This makes the test useless.
What sort of environment does not support utf8mb4? Presumably an older MySQL version.
We should look into adding a build to Travis with a specific environment that allows this test to run.
Related: #30462" johnbillion
Future Releases 41944 Add %u support to wpdb->prepare Database 4.8.2 normal normal Awaiting Review enhancement new 2017-09-21T13:30:31Z 2017-09-21T15:30:20Z "MySQL unsigned int: 4bn [[BR]]
PHP %d signed int: 2bn[[BR]]
[[BR]]
Maybe the standard should be %u not %d or at the very least support both while internally using %u for all key lookups?[[BR]]
[[BR]]
Especially since much of the WP Core specifically sets ID fields as bigint unsigned not null auto_increment.[[BR]]
[[BR]]
If a site never has more than 2bn records, and MOST will NEVER get that big, it is a non-issue but shouldn't the standard be consistent between the DB engine and the language processor (PHP)?" charlestonsw
Future Releases 38036 Add support for the utf8mb4_0900_ai_ci collation Database normal normal Future Release enhancement new 2016-09-13T10:11:38Z 2023-04-05T10:24:05Z "MySQL 8.0 adds the `utf8mb4_0900_ai_ci` collation, based on the current Unicode Collation algorithm. We should use it when possible.
Note that the version check will need to be a little more complex than the `utf8mb4_520` check - MariaDB 10.x doesn't support `utf8mb4_0900_ai_ci`.
" pento
Future Releases 38760 Capture result size in bytes when SAVEQUERIES is true Database normal normal Future Release enhancement new 2016-11-11T19:49:44Z 2017-10-03T10:06:01Z Inside of `WP_DB::_do_query()`, it would be neat if `$this->result` was measured as size in bytes, so debugging tools had a better sense of how much data was running over the network. danielbachhuber
Future Releases 39748 Function to insert or update DB value Database normal normal Awaiting Review enhancement new 2017-01-31T10:00:01Z 2017-10-29T17:06:57Z "Hello.
I have been searching for long and couldnt found a good solution to the simple problem:
lets say,in my plugin, I create a new table.
Then I want to have a function, that updates a row in table, which's column (named EventId) equals i.e. 734 (if such row not exists, then create it).
for that, I use my custom-created function:
{{{#!php
function UPDATE_OR_INSERT($tablename, $NewArray, $WhereArray){ global $wpdb; $arrayNames= array_keys($WhereArray);
//convert array to STRING
$o=''; $i=1; foreach ($WhereArray as $key=>$value){ $o .= $key . ' = \''. $value .'\''; if ($i != count($WhereArray)) { $o .=' AND '; $i++;} }
//check if already exist
$CheckIfExists = $wpdb->get_var(""SELECT "".$arrayNames[0]."" FROM "".$tablename."" WHERE "".$o);
if (!empty($CheckIfExists)) { return $wpdb->update($tablename, $NewArray, $WhereArray );}
else { return $wpdb->insert($tablename, array_merge($NewArray, $WhereArray) ); }
}
}}}
//usage:
{{{
UPDATE_OR_INSERT('my_table', array('new_page_content'=>'blabla'), array('EventId'=>734));
}}}
it's good if there was built-in function that replaces this custom method" tazotodua
Future Releases 6492 Guids No Longer Have Permalink Format Database 2.5 normal normal Future Release enhancement reopened 2008-03-31T06:03:30Z 2019-08-30T01:26:43Z "When you create a new post using WordPress 2.5 the GUID is created in the http://siteurl/?p= format even when permalinks are enabled. This is because the _transition_post_status function in /wp-includes/post.php now checks if the guid is empty (which it never is) before resetting/creating it with the proper permalink structure. Line 2841 should be removed.
" brianwhite
Future Releases 46565 Mixed engine in tables, could bring to major WP failure! Also there is a small fix that could avoid that. Database 4.9.8 normal normal Awaiting Review enhancement new 2019-03-19T18:49:44Z 2019-03-20T07:40:01Z "''First of all ... after MySQL decided to make InnoDB the default engine ... many of us have mixed database with both InnoDB and MyisAM labeled tables.
If a plugin add a new table now (it happened to us with both WPML and Woocommerce) the new table will be mostly InnoDB but old table could be MyIsAM.
That can bring to JOIN failures, that in our case made us lost primary key or foreign key links, but will definitely cause also tables **permanent locks** (due to plugin/software crash), and that took finally to the main problem:
**data (rows) inserted with ID = 0**
THAT alone should be advertised a lot around plugin developers, that should check if their plugin tables are equal to the current-default-engine and if they are not, they should:
""alter TABLENAME engine = current-default-engine"".''
**Straight to the point:**
Data with ID = 0 actually can make crash WordPress because of this:
wp-includes/post.php:4867
Please note that this code will make WordPress go into a recursive infinite loop (causing ""fatal error memory exhausted"") if the ID = 0.
I know that ID = 0 is an abnormal situation, but believe me, if having locked tables makes this happen, you want to add a handbreak to that.
**This is a small fix, but you surely can do better:**
{{{
// Start the search by looking at immediate children.
if ( isset( $children[ $page_id ] ) ) {
// Always start at the end of the stack in order to preserve original `$pages` order.
$to_look = array_reverse( $children[ $page_id ] );
while ( $to_look ) {
$p = array_pop( $to_look );
if (!array_key_exists($p->ID,$pidx)) {
$pidx[$p->ID]=true;
$page_list[] = $p;
if ( isset( $children[ $p->ID ] ) ) {
foreach ( array_reverse( $children[ $p->ID ] ) as $child ) {
// Append to the `$to_look` stack to descend the tree.
$to_look[] = $child;
}
}
}
}
}
}}}
" Nokao
Future Releases 41054 Use sargable date filtering where possible Database normal normal Awaiting Review enhancement new 2017-06-15T07:54:13Z 2017-06-15T12:13:22Z "Currently, many queries generated by WP use post_date in a non-sargable fashion, namely by filtering based on the output of a MySQL function taking post_date as a parameter.
These can be easily rewritten to use the index on post_date without, to my eyes, breaking anything to boost performance.
Here's an example:
{{{
MariaDB [blog]> EXPLAIN SELECT * FROM blog.wp_posts WHERE YEAR(post_date) = 2017;
+------+-------------+----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | wp_posts | ALL | NULL | NULL | NULL | NULL | 2684 | Using where |
+------+-------------+----------+------+---------------+------+---------+------+------+-------------+
}}}
vs
{{{
MariaDB [blog]> EXPLAIN SELECT * FROM blog.wp_posts WHERE post_date >= ""2017-01-01"" AND post_date < ""2018-01-01"";
+------+-------------+----------+-------+---------------+-----------+---------+------+------+-----------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+-------+---------------+-----------+---------+------+------+-----------------------+
| 1 | SIMPLE | wp_posts | range | post_date | post_date | 8 | NULL | 262 | Using index condition |
+------+-------------+----------+-------+---------------+-----------+---------+------+------+-----------------------+
}}}
This optimization can be applied to any comparison between post_date and an already known parameter (from query_var). The only time it wouldn't be possible would be when comparing a portion of the date of two different posts (e.g. WHERE MONTH(x.post_date) == MONTH(y.post_date))
It's not much, but it's something. " ComputerGuru
Future Releases 40150 VARCHAR/TEXT inefficiencies Database 4.7.3 normal normal Awaiting Review enhancement new 2017-03-14T00:45:10Z 2017-03-14T00:45:10Z "From conversation with Matty Cohen, a selection of structural improvement suggestions, for performance and future-proofing. Note that these aspects have recently been applied to WooCommerce already, resulting in a much optimised/modernised default table structure.
Current some of the TEXT and VARCHAR use in WP Core appear to be based on old information - that is, restrictions and behaviour from MySQL versions long ago. This has consequences for performance.
First, VARCHAR.
In MySQL 4.0, VARCHAR used to be restricted to 255 max. In MySQL 4.1 character sets such as UTF8 were introduced and MySQL 5.1 supports VARCHARs up to 64K-1 in byte length. Thus, any occurrence of VARCHAR(255) indicates some old style logic that needs to be reviewed.
Why not just set the maximum length possible? Well...
A VARCHAR is subject to the character set it's in, for UTF8 this means either 3 or 4 (utf8mb4) bytes per character can be used. So if one specifies VARCHAR(50) CHARSET utf8mb4, the actual byte length of the stored string can be up to 200 bytes.
In stored row format, MySQL uses 1 byte for VARCHAR length when possible (depending on the column definition), and up to 2 bytes if necessary. So, specifying VARCHAR(255) unnecessarily means that the server has to use a 2 byte length in the stored row.
This may be viewed as nitpicking in the margin, however storage efficiency affects the number of rows that can fit on a data page and thus the amount of I/O required to manage a certain amount of rows. It all adds up, so having little unnecessary inefficiencies will cost - particularly for larger sites.
Best practice is to set VARCHAR to the maximum necessary, not the maximum possible - otherwise, as per the above, the maximum possible is about 16000 for utf8mb4, not 255 - and nobody would propose setting it to 16000, would they? But it's not much different, in stored row space a VARCHAR(255) requires a 2 byte length indicator just like VARCHAR(16000) would.
So please review VARCHAR columns and set their definition to the maximum actually necessary, this is very unlikely to come out as 255. If 255, why not 300? Or rather 200? Or 60? Setting a proper number indicates that thought and data analysis has gone into the design. 255 looks sloppy.
On to TEXT.
TEXT (and LONGTEXT) columns are handled different in MySQL/MariaDB. First, a recap of some facts related to TEXT columns.
The db server often needs to create a temporary table while processing a query. MEMORY tables cannot contain TEXT type columns, thus the temporary table created will be a disk-based one. Admittedly this will likely remain in the disk cache and never actually touch a disk, however it goes through file I/O functions and thus causes overhead - unnecessarily. Queries will be slower.
InnoDB can store a TEXT column on a separate page, and only retrieve it when necessary (this also means that using SELECT * is needlessly inefficient - it's almost always better to specify only the columns that are required - this also makes code maintenance easier).
A TEXT column can contain up to 64k-1 in byte length (4G for LONGTEXT). So essentially a TEXT column can store the same amount of data as a VARCHAR column (since MySQL 5.0), and we know that VARCHAR offers us benefits in terms of server behaviour. Thus, any instance of TEXT should be carefully reviewed and generally the outcome is to change to an appropriate VARCHAR.
Using LONGTEXT is ok, if necessary. If the amount of data is not going to exceed say 16KB character length, using LONGTEXT is not warranted and again VARCHAR (not TEXT) is the most suitable column type.
Applications don't need to care, so the db definition can be altered without any application impact.
Summary:
Particularly when combined with the best practice of not using SELECT *, using appropriately defined VARCHAR columns (rather than VARCHAR(255) or TEXT) can have a measurable and even significant performance impact on application environments. It is a worthwhile effort." arjenlentz
Future Releases 42703 WP_Query: Swap parsing date into own method Database normal normal Awaiting Review enhancement new 2017-11-26T17:32:44Z 2019-01-16T06:50:09Z "The WP_Query::get_posts also parses the date query.
This is modular enough to swap it to its own method at last.
A proof of concept has been made and all tests are still green.
Some details and todos:
- see https://github.com/ScreamingDev/wordpress-develop-1/commit/6bb681e8caf4df8ba4811690ee19f12ad1755371
- Check if the whole logic can be shifted to WP_Date_Query::get_sql
Hint: The long run is about enabling WordPress to support multiple tables (per ""post-type""). To achieve this some enhancements to the current wpdb and WP_Query class are needed. This issues covers a small bit of it by refurbishing the source." screamingdev
Future Releases 41281 attachment_url_to_postid results in very slow query joemcgill* Database 4.9 normal normal Awaiting Review enhancement accepted 2017-07-10T07:53:25Z 2021-04-30T13:17:51Z "`attachment_url_to_postid` throws query like this:
{{{
# wp-includes/media.php ll.3922
$sql = $wpdb->prepare(
""SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s"",
$path
);
}}}
But wp_postmeta table has index only of `meta_key`, this may cause file sort.
== Why this is problem ==
Let's assume that you have 20,000 posts and each post has 10 attachments in your WP news site.
MySQL filters rows with `meta_key` but still remain 200,000 possible rows.
This causes file sort.
`attachment_url_to_postid` is used not only in admin screen, but also in public area(e.g. AMP Plugin https://wordpress.org/plugins/amp/ ).
Now twitter changes URL for mobile device if AMP version is available.
So, MySQL CPU raises up to 100% by `attachment_url_to_postid` if site traffic is high,
== Solution ==
To avoid slow query, I suggest adding another index.
{{{
ALTER TABLE $wpdb->postmeta ADD INDEX meta_key_meta_value (meta_key(191), meta_value (64));
}}}" Takahashi_Fumiki
Future Releases 58694 Enhancement in wordpress Database API Database 6.2.2 normal normal Awaiting Review feature request reopened 2023-07-01T12:11:08Z 2023-08-30T17:51:17Z "Hi
im a wordpress developer and freelancer
i also do wordpress Database optimization for my customers and I have a very smart suggestion to optimize the database structure of Beloved WordPress!
issue: Keep in mind that every plugin and theme installed in WordPress will inject some data (options/post-metas/ etc) to the wpdb and when you remove them their data will remain (unused) inside user wp database with no clue or indication of what template or plugin the information was for!
My suggestion: you can simply add an extra Argument for the core functions for adding options or metas (update_option or update_post_meta/update_user_meta) this Arg will add that plugin or theme base name to the added option or meta added like this -> update_option(""myopt"", ""myvalue"", $autoload, ""wooslider"")
which the 4th arg is the name of my example plugin and its REQUIRED type ALSO the name of the plg/theme can be auto inserted from an PHP constant -> (define('WOODMART_CORE', __FILE__); )
NOTE: By using this new system, whenever a person wants to manually optimize the database, she/he can easily find out which information is not needed and quickly query and delete them, Also, the plugins that perform database cleaning are much easier and more efficient, fully automatically find out which plugins no longer exist and which information is related to them and can be deleted without any trouble!
See the pic plz...
https://mdezign.ir/wp-content/uploads/2023/07/aasdsadasdasd.jpg
Consider this as a Great New development in order to optimize and speed up all WordPress sites!
Thanks a lot.
" mdesignfa
Future Releases 32386 Draft's Last Modified date incorrect if it is Scheduled obenland Date/Time 4.2.2 normal normal Future Release defect (bug) assigned 2015-05-14T10:03:41Z 2020-10-07T16:59:10Z "Once a Draft is Scheduled, the date of it its most recent revision is not shown under the Date column at Posts > All Posts.
Instead, the Draft's scheduled publication date is shown in the Date column, alongside the label 'Last Modified'.
Steps to recreate:
1) Create and save a Draft
2) Set a scheduled publication date and time for the Draft
3) Save the Draft
4) Check the 'Date' column at Posts > All Posts
If you schedule a Draft for the future, for example, a Last Modified date from the future is shown under Date." lastnode
Future Releases 55953 Problemas com a hora universla no wordpress Date/Time 6.0 normal normal Awaiting Review defect (bug) new 2022-06-09T11:11:53Z 2022-06-13T11:42:11Z "Senhores,
Existe um ""DEFEITO"" no wordpress na parte de configuração na hora Universal contra Hora Local.
Após configurar corretamente a hora local do sistema o WordPress soma 3 horas a mais e influencia no sistema bem como nos Pedidos que são feitos no Woocommerce, onde os pedidos sai com a data e horário universal, isto não é certo sendo que tentei várias formas de corrigir como podem ver no link do fórum de suporte: https://wordpress.org/support/topic/como-resolver-problema-da-hora-universal/#post-15721421
Isso é muito grave, principalmente para nós do Brasil e precisa ser corrigido URGENTEMENTE" pageupsolutions
Future Releases 41011 get_calendar generates query with invalid date formats Date/Time normal normal Future Release defect (bug) new 2017-06-12T13:51:12Z 2020-09-22T05:31:12Z "Given a parameter like `?w=1400`, which is obviously not a week number, `get_calendar` will try to compute the date 9799 days into the year. It would make sense to check that `$w` is in a valid range, such as not greater than 53.
At the same time, `get_calendar` does not check that `$m` is a valid date, resulting in `$thisyear == '0'` and a query of `SELECT DATE_FORMAT((DATE_ADD('00101', INTERVAL 9799 DAY) ), '%m')`." andy
Future Releases 18146 Add user-level & front end timezone display flexibility according to a fixed time [GMT:0] Date/Time normal normal Future Release feature request assigned 2011-07-17T06:25:21Z 2023-05-30T04:01:59Z "Timezone can currently only be set on the blog level. This makes sure that the blog displays times in the timezone chosen by the blog's owner.
It would also make sense to add a timezone setting for registered users, so we can show times in their own timezone, or use that setting as a default for new blogs or other features in a multi-site setting." RanYanivHartstein
Future Releases 59340 """Open in new tab"" checkbox in hyperlink entry doesn't save" Editor 6.3 normal normal Awaiting Review defect (bug) new 2023-09-13T16:37:54Z 2023-09-29T15:48:45Z "When interfacing, the ""Open in new tab"" selection sometimes doesn't work. Rapidly entering the information on a slow internet connection should reproduce the bug.
It's probably tied to network information, where the ""Save"" button SHOULD send a delayed network transmission of the update. Instead, it drops the information.
This compounds as a worse problem with the new UI information, since it requires several clicks to confirm each hyperlink's present status.
The workaround is to wait 2-3 seconds after selecting the checkbox but before selecting ""Save"".
This most heavily affects power users and users with slow internet connections." phileossopher
Future Releases 55714 & stored as & for Post Title and Excerpt in Editor Editor normal normal Awaiting Review defect (bug) new 2022-05-12T11:50:36Z 2022-05-20T09:00:58Z "Hi,
When an Author/other user(who have Create post permission) creates a post and add a post title as `Hello & Welcome to WordPress` after save the post the post title is stored as `Hello & Welcome to WordPress` in DB. As this is stored like this it is showing same in the editor. This is happening with Excerpt also.
**NB: This is not happening with Admin user or if you are using Gutenberg Editor.**
Reproduce Steps:
1. Disable your gutenberg editor and enable classic editor.
2. Logged in as an Author.
3. Switch to a non block based theme. (skip if your theme is not block based)
4. Go to Post > Add New
5. Add Post Title, Excerpt as `Hello & Welcome to WordPress`
6. Save Post
7. You will see `Hello & Welcome to WordPress` as title
" kapilpaul
Future Releases 55839 6.0 Upgrade Does Not Keep Image Alignment Editor 6.0 normal major Awaiting Review defect (bug) new 2022-05-26T08:07:08Z 2023-08-28T16:24:33Z "Pages compiled with latest 6.0 version aligns images left on update if they are set to align center. Align right works, but it does not respect images set to align center.
When I update a page in 6.0 (even without changing anything), all images on that page that have alignment set to ""Center"" align left.
This is quite serious as it stops me from being able to edit a page without messing everything up." obviousinvestor
Future Releases 52565 A Scrollbar Appear in a right panel when editing a page or post Editor normal normal Future Release defect (bug) new 2021-02-18T07:41:31Z 2022-05-11T08:21:13Z "With WordPress 5.7 Beta 3, there is a scrollbar in right side panel when we add or edit any page or post.
The scrollbar appear only on Mozilla Browser. In Chrome Browser there is no scrollbar.
My Mozilla Browser version is 85.0.2" Pratik Jain
Future Releases 44310 Apostrophe and/or Hyphen in Titles Rendered as ’ and – When Added as Link in Editor Editor 4.9.6 normal normal Awaiting Review defect (bug) reopened 2018-06-05T19:08:28Z 2023-10-23T20:54:27Z "I searched but did not see this issue reported previously.
When an apostrophe and/or a hyphen is present in a blog post title or page title and those posts are added as links using the Insert Link option in the WordPress Editor, the apostrophe and hyphen are rendered as the following:
- An apostrophe in a title is rendered as ’ in the Link Text (see attached images)
- A hyphen (which is surrounded by spaces) in a title is rendered as – in the Link text (see attached images)
I have tested on a vanilla WordPress 4.9.6 install with no other plugins active both on live installs on two different servers and a local development server and can reproduce this consistently.
" midihead
Future Releases 41511 Attachment page URL not created correctly for image uploaded directly to library before being added to post Editor 4.8 normal normal Awaiting Review defect (bug) new 2017-08-01T10:11:55Z 2018-03-22T20:36:13Z "=== To replicate: ===
1. Visit Media ->Add New and upload a media file
2. Visit Posts ->Add New
3. Click Add Media
3. Select the media file previously uploaded and set Link To setting to Attachment Page
4. Publish the post
5. View post and click on image
=== What I expected: ===
To be taken to the attachment page for the image
=== What happened instead: ===
I got a Page not found error. Additionally the URL is formed as `http://SITE_URL/FILE_SLUG/` which is not the correct format for media attachment pages.
I went back to the editor, clicked the image and clicked the edit icon. The Link To setting now shows that I have a Custom URL set instead of Attachment Page.
Updating the setting to attachment page again changes the URL to `http://SITE_URL/YEAR/MONTH/POST_SLUG/FILE_SLUG/`
If I now update the post, I can click the image to view the attachment page.
=== Context: ===
Reported via the [http://en.forums.wordpress.com/topic/problems-with-images-and-attachment-page-custom-url-settings WordPress.com support forums], but I've confirmed it on a non-WordPress.com site as well." kokkieh
Future Releases 58113 Author and Date Blocks do no line up. Editor 6.2 normal normal Awaiting Review defect (bug) new 2023-04-10T22:08:53Z 2023-04-11T07:15:02Z "The Post Author Block and the Post Date Block do not line up. The Author Block has a margin below and the date block does not. I inserted both into a row block.
I made a hack correction by adding custom bottom-margin to the Date Block.
These should be designed to display on the same line without custom adjustments." cwebba1
Future Releases 58432 "BUG: Custom Core Block Variation details not updated in ""Settings Sidebar"" section" Editor normal major Awaiting Review defect (bug) new 2023-05-31T06:10:30Z 2023-06-13T16:31:52Z "**Issue:**
When adding a custom **core block variation**, the details ( title, icon, description ) are not updated in the **""Settings Sidebar""** section. Hence there is no way to distinguish between custom core block **variations** and core **blocks** once a block is added.
**How to reproduce:**
1. Add support for block variations to your existing theme.
{{{
function prefix_editor_assets() {
wp_enqueue_script(
'prefix-block-variations',
get_template_directory_uri() . '/assets/js/blocks/block-variations.js',
array( 'wp-blocks' )
);
}
add_action( 'enqueue_block_editor_assets', 'prefix_editor_assets' );
}}}
2. Create a custom **core block variation**
{{{
wp.blocks.registerBlockVariation(
'core/group',
{
name: 'card-group',
title: 'Card group',
description: 'A group with card styling',
label: 'Card group',
icon: 'wordpress',
attributes: {
className: 'card-group',
},
innerBlocks: [
[ 'core/heading', { content: '' } ],
[ 'core/paragraph', { content: '' } ],
]
}
);
}}}
3. Check inside editor for new core block variation.
4. Add new core block variation and check the siderbar with the block selected.
Attaching pic & screen recording of the issue as well.
Note: I used the following tutorial by **Carolina Nymark** to create the variation
https://fullsiteediting.com/lessons/block-variations/
" deepakvijayan
Future Releases 48989 Blocks properly not showing on mobile device Editor 5.3 normal normal Awaiting Review defect (bug) new 2019-12-15T12:43:55Z 2019-12-16T09:02:25Z Gutenberg Blocks properly not showing on mobile passoniate
Future Releases 58709 Bug 6.3 beta-3: Black screen when selecting blocks in List view outside the block editor viewport. Editor normal major Awaiting Review defect (bug) new 2023-07-04T06:06:04Z 2023-07-04T06:54:43Z "When using the List View in the block editor, if a block is not currently visible in the viewport of the editor, selecting that block from the List View results in a black screen.
Steps to Reproduce:
- Install WordPress **6.3 Beta-3**.
- Create a new post or page.
- Add multiple blocks, ensuring that some of them are not currently visible within the viewport of the block editor.
- Switch to List View to see the list of blocks.
- Choose ""Select"" from Tools.
- Attempt to select a block from the List View that is not currently visible in the viewport.
Screenshot - https://share.getcloudapp.com/p9uZbOz2" abhijitnage
Future Releases 40559 Bug when inserting images with TinyMCE for latest Chrome Editor 4.7.4 normal normal Future Release defect (bug) new 2017-04-25T02:03:44Z 2017-05-19T14:36:48Z "Environment:
Windows 8.1 64bit
Google Chrome ver 58.0.3029.81(latest)
Google Chrome Canary ver 60.0.3079.0(Official Build)canary (64bit)
Issue steps:
Preparation
test.jpg
This is a test sentence.This is a test sentence.This is a test sentence.
This is a test sentence.This is a test sentence.This is a test sentence.
This is a test sentence.This is a test sentence.This is a test sentence.
test.jpg is the name of the file to be inserted.
1)Select test.jpg with the mouse
2)Cut test.jpg with CTRL + X
3)Insert image from Add Media button
After image insertion:
<img src=""test.jpg"" />a test sentence.This is a test sentence.This is a test sentence.
This is a test sentence.This is a test sentence.This is a test sentence.
This is a test sentence.This is a test sentence.This is a test sentence.
The img tag interrupts the sentence behind as described above.
Please validate." dreative
Future Releases 55827 Can't drag and drop block into empty column in list view Editor 6.0 normal normal Awaiting Review defect (bug) new 2022-05-25T13:35:05Z 2022-06-02T14:33:26Z When editing a page and using the List View to see the blocks, you can't drag and drop a block into an empty column. Only if there is already a block in a column can you drag and drop any other block into it in List View. You can, however, drag and drop a block into an empty column on the page itself. bhammondCVL
Future Releases 59978 Classic editor cursor control Editor 6.4 normal normal Awaiting Review defect (bug) new 2023-11-28T16:10:55Z 2023-12-19T15:42:56Z Since WordPress 6.4.1 or one version earlier, when pressing the cursor right or cursor left button in the block editor, the page simultaniously swaps several lines down or up. Most of the times the edited line is swapping out of sight and you are losing orientation on your work. jjb100
Future Releases 60107 Classic editor cursor control Editor 6.4.1 normal normal Awaiting Review defect (bug) new 2023-12-19T15:58:30Z 2023-12-19T15:58:30Z "Since wordpress 6.4.1 or a version before, the classic editor reacts strangely to keystrokes.
If you press the ""cursor left"" or ""cursor right"" keys on the PC keyboard, the edited text always scrolls up or down several lines ""uncontrollably"".
The edited line often disappears from the screen, so that you lose the orientation to your work.
This happens under Windows 10 Pro regardless of the browser used (Firefox, Opera).
" jjb100
Future Releases 46100 Custom field validation is not working in Gutenberg Editor Editor normal major Awaiting Review defect (bug) new 2019-01-25T06:56:11Z 2019-01-25T14:28:29Z "In Latest Version 5.0, Gutenberg doesn't allow validation with WCK plugin. Lets create a custom post type and add the custom field with required.
And when we add custom post type with the custom field, required field doesn't shows validation.
This validation is working with old editor." kalpanasharma19
Future Releases 42540 Don't move focus to the editor when switching editor mode Editor normal normal Future Release defect (bug) new 2017-11-14T10:38:33Z 2019-01-10T17:31:15Z "Splitting this out from #42530.
When switching the classic editor from ""Text"" mode to ""Visual"" mode, the editor area is focused. Worth noting this is a TinyMCE behavior, not something WordPress does. For a number of years it always worked this way, with a few exceptions. For example, in 4.8.3 the editor is not focused for me, not sure if something changed in TinyMCE.
Regardless of what happened to TinyMCE, I'd propose to finally discuss this behavior and evaluate if it's a good one for all users. It was discussed sometimes in the past, as part of other issues, see for example #30490 but never fully addressed.
This issue is even more relevant now that #41962 is going to move focus to the editor in both Visual and Text mode, when there is a selection.
Moving focus programmatically is often problematic because it generally assumes just one, specific, workflow.
From an usability perspective, moving focus to the editor assumes users want to start typing immediately. This may or may not be true. It's an assumption.
From an accessibility perspective, unexpectedly switching context is a huge concern. See also the discussion on #42530.
Any thoughts and discussione welcome!" afercia
Future Releases 53846 Drag and drop multiple blocks into container breaks editor Editor 5.8 normal normal Awaiting Review defect (bug) new 2021-07-31T04:16:22Z 2021-09-01T06:29:35Z "http://somup.com/crivq7Yzif
I recently found a bug in 5.8 where dragging and dropping a group of blocks into a container (e.g. a column) breaks the editor and results in this error:
**The editor has encountered an unexpected error.**
Notes:
- I'm using v.5.8
- Steps to reproduce the problem: Create a new post. Add more than 1 paragraph block with text. Add columns block. Add text to columns block. Select paragraph blocks. Drag and drop them into columns block. The editor will break.
- The problem occurs on a fresh install of WordPress 5.8 with no plugins.
- The expected result is to be able to have paragraph blocks successfully dragged into the columns block. Instead, the editor broke.
Here is the error that shows up in the console:
{{{
TypeError: e is null
pp http://wptest1.local/wp-includes/js/dist/block-editor.min.js?ver=390a9f83b606a55e8b523c4d16bdb08c:12
gp http://wptest1.local/wp-includes/js/dist/block-editor.min.js?ver=390a9f83b606a55e8b523c4d16bdb08c:12
Bh http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:126
Dj http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:162
unstable_runWithPriority http://wptest1.local/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25
Da http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
xb http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:162
Te http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:146
Pg http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61
unstable_runWithPriority http://wptest1.local/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25
Da http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
Pg http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61
ha http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
Ja http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:224
ch http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:93
e http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
t http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
v http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
b http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
i Redux
A http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
L http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
dispatch http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
Redux 17
A http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
L http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
f http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
ss http://wptest1.local/wp-includes/js/dist/block-editor.min.js?ver=390a9f83b606a55e8b523c4d16bdb08c:12
us http://wptest1.local/wp-includes/js/dist/block-editor.min.js?ver=390a9f83b606a55e8b523c4d16bdb08c:12
h http://wptest1.local/wp-includes/js/dist/compose.min.js?ver=6284a4846a73f9c3e3ff2d7bd0b47be7:2
ce http://wptest1.local/wp-includes/js/dist/compose.min.js?ver=6284a4846a73f9c3e3ff2d7bd0b47be7:2
T http://wptest1.local/wp-includes/js/dist/compose.min.js?ver=6284a4846a73f9c3e3ff2d7bd0b47be7:2
P http://wptest1.local/wp-includes/js/dist/compose.min.js?ver=6284a4846a73f9c3e3ff2d7bd0b47be7:2
A http://wptest1.local/wp-includes/js/dist/compose.min.js?ver=6284a4846a73f9c3e3ff2d7bd0b47be7:2
Aj http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:161
unstable_runWithPriority http://wptest1.local/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25
Da http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
ab http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:154
Te http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:146
Pg http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61
unstable_runWithPriority http://wptest1.local/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25
Da http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
Pg http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61
ha http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:236
Ei http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:41
Cb http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:41
w http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:40
Md http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:35
oa http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:44
hj http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:117
Sh http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152
Th http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152
tj http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152
Te http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:146
Pg http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61
unstable_runWithPriority http://wptest1.local/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25
Da http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
Pg http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61
ha http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60
Ja http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:224
ch http://wptest1.local/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:93
e http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
t http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
v http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
b http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
i Redux
A http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
L http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
dispatch http://wptest1.local/wp-includes/js/dist/data.min.js?ver=7bfa3a673439e85e459d5ec92d30fdda:2
Redux 3
react-dom.min.js:125:24
}}}
Thanks Israel Barragan for your help with this ticket!" lesleysim
Future Releases 53087 ERRO NA ARÉA EDITAR POST Editor 5.7.1 normal major Awaiting Review defect (bug) new 2021-04-26T02:07:24Z 2021-05-18T05:50:50Z "encontrei um erro dentro da ferramenta wordpress, dentro da aba edição de postagem, você abre o botão + vá em ""padrões"" vá em botões escolha a opção texto :
ATENÇÃO a opção fica se movendo sem parar." jooohn
Future Releases 60790 Editor has encountered an unexpected error Editor trunk normal normal Awaiting Review defect (bug) new 2024-03-16T10:02:59Z 2024-03-16T10:02:59Z "During the customization of the Blog template, an unexpected error was encountered by the editor when changing the line height after uploading a custom font.
" shilpamanoj
Future Releases 39574 Editor patterns: add empty headings/quotes Editor 4.3 normal normal Future Release defect (bug) new 2017-01-13T14:49:16Z 2019-07-18T06:46:04Z "Currently some patterns normally only work if there's other text after the leading character(s). I you type `## Test` and press enter, a new h2 element will be created. If you type `##` followed by zero or more spaces, no heading is added and the `##` stays ""normal"" text. I think this is and should be the intended behaviour, so no empty elements are created.
But if yout enter `## Test`, then move the cursor between `##` and Test followed by pressing enter, an empty heading will be created and the resulting html looks like this:
{{{
Test
}}}
Until switching to the text editor and back, you are not able to add text to the heading because it doesn't show up in visual mode.
When doing the same with `>`, it doesn't create an empty blockquote, but removes the leading char. The visual editor is then adding an additional line of whitespace, where you can't put your cursor in. This line disappears also after switching to text mode and back.
I've tested with WP 4.3 and 4.7.1.
" mahu2401
Future Releases 47900 "Error on update MCE Views in gutenberg block ""Classic Editor""" Editor 5.2.2 normal major Future Release defect (bug) new 2019-08-19T13:49:45Z 2020-12-29T00:00:27Z "By steps:
• Install new site on WordPress 5.2.2.
• Create new page.
• Add editor block ""Classic"".
• Add media gallery into classic editor with 2+ images.
• Open edit gallery window.
• Switch to another tab in the browser.
• Little wait...
• Back to tab with WordPress.
• Any change in ""edit gallery window"" and click ""Update gallery"".
• Gallery do not update and error in browser console.
Error in browser console:
{{{
wp-tinymce.js?ver=4940-20190515:3 Uncaught TypeError: Failed to execute 'setStart' on 'Range': parameter 1 is not of type 'Node'.
at wp-tinymce.js?ver=4940-20190515:3
at Object.map (wp-tinymce.js?ver=4940-20190515:3)
at Object.select (wp-tinymce.js?ver=4940-20190515:3)
at mce-view.min.js?ver=5.2.2:1
at Function.s.findKey (underscore.min.js?ver=1.8.3:1)
at Function.s.find.s.detect (underscore.min.js?ver=1.8.3:1)
at N.d.update (mce-view.min.js?ver=5.2.2:1)
at mce-view.min.js?ver=5.2.2:1
at N.d. (mce-view.min.js?ver=5.2.2:1)
at s (backbone.min.js?ver=1.2.3:1)
}}}
----
I think reason of problem in the following: after open ""edit gallery window"" gutenberg block updated, and after click ""Update gallery"" node for update (use in ""update"" function in mce-views) no longer in the document.
The problem is also observed in other plugins that use MCE Views for pretty view shortcodes." vjik
Future Releases 59270 Excerpts Not Showing Bold Text ... Editor 6.3 normal normal 6.6 defect (bug) new 2023-09-02T01:47:36Z 2024-02-17T14:26:45Z The text itself shows, but it does not show the bold attributes as it did up until 6.2.2. hmnvtn
Future Releases 55044 Gallery block UI issue Editor 5.9 normal normal Awaiting Review defect (bug) new 2022-02-02T09:30:26Z 2022-06-11T17:56:02Z "Hi,
When i am putting padding on gallery block then beaking UI on content. more information see mentioned SS.
Thank you" sumitsingh
Future Releases 58045 Global style change cannot be reverted Editor 6.2 normal normal Awaiting Review defect (bug) new 2023-04-01T16:53:48Z 2023-04-01T16:53:48Z "After applying a background color to a Column block via Layout and clicking Apply Globally under Settings -> Advanced, all blocks changed to the same color, as expected.
However, when reverting the background color of any Column block is set to transparent (when all checkmarks in the background color popup are deactivated), the recently-applied Global color remains, even if Apply Globally is clicked again.
It is possible to change the selected block to another color (or gradient), as well as a new background via Apply Glohally to all blocks, but a transparent background cannot be restored in the theme." sidewaysdesign
Future Releases 49857 Groups disappear after inserting something inside it in Gutenberg Editor 5.4 normal normal Awaiting Review defect (bug) new 2020-04-09T08:41:57Z 2020-04-09T16:10:16Z "**Description:**
Since upgrading to 5.4, when I create a group using the Gutenberg editor, and then add something inside, the **group disappears from the UI**, but it remains in the source code.
As we use this feature everyday as part of our company workflow, this bug is seriously affecting our daily operations as it causes layout havoc when we try to display an article's contents.
This bug is related to ticket #49748.
**Actions taken so far:**
- Flushed browser cache
- Ensured that assets are not cached
- Reinstalled WP 5.4
- Disabled all plugins
**Steps to reproduce:**
1. Create a new post (this issue also occurs on existing articles, but this bug is more easily highlighted in a blank article).
2. Create a new group.
3. Click on the (+) to add, say, a paragraph within it.
4. The group completely disappears from the editor, only the paragraph can be interacted with. The group no longer appears on the outside of the inserted paragraph, as it used to be in WP 5.3. The group itself still exists in the code editor." ple33
Future Releases 59103 Gutenberg 16.4 Footnotes Critical Bug on PHP 8.0 Editor 6.3 normal critical Awaiting Review defect (bug) new 2023-08-14T15:58:42Z 2023-08-29T00:01:56Z "I am currently using WordPress version 6.3, PHP 8.0.
There is no issue initially when creating a post with the footnotes block, and is able to publish the post.
After a while, when trying to edit the same post again, I will see the critical error as such as seen in the attachment.
{{{
PHP Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /wordpress/plugins/gutenberg/16.4.0/build/block-library/blocks/footnotes.php:37 Stack trace: #0 /wordpress/core/6.3/wp-includes/class-wp-block.php(258): gutenberg_render_block_core_footnotes(Array, '', Object(WP_Block)) #1 /wordpress/core/6.3/wp-includes/blocks.php(1133): WP_Block->render() #2 /wordpress/core/6.3/wp-includes/blocks.php(1171): render_block(Array) #3 /wordpress/core/6.3/wp-includes/class-wp-hook.php(310): do_blocks('
Lorem Ipsum quam quasi mollitia
}}}
" Giorgio25b
Future Releases 56429 Gutenberg author box missing Editor 6.0.1 normal normal Awaiting Review defect (bug) new 2022-08-24T14:03:31Z 2022-11-05T22:30:57Z "There is a bug related to the author box missing when all of the following conditions are true:
- When there are more than 70 users in a WP installation
- When an Editor creates a post and saves it as a draft. This must be the only post of that user
- If all the users are ordered alphabetically, that user must be above 60 in the order
When this is true, if another Editor opens that draft, the author box won't be visible. There is an additional request that should fetch that user and it's returning error 403
If Administrator opens it, the author box is present
The cause for the bug is the last condition that fails here - https://github.com/WordPress/WordPress/blob/master/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php#L445 because the function checks for the author of the post" lgadzhev
Future Releases 53085 Gutenberg editor and Chrome stopped working after 5.7 Editor 5.7 normal blocker Awaiting Review defect (bug) new 2021-04-25T18:48:28Z 2021-05-04T21:24:51Z "I have a problem with Gutenberg since upgrading to the version above `5.7`, including `5.7.1`, which seems like a bug to me. If I refresh, sometimes it works, but usually not.
All plugins have been deactivated, including `/mu-plugins/`, and a shipped theme activated. Same issue in Google Chrome and Chrome Canary. **Safari works, but it takes several seconds for the UI to be clickable.**
Downgrading to `5.6` works, too, but this can't be the right solution.
Here is [the error log](https://paste.ee/p/NRCuh) that was logged when Gutenberg didn't react." thaikolja
Future Releases 53863 Gutenberg fails with wp 5.8 Editor 5.8 normal critical Awaiting Review defect (bug) new 2021-08-03T01:40:57Z 2021-08-03T07:38:03Z "I had to rollback to fix this. The WP 5.8 Gutenberg crashed with this info:
TypeError: Cannot read property '$el' of undefined
at new m (https://bestredlighttherapy.com/wp-includes/js/dist/media-utils.min.js?ver=5e105975fcfe18922cd4f0163466f454:2:3795)
at Yg (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:68:243)
at rh (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:98:274)
at zj (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:228:490)
at Th (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152:223)
at tj (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152:152)
at Te (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:146:151)
at https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61:68
at unstable_runWithPriority (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25:260)
at Da (https://bestredlighttherapy.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:60:280)
I did turn off all plugins and switched to the default theme. Only rolling back the main version allowed me to get into Gutenberg." dogrescuer
Future Releases 57212 Gutenberg list block treating each UL as separate block? Why? Editor 6.1 normal normal Awaiting Review defect (bug) new 2022-11-26T17:44:58Z 2022-11-30T16:38:38Z "After WordPress core update 6.x we start seeing that Gutenberg block for LISTS is now treating each separate UL as what looks like a separate block, so that each UL can be dragged, reordered, copied, duplicated, font styles, etc...
It is confusing, not intuitive. Previous method of Gutenberg lists was nice and simple, it was just one master (parent) list and all UL inherit the style of the parent without ability to treat ULs separately.
Would be nice to have option in the Gutenberg LIST block to disable the treatment of ULs separately and just keep it one simple master list. " wordmax
Future Releases 53901 "I found error in wordpress ""Publishing failed. The response is not a valid JSON response.""" Editor 5.8 normal critical Awaiting Review defect (bug) new 2021-08-09T12:50:50Z 2021-08-09T12:50:50Z "I found an error while publishing the post ""Publishing failed. The response is not a valid JSON response."" I tried a couple of plugins and tricks I cant sussessed. KIndly help me to solve this issue. regards" uzair23
Future Releases 51449 Image caption missing after saving in multisite with non super administrator account Editor 5.5.1 normal major Awaiting Review defect (bug) new 2020-10-05T08:21:56Z 2021-05-04T05:40:40Z "I created a new multisite environment and create a new post with a plugin classic editor activated. Edit using the Editor account, adding media, and add caption then save the post. Switch to the HTML tab and back to Visual tab, the caption will be gone.
I can confirm this of not happening just to me but also to my client which originally reported the issue." gochisiyan
Future Releases 31375 Image caption with heading adds an empty paragraph at page edits Editor 4.1 normal normal Awaiting Review defect (bug) new 2015-02-19T11:22:17Z 2020-11-24T06:11:30Z "Hi,
I'm experiencing a problem when trying to use heading tags within image captions. Upon inserting (or editing) the image on a page, I wrote a heading before a block of text in the caption. The whole thing would look something like this:
{{{
Heading here A block of text directly following the heading.
}}}
What happens is that every time I edit the page in any way (not even touching the image or image caption) there is an extra empty paragraph added to the caption text. That means that anything below the caption jumps one line further down at every edit.
Just to see if this is some plugin conflict, I created a clean WordPress install without plugins, and tried the same thing. The problem was reproduced. Looking at the html code generated, there is a new
added at every page edit, and sometimes a couple of are inserted before the heading tags. Here is a link to my test site:
[http://dev.webbkoncept.se/themetest/]
I tried it using both themes twenty fourteen and twenty fifteen, experiencing the same bug." sweman
Future Releases 45691 In Code View Bolded Text Has Strong tag wrapped around each character Editor 5.0.1 normal normal Awaiting Review defect (bug) new 2018-12-18T17:50:14Z 2018-12-19T17:03:48Z "When copying a word document over to create a new page, the formatting carries over...mostly. But when you look at the content in code view there are extra tags that is added which make the code look sloppy.
Here is a sample of the extraneous code added when viewing the code;
S H A RING INFORMATION WITH ADVERTISERS OR OTHER THIRD P A R T I E S
Why is it adding a strong tag around each character?
I am adding a screengrab of the Dev Tools and of WordPress 5.0 UI." codingsince007
Future Releases 54587 In some gutenberg blocks the styles setting is not displaying image. Editor 5.8.2 normal normal Awaiting Review defect (bug) new 2021-12-06T12:41:51Z 2021-12-06T12:41:51Z "I am using the wordpress latest version and in all the themes, the gutenberg block having styles setting is not displaying img/text.
Steps to reproduce:
1. Add Quote block.
2. Now in settings section the styles section has 2 options default and large.
3. But this both options are not displaying the image.
I am attaching the images of this issue. Thank you." smit08
Future Releases 56744 Inaccuracy in user_can_richedit() function on /wp-includes/general-template.php Editor 6.0.2 normal normal Awaiting Review defect (bug) new 2022-10-06T03:45:14Z 2022-10-06T03:45:14Z "The user_can_richedit function assumes that the Editor can only be displayed for supported browsers, but it only considers known browsers (user-agent). Any others not known will be considered ""unsupported"" by the Editor. Below is the code snippet that handles this logic:
{{{#!php
= 534 );
} elseif ( $is_IE ) {
$wp_rich_edit = ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Trident/7.0;' ) !== false );
} elseif ( $is_gecko || $is_chrome || $is_edge || ( $is_opera && ! wp_is_mobile() ) ) {
$wp_rich_edit = true;
}
}
}}}
The effect of this logic is that if the user-agent is not known, the Editor will be displayed ""broken"" in the graphical interface, as shown in the example below:
[[Image(""https://resource.voelivre.com.br/wordpress_editor.jpg"")]]
This is because in /wp-includes/class-wp-editor.php the print_default_editor_scripts function checks user_can_richedit to define the $settings variable that is used to load the editor settings according to the code snippet below:
{{{
window.wp.editor.getDefaultSettings = function() {
return {
tinymce: ,
quicktags: {
buttons: 'strong,em,link,ul,ol,li,code'
}
};
};
}}}
This premise, of only considering the Editor compatible with known user-agents, can affect environments such as CloudFront from AWS because by default CloudFront uses the User-Agent ""Amazon CloudFront"" which is obviously not recognized by the user_can_richedit function and causes the breaking of the Editor without any notice to the user.
I suggest that some message be included in the graphical interface informing that the Editor is not compatible with the specific user-agent, informing its name. Or that some specific message is created for CloudFront, informing about a bad configuration in the AWS environment.
" tassiocoelho
Future Releases 56519 Inner blocks serialization bug in serialize_block function Editor 5.3.1 normal normal Awaiting Review defect (bug) new 2022-09-06T08:41:24Z 2022-09-13T05:53:18Z "Hi,
The serialize_block function https://developer.wordpress.org/reference/functions/serialize_block/ fails when the number of inner blocks increases.
The following custom function solved it for me.
{{{#!php
Test[/caption]
}}}
If you click on the image, two narrow link boundary markers appear above and below the image (see screenshot). These are taking up extra vertical space, so the image 'jumps' a bit.
Maybe it would be the best to disable the link boundary feature for links containing only images, in my opinion they don't provide any useful information and may irritate the user." mahu2401
Future Releases 54051 Making a sentence or paragraph bold is intermittent Editor 5.8 normal normal Future Release defect (bug) new 2021-09-01T13:16:09Z 2021-11-02T15:39:00Z When I highlight a sentence and attempt to bold it, only part of the sentence gets bold. I then highlight and press bold again and might get the full sentence bold. Sometimes I have to go through this process a number of times to make the sentence bold. This slows me down and is a bug. MikeLev
Future Releases 59511 Navigation Block issue Editor 6.3.1 normal normal Awaiting Review defect (bug) new 2023-10-01T16:20:25Z 2023-10-28T05:02:20Z While trying to add and edit description or any metadata on nav items. As soon as I press any key, it gets refresh. amitpomu
Future Releases 56054 Need to add some gap between input and range slider in Avatar block Editor 6.0 normal normal Awaiting Review defect (bug) new 2022-06-23T12:28:02Z 2022-06-24T07:44:53Z "While selecting avatar block if we change the border-radius from range slider at the 0th point the range slider pointer is touches to input box.So we need to add some gap between them.
" multidots1896
Future Releases 55886 Need to check query loop block thumbnail issue in post template Editor 6.0 normal normal Awaiting Review defect (bug) new 2022-06-01T07:13:26Z 2022-06-08T07:35:20Z "In wordpress 6,We need to check query loop block thumbnail issue in post template row and stack arrangement.In both arrangment default post thumbnail width are not full width.So we need align it in full width.
Below i have shared video link:
https://share.cleanshot.com/kQrdSKDzVfIiK19MeHsh" multidots1896
Future Releases 55390 Not able to choose Color picker in customizer when the blocks are added in widget Editor 5.9.2 normal major Awaiting Review defect (bug) new 2022-03-15T13:21:58Z 2022-03-16T09:17:28Z "Hi Team,
I hope you are doing well and safe!
I would like to highlight an issue with the color picker in the customizer when using the blocks in widgets.
1. For choosing the custom color, whenever you click on the color selection, it will trigger a click event where it will ask you to leave the site or not?
Here is the screenshot: https://share.bsf.io/YEur81BW
2. The color selection palette is not properly displayed.
Here is the screenshot: https://share.bsf.io/wbuzJ0zq
Furthermore, I have gone ahead and found that this issue is coming from WordPress version 5.9.2
Also, I have demonstrated a video that would help you check it on your end too.
This issue is occurring on default themes as well as other famous themes as well.
Here is the screencast: https://share.bsf.io/yAuKoy2J
I would suggest you please check this on priority and release a patch for this issue, as users are facing lots of issues due to this.
Looking forward to your response." nileshc
Future Releases 54113 Override core/gallery block Editor 5.8.1 normal normal Awaiting Review defect (bug) new 2021-09-12T17:34:11Z 2022-01-31T09:45:08Z "Hello,
I did override the core block for the gallery using in my ''functions.php'' file :
{{{#!php
'my_gallery_render',
) );
}
add_action( 'init', 'my_register_gallery', 10 , 1 );
}}}
It was perfectly working, but since a few days (I did the last update of wordpress 5.8.1), and maybe a little bit before, but I am not totally sure, I have an issue :
If I use the ''unregister_block_type'' function I cannot override it with ''register_block_type'' and the block disappear in the editor. And a strange thing occurs, I have this message on the former existing gallery blocks :
{{{
Your site doesn’t include support for the THRON block. You can try installing the block, convert it to a Custom HTML block, or remove it entirely.
}}}
If I don't use ''unregister_block_type('core/gallery');'' before, I have this message :
{{{
Notice: WP_Block_Type_Registry::register was called incorrectly. Block type ""core/gallery"" is already registered. Please see Debugging in WordPress for more information. (This message was added in version 5.0.0.) in /Users/the_user/wordpress_folder/wp-includes/functions.php on line 5663
}}}
All of that was working before with no alert.
I tried with all my plugins deactivated, and with removing all my function.php files actions.
" lohic
Future Releases 48311 "Page removal in wp clean install ""The response is not a valid JSON response""" Editor 5.2.4 normal normal Awaiting Review defect (bug) new 2019-10-15T15:50:28Z 2019-11-11T22:29:49Z "Question to hosting provider support
bug launch conditions: Clean wp install today, basic Theme, no plugins.
Created test site can not be removed from editor - ""The response is not a valid JSON response"" response.""
The page can only be removed from wp pages overview.
Sorry for my talk awkwardness (i have no idea what is it about just forwarding)
Vladimir
extasica.com
bug report cause from hosting provider:
we found a bug in WordPress itself, when pressing the ""Remove"" button is sending a POST request to the webserver with JSON data, but they do not have the correct end. The data includes an EOF character (the end of the file - this should end the data), followed by another character - n (new line). Therefore, the JSON parser crashes in our Modsecurity application firewall and the application receives a ""The response is not a valid JSON response"" response.
Original Czech hosting provider text
""nalezli jsme chybu v samotné aplikaci WordPress, kdy po stisknutí tlačítka ""Odstranit"" je odeslání POST požadavek do webserveru s JSON daty, která však nemají správný konec. Součástí dat je znak EOF (konec souboru - tímto by měla data končit), za kterým ale následuje ještě další znak - n (nový řádek). Z toho důvodu JSON parser v našem aplikačním firewallu Modsecurity zhavaruje a aplikace obdrží odpověď ""The response is not a valid JSON response""." motmat
Future Releases 29838 Post editing area: keyboard accessibility, tab order and focus joedolson* Editor 4.0 normal normal 6.6 defect (bug) accepted 2014-10-02T16:27:31Z 2024-02-20T12:42:59Z "This ticket aims to focus on a specific area of the UI, let's call it ""Post editing area"", the one that starts with the ""Title"" field and ends with the editor area, both in ""Visual"" and ""Text"" mode.
Related: #27553 while researching we noticed:
> '''joedolson''': outstanding issues surrounding tab order, but this are long-standing and not relevant to this specific patch and issue; that needs to be raised separately.
There's room for accessibility improvements here, especially when it comes to tab order and focus management. To fully understand what's going on you should stop for a while being a ""nervous clicker"" :) and:
- apply the patch from #27553
- unplug your mouse and disable your trackpad :)
- use just your keyboard
- tab around, both forwards and backwards
It would be great to test also switching off your display and using a screen reader, I would recommend Firefox and NVDA.
Two main issues:
Focus.
When you're in the ""Title"" field and then you tab forwards, focus is moved directly inside the editor area skipping all what's in between.
While this *may* be useful for sighted keyboard users (they save a few key presses, say 1 second?), it's a very critical experience for screen reader users: when they tab forwards, they get that right after the title there's the editor. But when they tab backwards, they get many more elements that ""weren't there before"". [https://core.trac.wordpress.org/ticket/27553#comment:17 more details on 27553 comments].
Tab order.
The ""tabbing experience"" in Visual and Text mode should match as much as possible. Ideally, there should be a better [http://www.w3.org/WAI/GL/2014/WD-WCAG20-TECHS-20140902/G59 logical sequence in the markup]. When editing the title, the next logical step is editing the content, all the other controls (Add Media button, additional buttons provided by plugins and themes, etc.) should not be placed between the Title and the editor. The CEUX project proposed something similar at some point.
There is ongoing research and development on the editing experience, see for example Editor Focus/DFW in #29806 and the idea to review relevant parts of the UI, see [https://make.wordpress.org/core/2014/10/01/agenda-for-october-1st-dev-chat/#comment-19392 explore moving the Publish | Save | Preview buttons out of the metabox, etc.] so it would be a great opportunity to explore this ticket too." afercia
Future Releases 37829 Problem when adding a link and searching published articles Editor 4.5 low normal Awaiting Review defect (bug) new 2016-08-25T17:47:28Z 2019-04-19T18:03:59Z With WordPress 4.6 (was already in 4.5 actually), there’s a problem when you wanna put a link and search published articles. Here, if you search “iOS 9“, every article with iOS 9 in the title show up. Although, if you search “iOS 9.3.5“, nothing is found. Same thing with an apostrophe and maybe other punctuations. Djibs13
Future Releases 51419 Reconsider the UX impact of up/down arrows on meta boxes sarahricker Editor 5.5 normal normal Future Release defect (bug) assigned 2020-09-30T10:22:38Z 2022-06-03T19:35:11Z "In #39074 an accessibility problem was fixed whereby it was not possible to reorder meta boxes using only the keyboard. This is an important fix because it allows a keyboard-only user to reorder boxes in order to improve the tab order of these boxes.
Unfortunately this created a side-effect where it's now easy to accidentally reorder a meta box by clicking on one of the up/down arrows, whereas previously you had to drag the meta box to another position to reorder it.
There are a few UX issues related to this on the post editing screen:
* Accidentally clicking the ""up"" arrow on the topmost sidebar meta box will cause it to move below the main post editing panel, which makes it easy to miss as it will commonly move well below the fold. I've just been dealing with reports from two separate users who did this and were unable to find the meta box.
* Clicking anywhere on the meta box title expands/collapses it, but now there is also an up/down button that causes it to move position instead, in addition to the dedicated expand/collapse button. Users who are used to clicking the title now have to be careful where they click.
* It's not possible to move block editor meta boxes (which are React components). This causes a significant visual discrepancy between ""classic"" meta boxes and block editor meta boxes, and causes especially strange behaviour when a user moves a meta box ""up"" and it doesn't actually move up to within the block editor meta boxes.
""Classic"" meta boxes aren't going away any time soon, so I think the last point is an important one." johnbillion
Future Releases 53434 Reusable Blocks - raised a ticket in March (now closed) but still have a problem Editor 5.7.2 normal critical Awaiting Review defect (bug) new 2021-06-16T18:06:40Z 2021-06-16T19:34:40Z "Hi!
#52873: Reusable Blocks
I raised an issue about this in March but I still cannot make it work ...
I've been avoiding this issue and just trying not to have to remove reusable blocks from individual pages in the hope that the issue would be corrected in updates but it hasn't been. Now I'm in a situation where I need to delete a reusable block on one page without losing it on all the other pages that it appears on.
I really am an amateur and much of the advice and comment on the ticket and the links that you provided just don't make sense to me - I can't see how the breadcrumb at the bottom of the page helps and I can't alter/remove a reusable block and update the page without the new save function applying the change everywhere.
I attach a screenshot; I am trying to remove the 'empty page' graphic from the top of the page because I am now adding material to the page and it isn't empty anymore.
I am crying tears of frustration as only an amateur out of her depth can do!!
I would be very grateful if you could explain how to do this, please.
Best wishes,
Jane.
(I have a couple of screenshots but I can't see how to attach them ...)" hicklingadmin
Future Releases 49443 Safari Browser - Component Color Picker not getting closed on Custom Color Picker button click Editor 5.4 normal normal Awaiting Review defect (bug) new 2020-02-15T13:05:58Z 2020-02-18T16:12:48Z "When I am trying to close color picker on the `**Custom color picker**` button click. It's not getting closed. It's working properly on **Chrome** browser but somehow not working on the **Safari** browser.
Here is a screencast :
Safari - https://share.getcloudapp.com/8LuJ49lP (Version-13.0.5)
Chrome - https://share.getcloudapp.com/Qwu762od (Version 80.0.3987.106)" monikarao
Future Releases 53046 Scrollbars Broken in latest visual editor Editor 5.7.1 normal minor Awaiting Review defect (bug) new 2021-04-15T23:34:48Z 2021-05-18T06:14:18Z "Not only is the mouse disabled from scrolling using its scroll wheels, but the scroll bars on the side of the screen also are disabled except for the thumbs. You can drag the thumbs to scroll the content, but you can't click the arrows or scroll with the mouse. Rather clicking the arrows shows the clicked state of the arrow icons, but nothing scrolls.
Also, from within a block, a new set of full-screen scrollbars appears inside the outermost scrollbars (which make no sense and do nothing--mostly because the box is 1 unit high and doesn't need to stroll)" WhirledPress
Future Releases 39793 Scrolling up in the sticky post text editor does not scroll the page up to top Editor normal normal Future Release defect (bug) new 2017-02-06T13:03:53Z 2019-06-05T06:52:24Z "In the sticky post editor, if I use arrow keys to navigate in the text mode tab (textarea#content), the page does not scroll up to the very top of the page, leaving part of the text hidden. I have to use mouse to again reveal the text. In the TinyMCE mode the scrolling works perfectly.
I attached a screenshot where I created lines of text to get the page scroll. At the bottom of the page, cursor can be seen all the time. Then, when I go and use arrow keys to scroll to the first line of the text, it only scrolls almost to the top, leaving about 6.5 lines above the scroll.
Additionally, using Ctrl+Home or Ctrl+End (on Windows) to navigate to the top or bottom of the textarea does not scroll the page." elmo5
Future Releases 57095 Shortcode's query are executing at backend because of the_content filter Editor 6.1 normal normal Awaiting Review defect (bug) new 2022-11-13T18:55:52Z 2022-11-15T04:37:33Z "Steps to reproduce the issue & main issue description are available on this GitHub issue https://github.com/WordPress/gutenberg/issues/45732
I investigated this issue more and found a couple of new things.
So if you'll check the callers-tracks image, you'll see `block_editor_rest_api_preload` is being called, then from REST_API call `apply_filters('the_content')` being used and which I think executes the shortcode.
In file `wp-admin/edit-form-blocks.php`, I removed the `add_query_arg( 'context', 'edit', $rest_path )` on line no 65, after this change I don't see the issue.
After and before this change, I see changes in XHR requests, I am attaching both screenshots.
" vijayhardaha
Future Releases 58085 Some dialogs are blurry on HiDPI devices Editor 6.2 normal normal Awaiting Review defect (bug) new 2023-04-04T17:02:32Z 2023-04-18T19:02:25Z "Some dialogs are scaling text instead of using hiDPI properly. The publish calendar and the link attachment dialog are blurry when they should not be.
See attached file and note the difference between the two words marked ""Publish""" stuartsweet
Future Releases 25886 Sortable items gets stuck when dragging over TinyMCE Editor normal normal Awaiting Review defect (bug) new 2013-11-08T22:37:45Z 2020-11-24T06:09:01Z "When dragging a metabox over an active TinyMCE instance in a post/page edit screen, the metabox can get ""stuck"" (i.e., it stopping moving with the mouse). This only happens with TinyMCE and not the ""Text"" textarea.
'''To reproduce:'''
1. Uninstall plugins
1. Install a default theme (I used Twenty Thirteen)
1. Go to ''Pages > Add New''
1. If it is not activated already, click the ""Visual"" tab to activate the TinyMCE instance
1. Grab the featured image metabox to activate the sortable (i.e., drag and drop) functionality
1. Move the box over the TinyMCE area
1. Continual movement over the area will cause it to get stuck
The following screen grab shows how the cursor separates from the metabox as it gets stuck:
[[Image(http://f.cl.ly/items/0j2s0f2f2D3M2e393P3K/Screen%20Shot%202013-11-08%20at%202.33.36%20PM.png)]]
It's kinda hard to understand it with that image, so here's a movie that shows the issue:
http://f.cl.ly/items/1B151E3N0i3j092Z062m/broken-drag-and-drop.mov
I have tested this in Safari, Firefox, and Chrome on OS X. All browsers produce the same issue. The issue persists with MP6 as well." tollmanz
Future Releases 55803 Span is removed from title due page saving Editor 5.9.3 normal normal Future Release defect (bug) new 2022-05-24T12:31:54Z 2023-02-24T22:49:50Z "Hello,
since the update to wordpress 5.9 we detected some strange behavior, when editing existing posts, that contains HTML-Tags in their post title.
The problem is, when editing the post, the HTML-Tags in the post title, are not displayed in the editor. The tags are just cutted out from the title. This problem have only editor group, admin group is ok with saving span in title.
Steps to reproduce:
1. Create a new post with HTML-Tags in the title for example: ""This is my title ""
2. Save and publish the post with this title
3. Go back to the ""All posts"" list
4. Post is correctly displayed with ""This is my title "" in the list
5. Edit the post
6. post title lost the -Tags
7. Change the post title to ""This is my title 2""
8. Save the post
9. -Tags are totally gone, even in the ""All posts"" list." joyster
Future Releases 54606 The selectControl component has margin bottom 0 in label of selectControl. Editor 5.8.2 normal normal Awaiting Review defect (bug) new 2021-12-10T05:02:25Z 2021-12-10T05:02:25Z "I am using latest wp version 5.8.2 I created 1 custom gutenberg block and added the typography setting in inspector control for title and description of my custom gutenberg block.
Steps to reproduce:
1. Create a simple custom gutenberg block having 1 richtext.
2. Now create setting for font weight by SelectControl. So you can see that label of selectControl has margin 0.
3. So solution is to add margin-bottom 8 px." smit08
Future Releases 43564 TinyMCE bookmark not removed Editor 4.9.4 normal normal Future Release defect (bug) new 2018-03-16T00:57:23Z 2020-02-07T15:40:05Z "If cursor is placed between in text mode each time I switch from Text to Visual mode what i guess (from editor.js code) is bookmark is added and not removed, it just keeps stacking with each change.
code that appears between tags is:
{{{
<span data-mce-type=""bookmark"" style=""display: inline-block; width: 0px; overflow: hidden; line-height: 0;"" class=""mce_SELRES_start""></span>
}}}
Here is example to replicate bug:
{{{
}}}
Note: If possible, please use valid key and query, i had to remove them for demonstration, but bug happens even with this code.
Paste that code in Text mode, click between >< of "">"" and switch to Visual mode, then switch back to Text mode (do not click anywhere in Visual mode). Every time this is repeated, it just keeps adding mentioned code.
My humble guess is that this is happening because Visual is generating map preview from iframe tag so it can not detect that same place in code when it is switched back to Text mode." waterlord93
Future Releases 57316 Twenty Twenty-Three: Alignment issue in Button block Editor 6.1.1 normal normal Awaiting Review defect (bug) new 2022-12-12T07:31:19Z 2022-12-12T11:33:57Z "In Twenty Twenty-Three Theme, when we add Button block on the editor side and change the alignment of Button then the ""Align right"" is not reflected in the backend as well as frontend side.
Steps to replicate:
1: Activate the Twenty Twenty-Three Theme
2: Add Button block
3: Choose ""Align right"" from Align option
4: View the page/post at editor side
5: Save Page/Post
6: View the page/post at front side
For better understanding, I provide a video attachment link.
Video link: https://share.cleanshot.com/9VyrSCgD5fUNDgxYSJ1u
Thanks" kajalgohel
Future Releases 55945 UI Isssue on header list view Editor 6.0 normal normal Awaiting Review defect (bug) new 2022-06-08T05:15:28Z 2022-06-10T09:43:43Z "Hi,
I am not able to see or scroll for see remove row on editor. more information you can see SS." sumitsingh
Future Releases 46016 Unable to move blocks in editor Editor 5.0.3 normal normal Awaiting Review defect (bug) new 2019-01-16T21:08:39Z 2019-01-17T17:50:01Z "As I understand it: an active block can be moved up or down with arrows at the left of the block, which appear with mouse pointer hover.
Arrows do not appear with hover.
When I highlight two blocks (click & drag), I can see the arrows and moving works. However, there is no handle for dragging.
OS: windows 10
Browser: chrome
wp: v. 5.0.3
Theme: Twenty Seventeen (version is up-to-date)
- Jon
" Sophie_Kath
Future Releases 31751 Using PgDn and PgUp keyboard keys in the editor scrolls both post edit box and the whole viewport Editor 4.1.1 normal normal Awaiting Review defect (bug) new 2015-03-24T16:42:26Z 2020-11-24T06:13:57Z "The editor in WordPress 4.1 is great, and the whole sticky sidebar is a great improvement, but editing using Page Down and Page Up keys as part of the workflow is some of the most frustrating experience one can have because they control both the cursor in the post edit box and the page itself.
For example, if I go into a short post, put the cursor at the beginning of the post, and press Page Down, I'm going to end up with this: [[Image(http://i.imgur.com/CZr3FXQ.png)]]
At this point, I can only see a tiny sliver of the post because the page has scrolled too.
This is similar to #30919, except I'm not talking about the distraction-free mode, which I almost never use.
Windows 8.1 on Chrome 42 beta, but this behavior has been the same for as long as I can remember." archon810
Future Releases 58886 When editing a pattern getting console error on chrome browser Editor normal normal Awaiting Review defect (bug) new 2023-07-24T07:49:43Z 2023-07-24T07:49:43Z "Chrome: Version 115.0.5790.102 (Official Build) (64-bit)
screenshot: https://prnt.sc/3XQEoNPkzv1A
" chiragrathod103
Future Releases 49293 When trying to add an existing post category to a post - simply check the box of this category Editor 4.8 low minor Future Release defect (bug) new 2020-01-26T12:24:41Z 2020-01-28T16:50:55Z "What happens now:
When writing a new post and trying to add a new category for this post, if this category already exists - nothing really happens.
What should happen:
If this category already exists - simply check the box of this category. " shayatik
Future Releases 45532 WordPress 5.0 preview does not show updated content Editor 5.0 normal normal Awaiting Review defect (bug) reopened 2018-12-08T03:34:48Z 2018-12-13T03:09:59Z "When making an update to a page using the WordPress 5.0 code editor and then clicking ""Preview,"" the preview page does not display the updated content.
Steps to reproduce:
- Log in as an admin
- Click Pages
- Select a page to edit
- Click the 3 dots menu on the right
- Select ""Code Editor""
- Make changes to code within the editor
- Click Preview in the top right
Expected result: Updated code will be displayed in the preview page
Actual result: The preview page displays the unedited page until the ""Update"" button is clicked" JoshCrawford
Future Releases 52570 "WordPress 5.6.1 bug/error ""Publishing failed. The response is not a valid JSON response.""" Editor 5.6.1 normal normal Awaiting Review defect (bug) new 2021-02-19T02:59:40Z 2021-02-24T21:33:07Z "In the Latest Version of WordPress Gutenberg Editor, is having the issue of
""Publishing failed. The response is not a valid JSON response."" error.
Please make update to the Wordpress, or some patch, from where the error could be originating.
I am using PHP8, Apache and MySQL. Not Xampp, own installation[[Image(https://imgur.com/a/Su24bGJ)]]" djacob56
Future Releases 48539 WordPress Editor sometimes chops off titles in Chrome Editor 5.2.4 normal minor Awaiting Review defect (bug) new 2019-11-08T15:16:20Z 2019-11-08T22:38:19Z "Somtimes the WordPress Editor chops titles at the top of a page when editing. Unlike the ""missing images"" problem I reported, this one does NOT show up in Firefox.
Example Attached" cube1us
Future Releases 50703 WordPress classic editor accessibility issues for insert/edit links list joedolson* Editor 5.4.2 normal normal Future Release defect (bug) accepted 2020-07-20T13:02:44Z 2021-06-24T19:16:09Z "We are facing some keyboard accessibility issues with Insert/edit link list from the editor.
We are not able to access the items from the list using up arrow, down arrow, enter and space keys.
Please find the below image for reference.
[[Image(http://meedev.westus.cloudapp.azure.com/dev-old/Wp_editor_issue.png)]]" fornandakishore
Future Releases 57599 `wp_theme_json_data_default` filter is not properly to setting `settings.spacing.padding` value Editor 6.1.1 normal normal Awaiting Review defect (bug) new 2023-02-01T18:21:06Z 2023-02-02T16:25:29Z "There appears to be an issue in how the `theme.json` filters get currently applied. When trying to use the filter on the `default` layer to enable the `settings.spacing.padding` option it doesn't work as expected.
Within a plugin I'm trying to call the filter like so:
{{{#!php
2,
'settings' => [
'spacing' => [
'margin' => true,
'padding' => true,
],
],
];
return $theme_json->update_with( $new_data );
};
}}}
And for Theme I'm using a completely empty theme that has this `theme.json` file:
{{{#!json
{
""version"": 2,
""$schema"": ""https://schemas.wp.org/trunk/theme.json""
}
}}}
The expected result is that the padding dimension panel in for example the group block could be added. But that isn't the case. At the same time the `margin` option which I've also added in the example above does work as intended.
If you change the `theme.json` file to set the `padding` option to true it does work. And also if you change the filter that gets used to the `theme` layer it works as expected:
{{{#!php
2,
'settings' => [
'spacing' => [
'margin' => true,
'padding' => true,
],
],
];
return $theme_json->update_with( $new_data );
};
}}}
or
{{{#!json
{
""version"": 2,
""$schema"": ""https://schemas.wp.org/trunk/theme.json"",
""settings"": {
""spacing"": {
""padding"": true
}
}
}
}}}
" fabiankaegy
Future Releases 55844 color picker has scroll in styles menu Editor 6.0 normal minor Awaiting Review defect (bug) new 2022-05-26T12:29:42Z 2022-05-28T00:32:18Z in the color picker inside the styles menu moving your color picker circle to the right makes the color picker have a scrollbar in the bottom. tomkolron
Future Releases 11465 custom field duplicated westi* Editor 2.8.4 normal minor Future Release defect (bug) accepted 2009-12-16T21:09:23Z 2022-06-08T22:40:11Z "When I enter the information for a custom field and click on Preview without first clicking Add Custom Field, the custom field is saved. But then when I click Publish, it is saved again, appearing in the post twice.
If I click Add Custom Field before Preview, subsequent Publish does not duplicate the custom field. But it is very convenient and efficient to be able to avoid a separate save of the custom field.
" ericr23
Future Releases 59104 duotone is not applied to videos in the cover block in safari Editor 6.3 normal normal Awaiting Review defect (bug) new 2023-08-14T16:01:43Z 2023-08-22T20:49:58Z "Dear Team,
duotone (svg filter) is not applied to videos in cover block in safari (screenshot safari). In edge for example it works (screenshot ms edge).
I would be very happy about a solution.
Many greetings
Kiril" kiandept
Future Releases 55065 galleries not working properly Editor normal normal Awaiting Review defect (bug) new 2022-02-03T18:29:43Z 2022-02-08T04:21:50Z "1. can't drag and drop to reorganize photos within a gallery
2. if there is a ""hanging"" single photo in a gallery, it is not flush with the rest of the gallery
3. when centering a gallery, the photos are aligned single file down the page as opposed to in rows of 2-3, as specified. I.e., it's no longer a WYSIWYG editor as far photos are concerned. " pantsonfire77
Future Releases 33158 inline toolbar: incorrect position if link spans over two lines Editor 4.3 normal normal Future Release defect (bug) new 2015-07-28T20:47:41Z 2019-07-04T12:30:16Z iseulde
Future Releases 53999 it didn't save TAGS in post. Editor 5.8 normal critical Awaiting Review defect (bug) new 2021-08-24T23:37:49Z 2021-08-24T23:37:49Z "My name Idelfonso Roberto Santos
my whatsapp and weChat 55 47 98872 0320
my site https://www.2e4rodas.com.br
Versão atual: 5.8
Última verificação em 24 de agosto de 2021 às 20:10.
https://i.imgur.com/1stSbgD.png
[[Image(https://i.imgur.com/1stSbgD.png]]
https://i.imgur.com/88QU03P.png
[[Image(https://i.imgur.com/88QU03P.png)]]
it didn't save TAGS in post.
https://i.imgur.com/Jgbdei8.png
[[Image(https://i.imgur.com/Jgbdei8.png)]]
Have tests already been done?
1 - disable all plugins.
2 - change the theme.
3 - put the Tags in the first time you record the post.
" sir1idelfonso
Future Releases 53682 tags (keywords) with umlauts don't get saved in german locale Editor 5.7.2 normal minor Future Release defect (bug) new 2021-07-17T15:41:20Z 2023-07-09T16:44:05Z "
== This report is about assigning keywords to an article.
**First keyword:** ""Gärten"" with slug ""gaerten"" (exists already)
**Second keyword:** ""Garten"" with slug ""garten"" (was not created yet)
I tried to apply the new keyword ""Garten"", but once I saved the article, the keyword ""Gärten"" was assigned in the preview. I removed it and tried to assign ""Garten"" once again, but WordPress keeps applying ""Gärten"" to the article, even though **the editor showed ""Garten"" in the sidebar** (as expected).
I then created the keyword ""Garten"" with slug ""garten"" manually in the keyword management interface. Now I have both keywords in my database.
But still, when I try to assign ""Gärten"" in the editor, WordPress keeps changing it to ""Garten"", once the article is saved and I view the preview. The slugs are different (gaerten vs. garten), but it seems like the editor confuses the German umlauts in Gärten with Garten.
I am using the latest WordPress 5.7.2 and the Classic Editor." spielautomat4
Future Releases 41229 the tag read more is not working Editor 4.8 normal normal Awaiting Review defect (bug) new 2017-07-03T12:17:48Z 2017-07-03T22:11:01Z "Hello,
I have wordpress on a Hebrew language and when I try to add read more tag on post it's not show up in the frontend" yohanankap
Future Releases 41106 wp_editor() doesn't support attributes besides id and class Editor normal normal Awaiting Review defect (bug) new 2017-06-20T20:31:16Z 2020-09-22T05:37:31Z "I'm replacing a generic textarea with a WYSIWIG field. My textarea has an `aria-describedby` attribute, but wp_editor() -- really `_WP_Editors::editor()` -- can't set any HTML attributes besides ID and class on the WYSIWIG.
Would be better if I could do something like this:
{{{
wp_editor( 'hi-roy', 'Some text', array(
'attrs' => array(
'aria-describedby' => 'description'
)
));
echo 'Some description
';
}}}
" Shelob9
Future Releases 56522 Add filter for wp_get_layout_style Editor 5.9 normal normal Awaiting Review enhancement assigned 2022-09-06T15:56:00Z 2023-02-09T21:27:59Z "Currently, there is no filter for the output of this function, which contains the layout styles associated with a given block. Having this be filterable seems conducive to clean overrides versus having a specificity battle with inlined styles (which in many cases would require `!important` to override), while allowing this to be a very intentional, opt-in feature.
I will be working on a patch for this which I'll add to the ticket once created. " 10upiansvo
Future Releases 25471 Allow wp_link_dialogue to open in contexts outside of the editor Editor 3.6.1 normal normal Future Release enhancement new 2013-10-02T22:35:38Z 2019-06-05T07:08:55Z "I use wp_link_dialogue within metaboxes to provide a nicer way for users to enter URL's. Its handy for say slideshows, or profiles that point to external sites.
wp_link_dialogue works perfectly on pages where an editor instance exists, but on pages that don't have editor instances it fails due to wplink.js looking for the global wpActiveEditor var, which of course doesn't exist as there is no editor. Aside from the js error, invoking the dialogue on pages with no editor involves calling _WP_Editors::wp_link_dialog(); directly to output the required html which isn't ideal, or calling wp_editor and using css to hide it, which just seems lame.
Ideally wp_link_dialogue should function independently of the editor.
Approaches
1. Amend wplink.js to allow wpActiveEditor to be undefined and pass in a seperate value for textfield to the open method. Con is that wp_link_dialog() still has to be invoked with a call to _WP_Editors::wp_link_dialog()
2. Move wp_link_dialog into a seperate class, amend _WP_Editors to call this class and allow for a user defined textfield within wplink.js
" we_tell
Future Releases 50803 Button link missing from block settings Editor normal normal Awaiting Review enhancement new 2020-07-29T13:22:52Z 2021-03-09T17:37:03Z "When making a new post, adding a link to a button from the right side Block settings doesn't work, but adding it from the quick settings that appear next to block works.
Here is a video regarding the problem https://www.loom.com/share/6cf1f260edb7441d8a46f6bab0cfe804" irinelenache
Future Releases 40629 Change default template Editor 4.7.4 normal normal Future Release enhancement new 2017-05-02T06:17:50Z 2020-11-23T05:58:04Z "I recently required to change the default template of theme to another template. The site is already working since 3 months and now client wants to change the default template to the sidebar template while publishing new pages.
There is no such action or filter available for it.
I am trying to add filter for it but if anyone have other suggestions, please let me know." pratikgandhi
Future Releases 34681 "Consider removing the ""Disable the visual editor when writing"" option" Editor normal normal Future Release enhancement new 2015-11-14T14:41:57Z 2019-01-08T09:51:38Z Is anyone even uses it? considering the lack of love the text editor gets I truly hope that the answer is no. mark-k
Future Releases 59017 Duotone not working in 6.3 Editor 6.3 normal normal Future Release enhancement new 2023-08-09T07:35:24Z 2023-10-03T20:49:01Z "When the WordPress Accessibility Day website updated to 6.3 today the duotone filters we have set on images stopped working. Rolling core back to 6.2.2 solves this problem.
#58994 references changes to duotone in 6.3, however, bugs still exist.
Here's an example page on a site running 6.3 where duotone is no longer working: https://2023.wpaccessibility.day/about/organizers/. " alh0319
Future Releases 26988 Need a Button to Cancel/Revert Page/Post Edits in Progress Editor 3.8 normal normal Future Release enhancement new 2014-02-01T22:21:17Z 2021-02-10T14:29:28Z "Currently, if you start editing a page or a post and change your mind, there is no way to easily revert those changes and it leads to a lot of confusion as as if you leave the page and come back, it will tell you that there is an auto save version. Sending to Trash makes no sense because it trashes your whole page. This is VERY confusing and user unfriendly, especially for new users of WP.
There should be a ""revert"" or ""cancel"" button when editing that will get rid of current edits and take you back to the last, unedited version of the page/post." tomdryan
Future Releases 54540 Need to Add any Icon or align text at the center of social icon block in inspector style setting of Twenty twenty one theme Editor 5.8.2 normal normal Awaiting Review enhancement new 2021-11-30T13:11:00Z 2021-12-10T08:56:54Z "Need to Add any Icon or align text at the center of social icon block in inspector style setting of Twenty twenty one theme
screenshot:[https://prnt.sc/213h9ds]
Because while selecting icon style setting box layout not looks proper and shows empty box.
We have to adding icon for indication on selecting box. or we have to align box styling text between the box.
screenshot:
" multidots1896
Future Releases 36778 Parent theme editor-style.css cannot be disabled Editor normal normal Future Release enhancement reopened 2016-05-06T16:58:34Z 2020-11-23T04:48:13Z "While it is possible to override the CSS in a parent theme's editor-style.css, it is not currently possible to completely disable or dequeue a parent theme's editor-style.css file.
This is a problem for a few reasons:
- Theme authors may not keep their editor-style.css files up to date with the HTML the editor produces, leading to formatting oddities.
- You may not just want the editor styles customized from the WP defaults at all." matthewmcvickar
Future Releases 50191 Propose https prefix, not http for external links Editor normal normal Future Release enhancement new 2020-05-17T10:28:11Z 2022-09-11T17:52:10Z "In https://build.trac.wordpress.org/browser/trunk/wp-includes/class-wp-editor.php?marks=1269#L1269
The text says: The URL you entered seems to be an external link. Do you want to add the required http:// prefix?
Might be better to propose to prefix 'https://' as default." casiepa
Future Releases 38850 Sticky positioning for a smoother scrolling experience iseulde* Editor normal normal Future Release enhancement accepted 2016-11-18T11:06:23Z 2019-06-05T07:06:26Z "Let's consider using sticky positioning to do the scrolling effect we currently have on the editor page. At the moment we use JS and listen to scroll events, which is not ideal. It may look slow and buggy under some circumstances.
Browser support is looking good. It's already implemented in Firefox and Safari, and by the time we ship 4.8 it will be in Chrome (est. 31 Jan). It's under consideration for Edge and there's no support in IE. This is no big deal though, as we can just fall back to what we currently have.
http://caniuse.com/#feat=css-sticky
Note: Firefox now also gives a warning in the console about using JS for this:
> This site appears to use a scroll-linked positioning effect. This may not work well with asynchronous panning; see https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects for further details and to join the discussion on related tools and features!" iseulde
Future Releases 56852 Support IDs in block wrapper attributes Editor normal normal Future Release enhancement assigned 2022-10-19T13:10:22Z 2023-09-06T21:20:28Z "At the moment dynamic rendered blocks don't support [[https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#anchor|anchors]].
To enable this support, we need to add this feature to the Editor and add the ''id'' in ''get_block_wrapper_attributes()'' to the block.
I already created a PR to add this support to the editor:
https://github.com/WordPress/gutenberg/pull/44771
This ticket is for adding it to the renderd block HTML." Soean
Future Releases 60393 Test with Gutenberg active Editor normal normal Awaiting Review enhancement new 2024-01-31T03:53:44Z 2024-01-31T07:21:37Z "On the back of #60315, an issue that keeps occurring on some sites ([https://wordpress.slack.com/archives/C02QB8GMM/p1706630823300079 For example, wordpressfoundation.org earlier today]) is that WordPress trunk ends up being incompatible with the latest stable release of Gutenberg. Usually this happens around PHP back-porting from Gutenberg to Core, but I guess could happen with some of the JS too (I just don't see it).
Generally, WordPress trunk has been treated in the past as ""it should be stable"", and as a result, is run on many WordPress.org properties as a way to [https://en.wikipedia.org/wiki/Eating_your_own_dog_food dogfood] and find out about bugs before it hits every other WordPress site in the world. Over the years, this has identified many issues that wouldn't have otherwise been noticed until after release. Often these sites consume the SVN/Git repo's directly, and as such [https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/update-core.php#L1844 the upgrade routines] don't protect those sites.
I'd like to propose two changes to the unit tests in Core, as a way to hopefully notice these incompatibilities before it happens.
1. Run a unit test run with Gutenberg stable active (Similar to how we run multisite vs not-multisite, but we can probably slim it down to Gutenberg stable + Trunk + Single PHP version, just to reduce action time)
2. If it's a packages update, run all the tests with Gutenberg active (in addition to without)
For PRs such as the one that lead to the most recent issue, it'd have flagged that the commit would make trunk incompatible with the stable release, and either a) the core commit could've been delayed 12 hours, or b) the release of an updated Gutenberg could've been done first.
For other PRs/commits, it would highlight when a change in Core has caused Gutenberg to fatal or act oddly - Something that should be highly unlikely, but is plausible, and given how close Gutenberg and Core are, it just makes sense to me. This wouldn't replace the Gutenberg unit tests, but would act as a separate double-check." dd32
Future Releases 54968 Tide Gallery needs responsive design for Mobile Editor 5.9 normal major Awaiting Review enhancement new 2022-01-28T10:13:02Z 2022-01-28T10:13:02Z In a new theme Twenty Twenty Two with a block editor, There is one section of Tide Gallery to implement a Gallery of different types and with different customization options. The Gallery section is not working well for the front-end in responsive. It is showing the same view as it is showing on the desktop. krupalpanchal
Future Releases 6619 permalink field misleading in page editor: it displays the erroneous values Editor 2.5 normal normal Future Release enhancement new 2008-04-06T14:48:15Z 2021-09-22T13:30:43Z "if you create a sub-page, the permalink field should display the proper permalink.
currently, if you have:
site.com/page/
and when you create:
site.com/page/subpage/
the permalink shows:
site.com/subpage/
until it gets saved
the expected behavior would be for it to show the correct permalink.
the same remark applies when you then change the permalink. if the parent is no longer page, but rather page-2, then the permalink should update accordingly." Denis-de-Bernardy
Future Releases 51328 Classic Editor adds extra p tags to Instagram Embed Embeds 5.5.1 normal normal Awaiting Review defect (bug) new 2020-09-17T07:27:18Z 2023-07-31T11:04:26Z "Issue:
On Classic editor with wpautop enabled, when adding an Instagram url to be embedded, the editor adds extra p tags.
Steps to replicate:
1. Use Classic Editor.
2. Place Instagram post url to editor (doesn't matter Visual, Text, with or without p tags)
3. Save Post.
4. Check frontend code.
The output:
1. Closing tag after the first link:
{{{
}}}
2. Closing is inside p tag: {{{
}}}
3. Script tag is inside p tag: {{{
}}}
Expected output:
No extra p tags, eg what you get with {{{remove_filter( 'the_content', 'wpautop' );}}}." HannaIris
Future Releases 39472 Code tag still parses embeds Embeds 4.7 normal normal Awaiting Review defect (bug) new 2017-01-04T20:55:45Z 2017-02-20T10:57:26Z "WordPress 4.7.
The 'code' block in the WordPress editor behaves incorrectly.
For example:
{{{
Test Test
Another
www.google.com
http://www.google.com
https://www.youtube.com/watch?v=JHw6LTuMkNQ
Foxtrot Uniform Charlie Kilo
}}}
Displays as normal code in the wp-admin, but once published it creates an embed on the page. This should not happen and the contents of the code block should be displayed without embeds." rmens
Future Releases 40464 Embed video in Wordpress gives W3c Markup Validation issue Embeds 4.4 normal normal Awaiting Review defect (bug) new 2017-04-16T10:47:25Z 2017-04-16T15:51:37Z "When embed video in wordpress, the below validation issue occurs:
Error: The frameborder attribute on the iframe element is obsolete. Use CSS instead." pmbaldha
Future Releases 50172 Flickr embed not embedding content Embeds 5.4.1 normal normal Awaiting Review defect (bug) new 2020-05-14T15:56:03Z 2020-05-15T12:44:58Z "Flickr albums or collections from a ""sharing url"" do not embed.
**Steps to reproduce**
1. Visit a Flickr album
2. Use the sharing features on Flickr to provide their ''tiny-url'' such as https://flic.kr/s/aHsmLCQa2e
3. try embedding this url into a Flickr block.
**Possible fix**
Update block to recognize alternate flickr domain.
https://flic.kr/s/aHsmLCQa2e
Watch this brief video for a workflow example in Twenty Twenty.
[https://www.linuxbookpro.com/flickr-wordpress-block-not-working/]
**Special Notes**
Full URLs work but users may not be aware to test both
https://www.flickr.com/photos/nasa2explore/albums/72157713265937611
Problem exists using Gutenberg Beta plugin a well." joseph.dickson
Future Releases 58773 Improve oEmbed lazy loading adamsilverstein Embeds normal normal Future Release defect (bug) assigned 2023-07-10T20:09:21Z 2023-12-20T16:47:44Z "== Why lazy load oEmbed iframes?
* Lazy loading prevents wasted resources from loading if the user never scrolls down to view the oEmbed
* Iframe lazy loading is handled directly by the browser, making the change simple (add a single attriute) and ensuring users get a great experience
== Lazy loaded oEmbeds history
WordPress has [https://make.wordpress.org/core/2021/02/19/lazy-loading-iframes-in-5-7/ lazy loaded iframes] since version 5.7 and the original proposal included lazy loading for oEmbed iframes (as long as the provider also included width and height attributes).
Ultimately, dynamic addition of lazy loading of oEmbeds was removed from core because it was found to create issues, especially with embeds of other WordPress posts.
== Proposed Solution
This ticket proposes slightly different approach that relies on altering the iframe instance on the fly for each oEmbed. In particular:
* When the oEmbed iframe HTML is displayed, if it doesn't already contain a `loading` attribute, it is run through `wp_iframe_tag_add_loading_attr` to add the lazy loading iframe under the correct conditions
* Will not add lazy loading to WordPress iframes because of the `data-secret` check
* Only adds lazy loading to iframes with the height and width present.
* Runs before the `oembed_result` filter, so developers can remove the attribute if desired.
" adamsilverstein
Future Releases 54924 Issues embedding Vimeo URLs with signatures Embeds 5.9 normal normal Future Release defect (bug) new 2022-01-26T13:59:31Z 2022-06-11T08:38:26Z "Hi,
The [video] shortcode is not working with the new vimeo url format (containing signature as paramter).
Example : [video data-width=""500"" data-height=""281"" controls="""" src=""https://player.vimeo.com/progressive_redirect/playback/667848247/rendition/1080p/1080p.mp4?loc=external&signature=f059d7229d1c838389dc3cc145b2072e2b8c18439b26aeaba0c55658a2837d7e"" eq-attached=""true""]L’option pour l’IS des entrepreneurs individuels[/video]
WP remove all the parameters, so the video code integration is not the good one." elpix
Future Releases 42258 Twitter embed link in posts generates an empty paragraph Embeds 4.9 normal normal Awaiting Review defect (bug) new 2017-10-18T14:32:39Z 2017-10-18T14:32:39Z "When I look into the post, below the embed tweet I see an empty paragraph, when I look inside it, in the source I see a twitter script link:
}}}
" alexvorn2
Future Releases 34335 URL shorteners ( redirects) should to be supported by the embed handling for couple of hops Embeds 2.9 normal normal Future Release defect (bug) reviewing 2015-10-16T22:35:15Z 2023-05-29T10:40:57Z "It should be possible to use URL shorteners ( redirects) to load embeds.
I have been testing the new embeds feature and have found that a Bit.ly link doesn't work, but the resolved link does
I believe we should support at least one hop if not two
" pbearne
Future Releases 44231 XML oembed discovery is not implemented correctly Embeds normal normal Awaiting Review defect (bug) new 2018-05-25T16:38:50Z 2023-05-30T09:51:54Z "When using XML in oembed discovery, WordPress still tries to encode it as JSON and fails. It doesn't retry to check if XML would work.
How to reproduce this:
- Add a link tag for an XML oembed: this is clearly tagged as `text/xml+oembed` and also has the file extension `.xml`: `
- WordPress will now correctly resolve the provider as `http://example.com/oembed.xml?url=http://example.com/blah`
- Wordpress will send a request to: `http://example.com/oembed.xml?url=http://example.com/blah&maxwidth=525&maxheight=788&dnt=1&format=json`. Note how it adds `format=json` but still uses the `.xml` file extension
- The provider correctly returns an XML response, with HTTP status code 200
- Wordpress tries to parse it as JSON and fails
- Wordpress doesn't retry with `format=xml` since it only tries XML if the JSON endpoint failed with HTTP status code 501
Background info from the spec:
- If the format of the request is given in the file extension (e.g. `/oembed.xml`), the provider should ignore the `format` parameter. (See https://oembed.com/#section2.2).
- For discovery the provider should specify the full oembed endpoint, including the `format` paramter. It's therefore wrong to override it in Wordpress. (See https://oembed.com/#section4)" rivalitaet
Future Releases 42074 YouTube Auto-Embed Does Not Work with Video+Playlist Links Embeds normal normal Awaiting Review defect (bug) new 2017-10-03T14:01:22Z 2018-06-14T12:08:30Z "Hi,
When we past a video URL into the editor, it works fine:
`https://www.youtube.com/watch?v=0yGrCbYDUvQ`
But when embedding the ''playlist''-based URL, '''WordPress always shows the first video in the playlist''', despite the `v=0yGrCbYDUvQ` being set (see below what I am pasting). This is even if I ''don't'' have their `index` parameter set (indexes can move around):
`https://www.youtube.com/watch?v=0yGrCbYDUvQ&list=PLpxGtvV4Cq_IacCuIMunwiFx3c4G5h0mE`
To make it work, I always have to use YouTube's physical embed code, but then I don't get the benefits of WordPress auto-sizing it.
Any chance to get this parsed out a bit better?
Thanks!" MicroBerto
Future Releases 60729 YouTube embed start= Embeds 6.4.3 normal minor Awaiting Review defect (bug) new 2024-03-08T07:24:54Z 2024-03-08T07:24:54Z "Hi. I am experiencing an issue where I am seeing the video start time being either randomized or shifted for each load.
Expected behavior: YouTube video embedded with a timestamp like {youtube_url}start=5064, video starts at 1:24:24 each time video is loaded on a blog post.
Issue 1: if ""resize for smaller devices"" is active the start point is randomized before posting. E.g. at 5064 it start approximately 30 seconds before it should (say 5034). I shift the start time to 5094 to try and compensate, resulting in it starting earlier than previously (say 5004). I leave it at 5064 and publish the blog post, with the result of it starting at 0 seconds (incognito mode, fresh browser, logged in).
Issue 2: Resize for smaller devices is turned off. Now the first time the video is loaded it starts where it is supposed to start at 5064 seconds (steps: start video -> refresh page -> start video -> refresh -> ...). But, for each time the blog post is loaded and the viewers presses play, the start time shifts back approximately 30 seconds. This does not happen in incognito mode, here it loads at the correct timestamp each time the page is reloaded and video started." chrdre
Future Releases 42825 [embed] shortcode - oembed_cache not being updated when $cached_recently is false Embeds normal normal Awaiting Review defect (bug) new 2017-12-07T12:32:01Z 2019-01-17T01:31:35Z "For my plugin ( oik ) I developed a Shortcode help facility that shows examples of my shortcodes, syntax etc. It also shows examples of the WordPress core shortcodes.
For [embed] it uses a YouTube URL
[embed width=""480"" src=https://www.youtube.com/watch?v=nH228-XQ-A8]
During PHPUnit testing in multiple environments I found I was getting different results. In one environment the content of oembed_cache was
{{{
}}}
In other environments I was getting a different result.
{{{
}}}
Note: The shortcode expansion is being performed in wp-admin with no global post.
Trace analysis of the `shortcode` method in shortcodes/class-wp-embed.php indicates
that the `$cached_post_id` is being set by `find_oembed_post_id`, which means that `$cache` is set to the content. But the post_modified_gmt of the first example is 25th November; so `$cached_recently` is false.
Since `$this->usecache` is initially set to true then the `$cached_recently` logic is ignored and the route taken is to apply the first 'embed_oembed_html' filter then return.
The subsequent updating doesn't kick in.
== Partial fix ==
It doesn't look at all logical but setting `$this->usecache=false` before the return of `$oembed_post_id` in `find_oembed_post_id` partially resolves the problem.
However, since there's no further checking of `$cached_recently`, this happens every single time. Obviously, more work is needed to update out of date cached items.
This is a follow on to #34115" bobbingwide
Future Releases 57234 oembed_cache created in post affects the post_author on export Embeds normal normal Awaiting Review defect (bug) assigned 2022-11-30T12:14:04Z 2024-02-08T08:19:25Z To fix ticket #34115 we've introduced a custom type `oembed_cache` in the post table. However, once an `oembed_cache` is created the `post_author` will be the user who triggers it instead of the site owner. Because of the reason above, when you try to export the blog, it'll show up as a
in the file which is pretty confusing. It probably makes more sense to set the `post_author` as 0 or set it to the site owner. wecanwang
Future Releases 37597 served oEmbed from cache even when expired Embeds 4.0 normal normal Awaiting Review defect (bug) reopened 2016-08-08T11:37:17Z 2018-03-05T15:26:53Z "There is wrong condition in wp-includes/class-wp-embed.php
Embeds are pulled from cache even if $cached_recently is false = expired.
This condition:
{{{#!php
usecache || $cached_recently ) {
}}}
should be changed to:
{{{#!php
usecache && $cached_recently ) {
}}}" zabatonni
Future Releases 58840 Add Canva as an oEmbed provider Embeds normal normal Future Release enhancement new 2023-07-18T15:06:41Z 2023-08-24T14:38:34Z "**Is the service is popular enough for core developers to have heard of it before? Is it “mainstream?”**
It is quite popular with over 100 million users according to Wikipedia.
**If similar services are already supported, how does this service compare in terms of size, features, and backing?
**
Not sure.
**Does this service have an established social media presence?**
Almost 300k followers on Twitter: https://twitter.com/canva
**Is its oEmbed endpoint clearly established and properly documented? (Sometimes, they are just a developer’s pet project that may not be supported.)**
Only found https://www.canva.com/embeds/ and https://www.canva.dev/blog/engineering/how-canva-makes-content-embeddable-and-why-you-should-too/ about this
**Does the oEmbed endpoint work with WordPress’ oEmbed auto-discovery? If not, could it be made to work with additional HTML tags or attributes being added to the allow-list?
**
oEmbed discovery does not work for Canva because the meta tag is very far down in the page source and WP only parses the first few KB of the response.
**Does the service make an effort to build relationships with developers, such as through robust APIs?**
Not sure. They do seem to have good dev docs and an engineering blog.
**How old is the service?**
Over 10 years old.
**Does it have a well-established Wikipedia article? (Seriously.)**
Yes. https://en.wikipedia.org/wiki/Canva
**Has anyone written a WordPress plugin that leverages the service in some way, whether adding it as an oEmbed provider, creating a shortcode, or leveraging other APIs of the service? Do these plugins have any noticeable adoption or traction that would indicate usage and demand?**
Years ago they had their own official WordPress plugin but it has been abandoned: https://wordpress.org/plugins/canva/
**Is the provider frequently proposed?**
First time AFAIK." swissspidy
Future Releases 40776 "Feature request : Need class parameter for ""Twitter"" embed share" Embeds normal normal Awaiting Review enhancement new 2017-05-16T06:47:48Z 2019-04-25T13:08:46Z "'''Note:''' Twitter embedded share already working nicely. This is an only feature request.
I want to update twitter embed share, but I can't edit or modify that default twitter embed share because it's an iframe.
''For example'', I want to make twitter share as a 'center aligned' within my content area when writing blog posts.
(There are number of possibilities as well.)
Yes, I found the solution for twitter share center alignment. We need to add one class with iframe - '''''tw-align-center''''' but there is no input box/area available in popup where I can write down my custom classes.
Please check this screenshot for more detail - https://d.pr/f32E0" sanjaydabhoya
Future Releases 30720 In editor, add a button to refresh/invalidate (oEmbed) embeds cache Embeds 4.0 normal normal Future Release enhancement new 2014-12-15T15:53:31Z 2017-10-20T13:29:18Z "The inline embeds previews in WP4.0 are great, however have one major flaw:
One user enters the URL, and preview is generated via oEmbed, the embed code is cached for a day for that URL. There is no way for the author to invalidate it.
It generally works well, but not when user wants to experiment with different oEmbed-related plugins or settings. To keep great function, yet make it more straightforward for the user to control the flow, I'd suggest the following.
'''Shall we add a button ""reload"" to the inline previews of the embeds? And/or ""reload"" button in the Edit Embed dialog?'''
I trust it is a great answer to the problem and fits the user experience well.
We are the authors of [https://wordpress.org/plugins/iframely Iframely] plugin. The supports issues we get since WP4.0 mostly relate to oEmbed cache. But such approach will also answer the needs of other devs and users, for example #30282." ivanp
Future Releases 43713 Privacy: Add a UI to allow administrators to disable individual embeds / oembeds Embeds 5.1 normal normal Future Release enhancement new 2018-04-06T16:28:33Z 2019-09-27T16:20:25Z "Builds on protecting our users from tracking that was introduced in https://core.trac.wordpress.org/ticket/41784
Embedded iframes allow 3rd parties to collect user's IP addresses and User Agents, to store and retrieve cookies on their browsers, to embed additional third party tracking, and monitor their interaction with that embedded content, including correlating your interaction with the content with their account with that service, if they are logged in to that service.
That means, especially when EU residents are visitors, that all that needs to be disclosed in the site's privacy policy.
To further improve site's users privacy, and give site owners more control over how their user's privacy is impacted (and how many 3rd party services they would need to disclose in their site's privacy policy) we should allow administrators to disable any/all embeds on their site.
This UI could live alongside the privacy page setting controls recently added to core." allendav
Future Releases 38128 Twitter Embed - Enhancement change theme Embeds lowest normal Future Release enhancement new 2016-09-22T13:34:18Z 2023-05-30T08:59:36Z "I would like to suggest to add a option to set the twitter embed theme.
Currently you only can use the standard White Theme, some possibility to customize it to dark as example for dark sites would be great." Deexgnome
Future Releases 39918 Whitelist audioBoom oEmbeds Embeds 4.8 normal normal Awaiting Review enhancement new 2017-02-20T11:00:33Z 2023-05-30T09:50:56Z "{{{
sandbox=""allow-scripts""
}}}
is disabling links within our iframe player on some wp sites, try the social icons on the audioBoom player in this article http://www.niemanlab.org/2017/02/in-a-chaotic-presidency-civics-101-is-giving-listeners-a-reintroduction-to-how-the-u-s-government-works/.
What are the steps to getting audioBoom whitelisted so that no changes are made to the oEmbed codes?
" arunaudioboom
Future Releases 39850 WordPress embedded links drop query vars from URL Embeds normal normal Awaiting Review enhancement new 2017-02-11T23:02:51Z 2017-02-11T23:29:04Z "When embedding a WordPress page within another post, any query strings that are passed in the URL get dropped.
For example, if embedding http://example.com/page-name/?foo=bar, the actual URL that gets passed to the oEmbed function (and later on to the template files) is http://example.com/page-name/embed/ (foo=bar gets dropped).
The link inside the blockquote also drops the url query variable and links to http://example.com/page-name/ instead of http://example.com/page-name/?foo=bar
As I see, this occurs because the `wp_filter_pre_oembed_result` function in `embed.php` uses `url_to_postid` to get the embeded post's ID, and later `get_post_embed_url` uses that ID to create the embed permalink. So naturally any url query vars are not preserved in the final URL construction.
Similarly in `get_post_embed_html`, the function uses `esc_url( get_permalink( $post ) )`, thus reconstructing the permalink without knowledge of the initial url.
I encountered this when embedded a specific photo gallery (from nextcellent plugin), but I assume some other plugins such as language/translation ones may also be affected.
I don't think the URL's should be dropping any of the query variables.
However, if that is a requirement, it would be good to also pass on the original url in the `post_embed_url` hook to allow plugin developers to make sure to add any parameters from the original url that got dropped off in the embedded url." charleslf
Future Releases 46537 Can't use Emoji in the Custom HTML widget SergeyBiryukov Emoji 4.8.1 normal normal Future Release defect (bug) reopened 2019-03-16T07:21:54Z 2019-10-09T17:15:11Z Type emoji. Then the cursor does not move. hirofumi2012
Future Releases 46404 Emoji detection not working on Android 8.1/Chrome 72 Emoji 5.1 normal normal Future Release defect (bug) assigned 2019-03-03T08:49:30Z 2021-01-14T20:24:22Z "On my phone with Android 8.1, emoji detection script doesn't seem to work.
I have created this site based on wp-themes.com for demo:
https://output.jsbin.com/teyocehaci
Here's how it displays.
[[Image(https://i.imgur.com/K8n0WU3.png)]]
The two emoji are: Man Facepalming: Light Skin Tone and Woman: Medium-Light Skin Tone, Red Hair
The first emoji displayed is native, implying that the test thinks that the browser supports Unicode 11.
" superpoincare
Future Releases 58663 Emoji: Consider eliminating expiry-based invalidation of wpEmojiSettingsSupports sessionStorage cache Emoji 6.3 lowest trivial Future Release defect (bug) new 2023-06-28T20:06:05Z 2023-07-19T16:09:30Z "Currently the results of the emoji-loader's tests for whether or not emoji are supported get cached in the browser's `sessionStorage` for 1 week. For most users, this expiration will never be reached since the browser tab would be closed and the `sessionStorage` cleared anyway. For the minority of users who keep a single tab open for weeks at a time, including those who restore tabs after installing an OS update, there can be scenarios where (1) the OS or Twemoji was updated to support emoji but the cache causes Twemoji to still be loaded, or (2) the emoji support was not changed and yet the browser re-checks support after a week unnecessarily.
See [https://github.com/WordPress/wordpress-develop/pull/4562#discussion_r1243983163 GitHub pull request discussion] for more context and possible solutions.
Nevertheless, as of #58472 the emoji tests have been greatly optimized so the cost of re-calculating support unnecessarily is not a meaningful performance hit, especially since ever since emoji support was introduced until now, the tests were being run on every page load anyway. This may not be worth the effort to resolve." westonruter
Future Releases 56784 Optimization in wp_staticize_emoji function Emoji 6.0.2 normal normal Awaiting Review defect (bug) new 2022-10-10T17:26:32Z 2022-12-05T19:16:19Z "In the `wp_staticize_emoji` function there is a piece of code which seems to be there to optimize the process, but in fact does the opposite.
The piece i'm writing about:
{{{
// Quickly narrow down the list of emoji that might be in the text and need replacing.
$possible_emoji = array();
foreach ( $emoji as $emojum ) {
if ( false !== strpos( $text, $emojum ) ) {
$possible_emoji[ $emojum ] = html_entity_decode( $emojum );
}
}
}}}
Feeding all of 3575 emoji enitities into `strpos` function generates much more overhead than passing all existing emojis for further processing. This can be easily observed by entirely skipping the `false !== strpos( $text, $emojum )` check and adding all entities to `$possible_emoji` array – the whole execution of the `wp_staticize_emoji` function becomes nearly 10x faster. This effect happened to me every time I tested it no matter the content or length of the passed text." kac1per
Future Releases 42428 wp-emoji pops up privacy hanger in Firefox with privacy.resistFingerprinting turned on Emoji 4.1.2 normal normal Future Release defect (bug) new 2017-11-03T09:56:10Z 2018-06-14T18:31:33Z "This isn’t really a bug, but worth reporting anyway.
wp-emoji uses a technique that’s often used by trackers for fingerprinting clients: reading canvas pixel data. For them, differences in OS and graphics drivers can lead to subtle differences when text is rendered to a canvas. This means that when they hash data read out of the canvas with text on they have another datapoint to identify a client.
To work around this, Firefox has recently uplifted a technique from TOR Browser. If you visit a site that tries to do this it’ll pop open a hanger asking for the user’s permission. You can test this by downloading a copy of Firefox Nightly, going to about:config and setting privacy.resistFingerprinting to true. Which brings us on to WordPress…
Unfortunately the default wp-emoji package also uses this technnique, which triggers a browser warning on a large number of sites I visit on a daily basis. While I doubt that WordPress is using this for user tracking, it means that sites that are being nefarious get lost in the WordPress noise. This is a shame, but also I would imagine that it would be hard for Firefox to turn this on by default given the number of sites out there using Wordpress.
What I’d like to suggest is that:
1) wp-emoji is reviewed to see whether this technique is necessary for its functionlity. Can it be updated to use some other technique?
2) wp-emoji is considered for removal by default. According to the docs wp-emoji ‘will convert the often greyscale Emoji characters to colored image files.‘ Is this really a problem with the current set of browsers?
" robinwhittleton
Future Releases 37788 dns-prefetch s.w.org conditionally via javascript Emoji 4.6 normal normal Awaiting Review enhancement new 2016-08-23T10:31:12Z 2023-06-07T05:54:00Z "For many users, dns-prefetch to s.w.org is not needed if they aren't using Jetpack or any plugin which connects to it. It's because:
1. A page may not have an emoji
2. Even if the page has it, the browser may support emojis. Going forward the support will increase.
Hence I propose the dns-prefetch to s.w.org be made only if the feature detection detects wp-emoji-release needs to be loaded or if possible page needs an emoji svg.
" superpoincare
Future Releases 57451 Cross Site Request Forgery on Admin of any wordpress site to export files Export normal minor Awaiting Review defect (bug) new 2023-01-12T13:13:23Z 2023-03-20T04:34:24Z "[Marked as No Impact By WordPress Hackerone Team]
Cross-Site Request Forgery (CSRF) is an attack that forces an end user to execute unwanted actions on a web application in which they’re currently authenticated. With a little help of social engineering (such as sending a link via email or chat), an attacker may trick the users of a web application into executing actions of the attacker’s choosing
Steps To Reproduce:
1. Login to WordPress Backend as an Admin
2. Go-to Tools > Export > Select what to export
3. Select the Data you want to export. Capture this request using a web-proxy like BurpSuite
4. Since this is a GET request, Copy the URL to which request is made.
5. Send this URL to another admin or user with equal rights.
6. When he clicks on the URL, he shall download the file automatically.
The endpoint vulnerable:
`http:///wp-admin/export.php?download=true&content=all&cat=0&post_author=2&post_start_date=0&post_end_date=0&post_status=0&page_author=0&page_start_date=0&page_end_date=0&page_status=0&attachment_start_date=0&attachment_end_date=0&submit=Download+Export+File`
Recommendations
Enforce CSRF protection like wpNonce Token for file export endpoint.
Impact
Unauthorised File Download on an administrator's PC
An attacker can write a script which sends 100s of GET requests at once to the endpoint, and share the script to another user, and when he downloads 100 files at once, it shall also consume his disk space" f41z4n
Future Releases 59716 Deprecated messages exporting post meta with meta_value null from PHP 8.1 Export normal normal Awaiting Review defect (bug) new 2023-10-24T13:55:00Z 2023-10-30T18:20:11Z "Today I attempted to export some products from one database to import into another.
I encountered several Deprecated messages emanating from code within `wxr_cdata()`
It appears that the export code doesn't specifically cater for meta data with null values.
Prior to PHP 8.1 the null values were treated as empty strings.
There are several plugins that are ''guilty'' of producing post meta data containing nulls. Two of them are in the top 12 plugins by total downloads: All-In-One-SEO-Pack and WooCommerce.
=== Actual output
Here's the exported post meta for WooCommerce's `_stock` field.
{{{
Deprecated : strlen(): Passing null to parameter #1 ($string) of type string is deprecated in C:\apache\htdocs\gardenvista\wp-includes\formatting.php on line 885
Deprecated : str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in C:\apache\htdocs\gardenvista\wp-admin\includes\export.php on line 207
}}}
Both of these Deprecated messages can be avoided by a simple change as the first line of `wxr_cdata()`
{{{
if ( null === $str ) {
$str = '';
}
}}}
=== Expected output:
- The export should complete without producing the Deprecated message output in the post meta value.
- Null values should continue to be treated as empty strings
=== Environment:
- PHP 8.1.23 or PHP 8.2.10
- WordPress 6.4-RC1
- Plugins: WooCommerce and/or All-In-One-SEO
" bobbingwide
Future Releases 52815 Wrap long Category name drop down when export post on export.php screen Export 5.7 normal normal Awaiting Review defect (bug) new 2021-03-15T06:24:12Z 2021-03-15T15:55:18Z "Hi
When our category name long then getting UI issue. You can see mentioned screenshot.
Thank you." sumitsingh
Future Releases 36340 Other options ignored when using a custom post type with export_wp() Export normal normal Future Release enhancement new 2016-03-25T22:17:35Z 2020-07-06T14:09:01Z "While writing the improved docblock for `export_wp()`, I noticed something that may be an issue when a custom post type is supplied.
For the built-in post types you can filter the exported content by start date, end date and/or author. But not with a custom post type: with them it's everything. Is this by design?
The fix could be to modify line 113 to include the custom post type option because by that point we know that it's both valid and `can_export` is true thanks to the stuff starting on line 88.
I don't use this code myself but it did jump out at me. Thoughts?" theMikeD
Future Releases 26311 Updated (responsive) Tools -> Export admin screen Export 3.8 normal normal Awaiting Review enhancement new 2013-11-29T05:02:40Z 2019-02-26T02:25:27Z "Updated Tools -> Export admin screen
Switched from un-ordered lists based html to tables based HTML based on Permalinks admin screen.
''No javascript was harmed in this patch...''
" netweb
Future Releases 40158 Plupload bug with Firefox and Mac OS where the user can't select .jpeg files azaozz External Libraries normal normal Future Release defect (bug) reviewing 2017-03-15T10:32:54Z 2017-09-01T12:13:28Z "NOTE: Core currently uses Plupload version 2.1.8, this bug is solved in version 2.2.1 + (latest stable is 2.3.1).
'''The bug'''
If plupload is limited to jpg/jpeg images and a user using FireFox and Mac OS tries to select images, all the .jpeg images are grayed out and not selectable, a user can select .jpg files but not .jpeg ones.
'''Bug Example'''
(You need to be running FireFox on Mac OS to recreate)
http://jsfiddle.net/sr8jarsc/1/
'''Solution'''
Update the Plupload version to 2.2.1 or greater
Example: http://jsfiddle.net/mr31zw6L/1/" stiofansisland
Future Releases 52926 mobile compatibility library sortable list input field ignores touch event External Libraries 5.7 normal normal Awaiting Review defect (bug) new 2021-03-27T03:54:44Z 2021-05-26T02:22:35Z "The ability to edit a WP backend menu item custom url input field has not worked on my iPad iOS 14.4.1 using Safari and Chrome. Any text input field simply doesn't respond. Select choice list controls recognize touch.
I am using Admin Menu Editor Version 1.9.9 plugin.
On Mar 26, 2021, at 08:56, Janis Elsts wrote:
Unfortunately, it looks like it's currently not feasible to fix this issue.
It appears that problem is in one of the JS libraries that is part of WordPress itself. It's a mobile compatibility library that's supposed to translate touch events into simulated mouse events. It doesn't seem to work correctly when you tap an input field that's inside a sortable list, like the menu item list in Admin Menu Editor.
I don't have enough mobile development experience to replace the existing JS library with something better, so this bug may remain unfixed until/unless WordPress core developers fix the underlying issue." edtorrey
Future Releases 42780 Code Editor: Linter (HTMLHint) should show error if checkbox doesn't have associated External Libraries 4.9 normal normal Future Release enhancement new 2017-12-03T17:32:45Z 2020-12-04T16:34:45Z "The Custom HTML Linter should show an error if an checkbox field does not have an associated label element. This would be a good improvement for accessibility.
To reproduce:
1. Create a custom HTML widget
2. Enter the following code:
{{{
Checkbox Label
}}}
3. No warning/error appears. " shooper
Future Releases 59580 Test_Diff: sync with upstream External Libraries normal normal 6.6 enhancement new 2023-10-10T11:11:54Z 2024-02-17T14:23:27Z "Follow up on ticket #58298.
The `Text_Diff` library, as included in WP, is an external dependency, which hasn't been kept up to date with the original source - i.e. with ""upstream"".
The WP local version has also received some WP-only patches, typically for issues related to compatibility with new PHP versions.
It should be investigated if there are changes upstream which need to be included in the WP version of the library and if the WP version of the library contains any fixes which aren't included yet upstream and should be (and don't have an open pull request upstream).
Relevant parts from the conversation in #58298:
@SergeyBiryukov in https://core.trac.wordpress.org/ticket/58298#comment:3:
> > The `Text_Diff` library is an external dependency, however, AFAIK it is no longer externally maintained.
>
> The [https://github.com/pear/Text_Diff pear/Text_Diff] project on GitHub had a release in 2019 and appears to have [https://github.com/pear/Text_Diff/commit/14a70077f643739639845cebaea36a58d647b8c7 recent commits], though is indeed no longer actively maintained, as it has been deprecated and superseded by [https://github.com/horde/Text_Diff Horde_Text_Diff].
>
> We could probably consider switching to the newer package. On at least one occasion though, we encountered a bug in the upstream version, see comment:5:ticket:41526, that was patched using a different approach in [42028] / #41526. As far as I can tell, there were [https://github.com/horde/Text_Diff/commits/master/lib/Horde/Text/Diff/Engine/Native.php no further changes] upstream after the [comment:12:ticket:41526 commits in question], so the issue still exists there.
>
> I have not yet checked whether a [https://github.com/pear/Text_Diff/pull/7 similar fix for pear/Text_Diff] has the same issue.
>
> > I wonder if it may be prudent to create a repo to maintain this code as a package within the WP organisation ?
>
> Would it be worth comparing the current code in core with the [https://github.com/pear/Text_Diff pear/Text_Diff] version and checking if a switch would be possible? Otherwise, it looks like we may indeed have to continue maintaining this package for the time being, either in core or separately, to ensure compatibility with newer PHP versions.
@jrf in https://core.trac.wordpress.org/ticket/58298#comment:6:
> Yes, I think it would be very good if we could take the following actions (probably in a separate ticket though):
> * Compare the current version of the package in WP Core with the upstream version of `pear/Text_Diff`.
> * Compare the current version of the package in WP Core with the upstream `horde/Text_Diff` package.
>
> Based on the findings, discuss follow-up steps.
>
> If we'd decide to upgrade to either the newer version of `pear/Text_Diff` or to `horde/Text_Diff`, I do still think adding at least _some_ tests to safeguard the integration would be a good thing. That way we can also safeguard that the upgrade does not cause any avoidable problems (at least for those situations which we are testing for).
@oglekler in https://core.trac.wordpress.org/ticket/58298#comment:10:
> This open PR is addressing the issue we had fixed from our side: https://github.com/pear/Text_Diff/pull/8/files" jrf
Future Releases 59945 About the feed name specified in the add_feed() Feeds 1.5 normal normal 6.6 defect (bug) new 2023-11-22T02:51:18Z 2024-02-17T13:49:13Z "There is no restriction on the first parameter of the add_feed function, but if it starts with ""_"" it will not function properly.
{{{
function feed2_callback( $is_comment_feed, $feed ) {
header( 'Content-Type: application/xml; charset=UTF-8', true );
echo '';
?>
Test
wp_die
404
}}}
This is not a problem with the code I tried, but because the ""_"" at the beginning of the feed name is removed in the do_feed function.
{{{
function do_feed() {
global $wp_query;
$feed = get_query_var( 'feed' );
// Remove the pad, if present.
$feed = preg_replace( '/^_+/', '', $feed );
}}}
This process results in an action name of 'do_feed_' . **'feed2'** when $feed is '_feed2'.
Since this is not done in the add_feed function and the action name specified in the add_action function is 'do_feed_' . **'_feed2'**, it appears that the two action names do not match, resulting in the error indicated in the response.
Should I remove the leading '_' in the feed name in the add_feed function or not remove the '_' in the do_feed function?
In any case, I would like to see consistency in the handling of feed names.
" tmatsuur
Future Releases 51306 Add inline documentation for atomlib.php Feeds 5.5 normal normal Awaiting Review defect (bug) new 2020-09-14T08:09:30Z 2021-06-29T17:34:38Z Doc: Add $msg parameter entry for _p($msg) function anonymized_18274256
Future Releases 58798 Fix possible PHP warning in /wp-includes/feed.php Feeds 6.2.2 normal normal Awaiting Review defect (bug) new 2023-07-13T10:12:27Z 2023-11-27T12:36:13Z "If some plugins or themes use ""enclosure"" meta field as a one-line string, it results in PHP warnings:
PHP Warning: Undefined array key 2 in /wp-includes/feed.php on line 484
PHP Warning: Undefined array key 1 in /wp-includes/feed.php on line 494
It happens because there is no check of string content there:
{{{
foreach ( (array) get_post_custom() as $key => $val ) {
if ( 'enclosure' === $key && is_array( $val ) ) {
foreach ( (array) $val as $enc ) {
$enclosure = explode( ""\n"", $enc );
/ Only get the first element, e.g. 'audio/mpeg' from 'audio/mpeg mpga mp2 mp3'.
$t = preg_split( '/[ \t]/', trim( $enclosure[2] ) );
$type = $t[0];
/**
* Filters the RSS enclosure HTML link tag for the current post.
*
* @since 2.2.0
*
* @param string $html_link_tag The HTML link tag with a URI and other attributes.
*/
echo apply_filters( 'rss_enclosure', ' ' . ""\n"" );
}
}
}
}}}
**Proposal:**
Add checks if the enclosure is an array, and each item can be exploded into exactly 3 items:
{{{
if ( 'enclosure' === $key && is_array( $val ) ) {}
}}}
And this:
{{{
$enclosure = explode( ""\n"", $enc );
if ( 3 !== count( $enclosure ) ) {
continue;
}
}}}
" zahardoc
Future Releases 37763 Target server overload due to invalid RSS feed URL in RSS widget stevenkword Feeds 4.6 normal normal Awaiting Review defect (bug) assigned 2016-08-22T11:09:00Z 2017-10-26T18:31:00Z "Was roped into helping a friend figure out why a Wordpress site he managed was constantly registering 100% CPU usage. Turns out that they used the RSS widget and had it pointed to an RSS feed for their site. At some point the RSS feed had been deactivated and began generating a 404, and the server began getting four or five calls ''per second'' to the feed URL, effectively DoSing their own server. Although the widget was displayed on every page, they only average a few hundred unique visitors a day, so the number of requests from the widget far exceeded the number of page views.
I took some time trying to figure out why it might be doing this, but decided to stop looking through the trash WordPress code when I got to the fetch_feed() function. I just don't care enough. But I do care if there is a bug that causes that many requests when the feed URL returns a 404. I don't know how often feed names are changed or removed, but this could cause a huge number of unwanted requests.
My initial guess is that the SimplePie class is like ""oh hey a 404 how about I try again. oh hey a 404 how about I try again. oh hey a 404 how about I try again. oh hey a 404 how about I try again."" until it tires itself out. But like I said, too much trash code to care since I'm not getting paid to fix it.
Summary:
1. RSS Widget on page.
2. Invalid RSS feed URL, pointed to same server as page, returned a 404.
3. Generated a number of requests for the RSS feed that was substantially higher than the number of page views.
4. Caused 100% CPU usage on server." bstovall
Future Releases 49171 Trying to get property 'post_type' of non-object in wp-includes/link-template.php on line 682 Feeds normal normal Awaiting Review defect (bug) new 2020-01-11T17:19:45Z 2020-06-04T17:34:55Z "Hi there,
I believe this maybe a bug or at least an unchecked condition (post/page does not exist) throwing the above error. I have legit crawlers visiting that cause these errors.
Running 5.3.2. All plugins disabled (except for Health Check & Troubleshooting). Theme: Twenty.
How to re-produce : https://your.site.com/news2020/feed/atom/
It is key that the slug for the post/page does NOT (NO longer) exists.
Stack trace:
1. {main}() /Users/me/root/index.php:0
2. require() /Users/me/root/index.php:17
3. require_once() /Users/me/root/wp-blog-header.php:19
4. do_action() /Users/me/root/wp-includes/template-loader.php:13
5. WP_Hook->do_action() /Users/me/root/wp-includes/plugin.php:478
6. WP_Hook->apply_filters() /Users/me/root/wp-includes/class-wp-hook.php:312
7. redirect_canonical() /Users/me/root/wp-includes/class-wp-hook.php:288
8. is_front_page() /Users/me/root/wp-includes/canonical.php:498
9. WP_Query->is_front_page() /Users/me/root/wp-includes/query.php:456
10. WP_Query->is_page() /Users/me/root/wp-includes/class-wp-query.php:3879
PHP Notice: Trying to get property 'post_type' of non-object in /Users/me/root/wp-includes/link-template.php on line 682
A variant (same sort of problem) throws an error in class-wp-query.php with the following:
https://your.site.com/news2020/feed/
" ronald2020
Future Releases 47470 XML parsing error: undefined entity (revisited) Feeds 5.2.1 normal normal Awaiting Review defect (bug) new 2019-06-03T18:55:49Z 2019-06-03T23:45:13Z "After 10 years, bug #8464 seems to be back in 5.2.1
On a completely fresh install (no plugins, default theme) I added a tag with a ' (single quote) in the title. This converts to ’ in the feed title. This in turn, generates
{{{
This feed does not validate.
line 11, column 9: XML parsing error: :11:9: undefined entity
}}}
for the tag's feed on https://validator.w3.org/feed/
See https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2F2607.fr%2Ftag%2Flapostrophe%2Ffeed%2F for example" RavanH
Future Releases 43604 Add option to completely disable syndication feeds Feeds normal normal Awaiting Review enhancement reopened 2018-03-21T21:04:46Z 2019-01-16T06:50:09Z "Some site owners do not want to provide RSS/Atom/whatever feeds, for various reasons. Right now, there is no way to globally disable feeds. The current way to disable feeds involves:
- hiding feed URLs from the end user (by removing the ""Meta"" widget from the sidebar and removing the feed links from the header)
- filtering the functions that write the feed URLs
- disabling feed endpoints by deleting the array containing the feed types in WordPress core
- hooking in to the `do_feed_x` actions to redirect the user to a 404
See for example the instructions for disabling feeds one user provides [https://wordpress.stackexchange.com/questions/33072/how-to-remove-feeds-from-wordpress-totally here].
It would be nice if there was a setting in `options-reading.php` to disable syndication feeds altogether, which disables display and generation of the feeds across the whole site." seanleavey
Future Releases 50441 Allow CORS for RSS feed Feeds normal normal Awaiting Review enhancement new 2020-06-20T18:22:19Z 2021-10-08T06:59:23Z "I'm developing an in-browser RSS reader and want to get an RSS feed from my blog on WP.com but browser (both Chrome and FF) shows me the error:
{{{
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://wordpress.com/blog/feed/. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
}}}
Here is a small example to reproduce:
{{{
}}}
This is quite popular thing that a lot of peoples tries to do:
https://www.google.com/search?q=wordpress+feed+cors
That's one of the main reasons why most browser JS RSS readers requires to use a dedicated proxy server that will make a server to sever call to retrieve the RSS:
* https://github.com/sdepold/jquery-rss proxies RSS fetch via Feedr.
* https://github.com/enginkizil/FeedEk proxies RSS fetch via Feed API
* https://github.com/rbren/rss-parser uses https://cors-anywhere.herokuapp.com
The fix is easy:
{{{
add_action( 'pre_get_posts', 'add_header_origin' );
function add_header_origin() {
if (is_feed()){
header( 'Access-Control-Allow-Origin: *' );
}
}
}}}
But I wan't the fix to be added into WP trunk because my reader will mostly consume RSS from wordpress.com or many other WP blogs.
It should be fine to allow CORS requests to feed. The only one problem is a security concern. Hacker can make a DDoS by pasting on some popular site an tag with src to WP feed and this will produce a big load to WP instance.
But here we can add a simple check: when browser requests an image it sends the header `Accept: image/webp,image/apng,image/*,*/*;q=0.8` while JS RSS headers can set the `Accept` header manually to `application/rss+xml`.
Actually the rss-parser already sends the `Accept: application/rss+xml`. So on the server side we can just check that client requested exactly the feed and only then try to generate it.
As far I see this is something really important (because already used workarounds) and it should be easy to implement and safe to enable by default. So I'll set Major severity.
" stokito
Future Releases 33332 Default ACL entries are not set correctly when file is uploaded to WP Filesystem API 4.1.1 normal major Awaiting Review defect (bug) new 2015-08-10T22:21:08Z 2019-02-07T07:30:14Z "Hello there!
We are using ACL permissions on our server in order to isolate all websites from each other. Both nginx and php-fpm has it's own users. Actually, each website has it's own php-fpm user.
The ACL permissions are set for new files via default permission set:
{{{
getfacl -a ./sitename/wp-content/uploads
# file: sitename/wp-content/uploads
# owner: www-data
# group: www-data
user::rwx
user:nginx:r-x
user:fpm-sitename:rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:nginx:r-x
default:user:fpm-sitename:rwx
default:group::rwx
default:mask::rwx
default:other::---
}}}
So, when I manually create a file, the correct ACL permissions will be set for it by the filesystem itself:
{{{
$ sudo -u fpm-sitename touch test
$ getfacl ./test
# file: test
# owner: fpm-sitename
# group: fpm-sitename
user::rw-
user:nginx:r-x #effective:r--
user:fpm-sitename:rwx #effective:rw-
group::rwx #effective:rw-
mask::rw-
other::---
}}}
And nginx will be able to read and serve it.
However, when I upload a file through the WordPress it has no ACL entries at all.
I've looked through the code and the following part of the '''_wp_handle_upload()''' seems to be the culprit:
{{{
// Set correct file permissions.
$stat = stat( dirname( $new_file ));
$perms = $stat['mode'] & 0000666;
@ chmod( $new_file, $perms );
}}}
After commenting it out uploading works like a charm and proper ACL entries are set as expected.
We're using Ubuntu Server 14.04.3 LTS.
Cheers!" slavafomin
Future Releases 40195 No provision to set paths for sftp (ssh2) Filesystem API 4.7.2 normal normal Awaiting Review defect (bug) new 2017-03-18T13:36:00Z 2017-03-18T13:36:00Z "I have a server which has different paths for the web server verses when accessed via sftp and consequently updates fail with ""Unable to locate WordPress content directory (wp-content).""
According to this page [https://codex.wordpress.org/Editing%20wp-config.php#Enabling_SSH_Upgrade_Access] there are 3 options for this exact purpose: FTP_BASE, FTP_CONTENT_DIR, FTP_PLUGIN_DIR.
Setting these has no affect.
This is confirmed by turning on debug and the following error is generated:
""Installation failed: Looking for /usr/local/www/+++++/www/wp-content/plugins in /""
The ""wp-admin/includes/class-wp-filesystem-base.php"" file reveals the find_folder function only processes the overrides for ftp services.
{{{
public function find_folder( $folder ) {
if ( isset( $this->cache[ $folder ] ) )
return $this->cache[ $folder ];
if ( stripos($this->method, 'ftp') !== false ) {
$constant_overrides = array(
'FTP_BASE' => ABSPATH,
'FTP_CONTENT_DIR' => WP_CONTENT_DIR,
'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR,
'FTP_LANG_DIR' => WP_LANG_DIR
);
}}}
Seems to be a strange requirement on the ssh2 method that the paths must align exactly with the web server so I consider this a bug. Others may consider it an enhancement in which case it would be a good idea if the codex entry made it clear only ftp access methods support configurable paths (ssh must align with the webserver)." fsrs
Future Releases 59917 "On windows host using ftp, Undefined array key ""islink""" Filesystem API normal normal 6.6 defect (bug) new 2023-11-16T18:02:27Z 2024-02-17T13:48:42Z "Fresh install of wordpress 6.4.1
On windows host using ftp
steps to recreate:
1. Going to ""sitehealth"" page gives critical warning ftp credentials are missing for updates.
2. Google search suggested adding the following to the user added section of `wp-config.php`
{{{
define('FTP_USER', 'USERNAME');
define('FTP_PASS', 'PASSWORD');
define('FTP_HOST', 'FTP.EXAMPLE.COM');
}}}
3. After this, go back to site health page. It is giving the following warnings repeatedly:
{{{
Warning: Undefined array key 3 in C:\...\wp-admin\includes\class-ftp.php on line 457
Warning: Undefined array key ""islink"" in C:\...\wp-admin\includes\class-wp-filesystem-ftpsockets.php on line 695
Warning: Undefined array key ""perms"" in C:\...\wp-admin\includes\class-wp-filesystem-ftpsockets.php on line 700
Warning: Undefined array key ""islink"" in C:\...\wp-admin\includes\class-wp-filesystem-ftpsockets.php on line 695
}}}" antonmo
Future Releases 24780 Use error handlers rather than the error suppression operator Filesystem API normal normal Future Release defect (bug) new 2013-07-17T01:14:56Z 2023-09-07T09:39:17Z "In various places in core (and included libraries, such as pclzip, FTP and phpass), the error suppression operator is used to suppress warnings and notices. However, this also suppresses fatal errors, which makes it a huge pain for debugging.
The big one here is `fopen`, where it is used to suppress warnings when opening a handle fails. For normal files, this is fine since the only errors generated are warnings. When using streams and custom stream handlers, these can generate errors which are really hard to find with this.
(I ran into this with the App Engine plugin, where the SDK method generates a fatal error if the mode is `a`, which is used with error suppression in `win_is_writable()`.)" rmccue
Future Releases 59158 Altering Details block styles doubling .wp-block-details class in the output Formatting 6.3 normal normal Awaiting Review defect (bug) new 2023-08-21T12:32:34Z 2023-08-21T13:47:23Z "By defaut Details block styles outputs styles for inner paragraph like:
{{{
.wp-block-details>:not(summary) {
margin-block-end: 0;
margin-block-start: var(--wp--style--block-gap);
}}}
----
If I want to change margin-block-start on the block level styles I use:
{{{
.wp-block-details>:not(summary) {
margin-block-start: 0;}
}}}
BUT it outputs:
{{{
.wp-block-details.wp-block-details>:not(summary) {
margin-block-start: 0;}
}}}
----
HOWEVER,
If I use the same in the Additional CSS section of Styles Editor it produce expected:
{{{
.wp-block-details>:not(summary) {
margin-block-start: 0;}
}}}
" randewoo
Future Releases 43810 Apostrophe issue Formatting 4.9.5 normal normal Awaiting Review defect (bug) new 2018-04-19T13:31:05Z 2022-02-18T21:17:15Z "Take a look. Instead of to have normal apostrophe, we have open and close if is between tags
[[Image(https://i.imgur.com/c6QDmR5.png)]]
[[Image(https://i.imgur.com/1F1zfWj.png)]]" colomet
Future Releases 41304 Bad protocol sanitization in KSES for URLs NOT RFC 3986 compliant Formatting 4.8 normal normal Awaiting Review defect (bug) new 2017-07-13T10:41:29Z 2017-07-13T14:10:32Z "For URL's that are passed through the kses sanitizer.
As specified in RFC 3986, Section 3.3
The path component contains data, usually organized in hierarchical form, that, along with data in the non-hierarchical query component (Section 3.4), serves to identify a resource within the scope of the URI's scheme and naming authority (if any). The path is terminated by the first question mark (""?"") or number sign (""#"") character, or by the end of the URI.
If a URI contains an authority component, then the path component must either be empty or begin with a slash (""/"") character. If a URI does not contain an authority component, then the path cannot begin with two slash characters (""//""). In addition, a URI reference (Section 4.1) may be a relative-path reference, in which case the first path segment cannot contain a colon ("":"") character. The ABNF requires five separate rules to disambiguate these cases, only one of which will match the path substring within a given URI reference. We use the generic term ""path component"" to describe the URI substring matched by the parser to one of these rules.
So colon(':') is allowed inside URL's. When trying to split the URL like this:
{{{#!php
link some other content. Be careful with using the right quotes here!"" title=""Some title"">
}}}
converted to this:
{{{
link some other content. Be careful with using the right quotes here!” title=”Some title”>
}}}
Is it really so difficult to leave the content of the ""Text"" mode as it is?
Just to remind you, that W3C says ""attributes on HTML elements may have any string value"".
" s0what
Future Releases 38044 Make seems_utf8() RFC 3629 compliant. Formatting 1.2.1 normal normal Future Release defect (bug) new 2016-09-13T21:07:56Z 2019-04-09T21:41:24Z `seems_utf8()` should be made [https://www.ietf.org/rfc/rfc3629.txt RFC 3629] compliant. Currently it accepts overlong sequences and surrogates, which will cause PHP functions expecting valid UTF-8 strings to fail. gitlost
Future Releases 40191 Multiline post content with `<` as first character becomes malformed Formatting normal normal Awaiting Review defect (bug) new 2017-03-17T18:44:07Z 2018-03-02T07:58:24Z "Create a page/post with the following content:
{{{
< Hello
< Hello
< Hello
}}}
View the post, and `post_content` becomes:
{{{
< Hello < Hello < Hello
}}}" johnjamesjacoby
Future Releases 39190 RSS feed not valid: U+001A or 0x1a Formatting normal normal Awaiting Review defect (bug) new 2016-12-08T21:23:40Z 2019-01-04T09:45:50Z "I am not sure how is it possible, but one of our users copy/paste text from another website into TinyMCE and content is now filled with strange non-visible Unicode characters `U+001A` / `0x1a` (`001a` in JSON response).
It is not visible in TinyMCE or frontend, but it is saved in database and also RSS feed is considered as invalid (displayed without problem in browser, but characters are there).
RSS feed is processed by other custom scripts and we are receiving following messages (different validators):
`PCDATA invalid Char value 26`
`Input is not proper UTF-8, indicate encoding! Bytes: 0x1A`
I can replace those characters and add a check before saving content into database, but it should not be possible for users to break their feeds by copying content into TinyMCE?" pavelevap
Future Releases 6297 Unbalanced tags across more and nextpage tags Formatting 2.5 normal normal Future Release defect (bug) reopened 2008-03-19T09:55:50Z 2019-03-15T00:40:50Z "It's easy to produce broken front page markup by including a --nextpage-- tag that breaks an enclosing bold or italic tag. There's some code in get_the_content that fixes this for --more-- tags, but it doesn't handle --nextpage--, and it'd be more efficient to do it at post save time.
The enclosed patch fixes this by splitting the content into slices at those boundaries and separately balancing each slice. Balancing happens in the content_save_pre action. No filtering is needed on the output side for posts saved after this filter.
It was a bit of a struggle figuring out where to fit this but I think the solution is fairly clean. It includes a new split_nextpage() function that can be used instead of ad-hoc regexps for splitting a post into pages.
" tellyworth
Future Releases 55452 `safecss_filter_attr` removes background-images with URL parameters Formatting normal normal Future Release defect (bug) new 2022-03-23T21:41:18Z 2022-04-20T20:22:16Z "If you try to add a background-image using an inline style, and the URL has query parameters (specifically, an `&`), the background-image will be stripped from the content.
What seems to be happening: the `&` is encoded, and becomes `&`, and when `safecss_filter_attr` splits the `$css` into separate declarations, it does so just by [https://github.com/WordPress/wordpress-develop/blob/ee96cedcb891c6a6e5b7b30a6f1c247345161b88/src/wp-includes/kses.php#L2242 breaking on a semicolon], which breaks the URL value. For example, `background-image:url(https://fake.test/image.png?a=1&b=2);` becomes `background-image:url(https://fake.test/image.png?a=1&` and `b=2)`, and neither are valid CSS.
**To reproduce:**
Try adding this Media & Text block, which uses this image: [https://img.rawpixel.com/s3fs-private/rawpixel_images/website_content/a005-scottw-465.jpg?w=1200&h=1200&fit=clip&crop=default&dpr=1&q=75&vib=3&con=3&usm=15&cs=srgb&bg=F4F4F3&ixlib=js-2.2.1&s=06d4e5a9962096a6010029591ae36198 https://img.rawpixel.com/s3fs-private/rawpixel_images/website_content/a005-scottw-465.jpg?w=1200&h=1200…]
{{{
}}}
When you save and view the post, the background-image is gone." ryelle
Future Releases 39847 force_balance_tags not properly balancing < with and Formatting 4.7.2 normal normal Awaiting Review defect (bug) new 2017-02-11T19:12:04Z 2017-02-11T21:11:08Z "Given following HMTL code which includes the ''\['' and ''\]'' Latex delimiters:
{{{
\[<\] We
}}}
the output of '''force_balance_tags''' is
{{{
\[<\] We
}}}
which is not correct as the bold tags are unbalanced. Expected output should be the input string.
" jpmerx
Future Releases 40324 make_clickable doesn't work if url stands after an even number off spaces Formatting 4.7 normal normal Awaiting Review defect (bug) new 2017-03-31T11:49:56Z 2017-03-31T16:22:07Z "The function '''make_clickable''' doesn't work, if an even number of spaces is written before an url
Examples:
{{{
Test post http://de.wordpress.org -> 1 space = works
Test post http://de.wordpress.org -> 2 spaces = doesn't work
Test post http://de.wordpress.org -> 3 spaces = works
Test post http://de.wordpress.org -> 4 spaces = doesn't work
}}}
I tested it in WP 4.7 and 4.7.3
" wordpressrene
Future Releases 46966 urlencode query string parameters Formatting normal major Awaiting Review defect (bug) new 2019-04-17T22:09:07Z 2019-08-20T23:16:53Z "When adding query string arguments to a URL through add_query_arg() the arguments are not being URL encoded.
An example of this
{{{#!php
add_query_arg( 'autofocus[panel]', 'themes', admin_url( 'customize.php' ) )
}}}
The [ ] characters should URL encoded
Output:
/wp-admin/customize.php?autofocus[panel]=themes
Expected:
/wp-admin/customize.php?autofocus%5Bpanel%5D=themes
" developernichemarketing
Future Releases 46886 "wp_targeted_link_rel adds the rel attribute when the link has data-target=""""" Formatting 5.1 normal normal Awaiting Review defect (bug) new 2019-04-11T20:07:45Z 2019-04-13T13:58:32Z "To reproduce:
Create a link element (easiest to see bug in classic editor):
{{{
click here
}}}
Save the post, and the link will have the rel=""noopener noreferrer"" attribute.
" jakeparis
Future Releases 40202 wpautop bad code Formatting 4.7.3 normal normal Future Release defect (bug) new 2017-03-19T09:02:06Z 2020-05-21T05:41:09Z "post content
{{{
Text
}}}
generated markup - note wrong HTML
{{{
Text
}}}
related: #40135
" jim5471
Future Releases 43394 wpautop inserts extraneous line breaks if hard return around commented content Formatting 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-23T20:02:19Z 2020-06-15T00:19:38Z "Problem: If one has code comments before content in a WordPress post/page and there are hard returns before and after the code comment, WordPress will insert an extraneous line break. Further, if there are hard returns between multiple comments an extraneous line break will be added.
This problem can be reproduced by doing the following:
1. Edit a WordPress post or page.
2. Add a code comment with hard returns before and after it such as:
{{{
}}}
3. Publish/preview the page.
4. Use Inspect to examine the area where you placed the above comment and you'll notice an extra line break.
This may seem like a very edge case and a minor annoyance, but we ran into this issue recently when we had multiple code comments following each other like so:
{{{
Some regular content here.
Some regular content here.
}}}
An extraneous line break now becomes four line breaks.
This becomes quite confusing for editors as when they look at the post the extra returns are not apparent yet inserted when the page is actually posted.
I'm thinking that resolving this issue might also resolve many other cases of wpautop gone rogue.
My suggestion would be that wpautop be changed so that:
1. If there is a code comment with a hard return before and after the comment, it does not automatically add wpautop. (one can argue that this is behaving as expected, but I doubt many are thinking when they add a code comment that it will add a nice line break for them...and in any case, this can be much more obviously/easily remedied by inserting a in the editor if one truly did want a line break caused in this manner, whereas it can be quite time consuming to discover why extra line breaks are mysteriously appearing)
2. Similarly, with shortcodes, if the shortcode is tested valid then don't add line breaks with wpautop around the shortcode.
" davidshq
Future Releases 43313 wptexturise uses the wrong curly quote after a closing link tag Formatting normal normal Awaiting Review defect (bug) new 2018-02-14T10:29:02Z 2018-04-15T18:05:13Z "When an English possessive 's comes immediately after a closing link tag, wptexturise changes it to the wrong kind of curly quote mark.
'''To reproduce:'''
* Enter some text with a link followed by an 's in your post content, for example
{{{
BBC 's approach
}}}
* View the post in the front end.
'''What I expect'''
The filter replaces the straight single quote mark with a right curly apostrophe ’
'''What I see instead'''
The filter replaces the quote mark with a left curly apostrophe ‘
" andfinally
Future Releases 60544 Allow individual blocks to be excluded from `excerpt_remove_blocks()` Formatting trunk normal normal Awaiting Review enhancement new 2024-02-14T23:16:54Z 2024-02-14T23:16:54Z "In `excerpt_remove_blocks()`, it is possible to to filter the list of block names that should be included when generating excerpt text.
It should also be possible to selectively exclude (or include) individual blocks based on their individual attributes.
For this to work, a new filter would need to be inserted in `excerpt_remove_blocks()` and `_excerpt_render_inner_blocks()`.
I think it would then be enough to check with the existing logic as:
{{{
if (
in_array( $block['blockName'], $allowed_blocks, true )
&& apply_filters( 'excerpt_allowed_block', true, $block )
)
}}}
Then, if I added a custom attribute to a core (e.g. paragraph) block, I could add a filter to return `false` when that attribute was detected.
The current alternative for this is unhooking `wp_trim_excerpt()` from `get_the_excerpt()` entirely and then reusing it as forked code with an alternate version of `excerpt_remove_blocks()`." jeremyfelt
Future Releases 41458 Class gets stripped out when inserting a link in author biography box Formatting 3.5 normal normal Awaiting Review enhancement new 2017-07-27T16:44:55Z 2017-07-30T16:11:39Z "Class gets stripped out when inserting a link in author biography box
For example My link
becomes
My link " neodjandre
Future Releases 39724 Defining custom validation callbacks for tag/attribute values in wp_kses() Formatting 4.8 normal normal Awaiting Review enhancement new 2017-01-27T17:54:04Z 2017-06-17T11:00:12Z "This patch allows to define a custom validation callbacks to check tag/attributres values in `wp_kes()` etc.
The callbacks are defined through `wp_kses_allowed_html` filter. If a tag and/or tag attribute is a callable function/method, then it will be used to check/validate/process the value, for example:
{{{#!php
itemDescription = $printItemDescription;
}}}
But then the reviewers at Envato and other coding standards fans are not happy that at the template file I use:
{{{
=nl2br($itemDescription);?>
}}}
While following the concept of of 'escaping at the template' would could be instead 'esc_br_html':
{{{
=esc_br_html($itemDescription);?>
}}}
or with `fuction esc_html($text, $escapeLineBreaks = FALSE) {...}`
{{{
=nl2br(esc_html($itemDescription, TRUE));?>
}}}
I just see a lot of confusion and misinterpreation of escaping of text that has multiple lines, and there is NO function. And we should not do explode, implode, array_map things inside the template code, as the template is for designers, and ever CSS developer has to be able easily understand the template, so there so be no explodings, implodings.
" KestutisIT
Future Releases 33204 kses $allowedposttags should support microdata Formatting normal normal Awaiting Review enhancement new 2015-07-30T10:30:26Z 2018-11-15T13:27:39Z "It should support more attributes:
itemscope, itemprop, itemref, itemtype and itemid
check out https://en.wikipedia.org/wiki/Microdata_(HTML)#Global_attributes" wordpressplugindeveloper
Future Releases 40569 next_post_link parameters $format and $link, have default values that produce awkward to use output Formatting 4.7.4 normal normal Awaiting Review enhancement new 2017-04-26T02:45:16Z 2017-04-26T02:49:11Z "The default output when using the default next_post_link() is:
{{{
Post Title Linked here »
}}}
Note how the » is left outside of the linked text by default. I believe for most users this will cause a styling issue to fix as soon as you use this function, and otherwise, seems improper for a default output. I used next_post_link() with the following values to get what I think should be default output behavior
{{{
next_post_link( ""%link"", ""%title »"" );
}}}
Which outputs:
{{{
Post Title Linked here »
}}}
Note that the » is now inside of the linked text, and any css applied to the next post link will also affect the » by default, and no changes to function parameters would be required by users.
To implement this enhancement, I believe you would simply move the » into the default value for the $link parameter, and out of the $format parameter default value." bhartlenn
Future Releases 43205 Allow filtering the list of characters to be replaced by wptexturize Formatting normal normal Awaiting Review feature request new 2018-02-01T18:41:46Z 2019-01-16T06:43:09Z "I'd like to selectively disable the replacement of a subset of the characters replaced by wptexturize.
There are already filters to control which html tags & shortcodes are exempt from being texturized: `no_texturize_shortcodes` & `no_texturize_tags`.
I think a similar filter should exist to control which characters are texturized. This filter would take at least two parameters: `$dynamic_characters` & `$dynamic_replacements`.
I am interested in writing a patch if you'll consider it. Would this enhancement be acceptable?" cyclic
Future Releases 53096 Color Settings include alpha channel for transparency Formatting normal normal Awaiting Review feature request new 2021-04-27T08:31:13Z 2021-04-27T08:31:13Z "a good feature for Gutenberg could be to add the alpha channel for transparency wherever (if it's possible) where the user can select a background or a foreground color since it is used a lot from designers.
The best way is to add it as rgba first or/and as hexadecimal with the 2 digits in the end like #00000020 (black with 20 as hex for opacity)" fotisps
Future Releases 46241 Bug Report: Creating Multiple Gallerys with Gutenberg and Latest WordPress antpb* Gallery 5.0.3 normal major Future Release defect (bug) accepted 2019-02-12T17:55:22Z 2020-02-21T01:23:38Z "Problem: All images in media library are added to Gallery after creating a new Gallery on the same page and choosing to edit it.
Exact Steps to Reproduce:
1) Create a new gallery block using Gutenberg editor. Choose Upload and upload 3 images to the gallery.
2) Add a heading block to the page
3) Add another gallery block below that using the Gutenberg editor. Upload 3 new images to this gallery.
4) Once this is done, click the pencil icon to edit this gallery block
What happens:
You will see all the images in the entire media library are added and selected, and you have to manually deselect them. If you don't and hit Update Gallery it will add all of the images in the library to the gallery.
" starcrescendo
Future Releases 40692 Filter default image size in gallery Gallery 4.8 normal normal Awaiting Review defect (bug) new 2017-05-08T13:39:43Z 2020-09-21T11:10:24Z "Using the `media_view_settings` filter, I can specify default `link` and `column` settings for new galleries but the `size` parameter is not filterable. For example:
{{{
function me_filter_gallery_settings( $settings ) {
// This will successfully set the default number of columns to 5
$settings['galleryDefaults']['columns'] = 5;
// This does nothing
$settings['galleryDefaults']['size'] = 'large';
return $settings;
}
add_filter( 'media_view_settings', 'me_filter_gallery_settings' );
}}}
I know that it’s possible to override these defaults when outputting the gallery via the `gallery_shortcode`. However, this may be confusing to the user who would expect to see the same value for the image size appear when the gallery is generated on the front end as they have seen in the admin. To clarify: at the moment, I can set a default size for gallery images to ‘medium’, for example, although in the Gallery Settings panel in the page editor, the size will still display as ‘Thumbnail’. Indeed, the user could change the value of the size field without actually affecting the image size on the front end.
[[Image(https://catapultthemes.com/wp-content/uploads/2017/05/gallery-admin-default-size.jpeg)]]
In wp-includes/media-template.php replace lines 775 - 779 with:
{{{
foreach ( $size_names as $size => $label ) : ?>
"" <#
if ( '' == wp.media.galleryDefaults.size ) { #>selected=""selected""<# }
#>>
}}}
This will allow:
{{{
function me_filter_gallery_settings( $settings ) {
$settings['galleryDefaults']['size'] = 'large';
return $settings;
}
add_filter( 'media_view_settings', 'me_filter_gallery_settings' );
}}}
Thereby allowing plugin and theme developers to set a default value for the image size in galleries." Catapult_Themes
Future Releases 40811 Gallery drag and drop breaks layout Gallery 3.5 normal normal Future Release defect (bug) assigned 2017-05-18T23:40:24Z 2019-12-26T20:50:12Z "Starting with an example gallery:
[[Image(https://cldup.com/hcwGa3LYIW-3000x3000.png)]]
1) If I start dragging the nth item in a row, n blank spaces are created in the next row, eg:
[[Image(https://cldup.com/_Fbgdjcs1w-3000x3000.png)]]
2) The exception is when I start dragging the last item in a row - as soon as I start to drag, a blank space appears where the current item / the mouse is, and the actual item I am dragging appears a long way from the mouse (in the first position in the next row).
[[Image(https://cldup.com/8j0d3aCFrk-3000x3000.png)]]
This occurs in Firefox in Windows on a clean WordPress installation with no plugins installed. Testing in Chrome, I get the same results with the exception of dragging the 2nd or 4th item in a row, which work perfectly (1st and 3rd cause gaps; last breaks).
I expect this is due to rounding in some way, and it appears to differ based on the width of your browser. If I go into Firefox responsive view and set a width of 1366px, everything works perfectly. 1367px works for all but the last image in a row, while 1369px has everything broken." smerriman
Future Releases 41328 lightbox plugins cannot get image address to open except from image link Gallery 4.8 normal normal Awaiting Review feature request new 2017-07-14T14:43:04Z 2019-05-02T13:39:24Z "it would be good if you put image sizes specially for lightbox plugins.
it is already possible to edit A tag's href attributes manually by adding something like ""-768x1024"" but that endings differ for different images so it is not easy.
it is not possible to edit links of images of gallery at all, though it is possible to copy-past gallery code from preview's html source and then edit it manually.
by default single images and gallery images link to full version of image or to attachment page, and it is not possible to change to smaller version from gui.
it would be good if it would be possible to easily select smaller image from gui because as i said they can have different endings. and it would be especially more comfortable for galleries because it would change many links at once.
maybe it would be good to provide additional image address in additional attribute for usage by lightbox plugins. so A tags around image might link to full image or attachment as configured and lightboxes would get get image address from custom attribute." qdinar
Future Releases 59436 """The response is not a valid JSON response""" General 6.3.1 normal normal Awaiting Review defect (bug) new 2023-09-24T16:50:18Z 2023-09-24T16:50:18Z "After update to WordPress 6.3.1 I am not able to edit posts. I needed to install plug in which make on my page only classic editor. After trying to post/edit something without it, I get info: ""“Updating failed. The response is not a valid JSON response”.
I checked WordPress forum, and I am not the only one with the issue after 6.3.1 installation. I also perform troubleshooting describes in many articles like: tirn off all plug-ins or edit .htaccess file.
" egzaltowana
Future Releases 40899 '&' Is always escaped in the JavaScript template. General 4.7.5 normal normal Awaiting Review defect (bug) new 2017-06-01T08:41:12Z 2020-09-08T13:05:47Z "When I tried the JavaScript template, '&' was always escaped.
Source:
{{{
}}}
Rendering:
{{{
&
Unscaped: Wo &r'l""d
Escaped: W<i>o</i>&r'l""d
}}}
While checking the interpolation of the variable, '&' was always converted to '& amp;'.
Is this a specification or a bug?
" tmatsuur
Future Releases 40685 /wp-includes/class-wp-hook.php function resort_active_iterations not working correct General 4.7.4 normal normal Awaiting Review defect (bug) new 2017-05-06T19:23:26Z 2017-06-08T00:02:14Z "if you have current priority of 5, whose only hook is cancelling itself (remove_filter) and the new priority list is for example (2,7,12), then this part
{{{#!php
while ( current( $iteration ) < $current ) {
if ( false === next( $iteration ) ) {
break;
}
}
}}}
sets the current pointer to 7, so the next priority worked on is the 12 in apply_filters function, while it should be 7.
" tim2017
Future Releases 44070 Avoid flickering of admin notices General normal normal Awaiting Review defect (bug) new 2018-05-14T10:16:22Z 2018-05-14T12:50:11Z "Here's an example:
- Save settings on the ''General Settings'' page ({{{wp-admin/options-general.php}}})
- Then the ""Saved settings"" admin notice displays first above the page header.
- Then it moves below it, causing flickering.
The admin notices are moved with Javascript in {{{wp-admin/js/common.js}}}
{{{
/*
* The `.below-h2` class is here just for backward compatibility with plugins
* that are (incorrectly) using it. Do not use. Use `.inline` instead. See #34570.
* If '.wp-header-end' is found, append the notices after it otherwise
* after the first h1 or h2 heading found within the main content.
*/
if ( ! $headerEnd.length ) {
$headerEnd = $( '.wrap h1, .wrap h2' ).first();
}
$( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $headerEnd );
}}}
See ticket #35047 and changeset [36134]. Also ticket #34570 and changeset [35516].
The same happens for notices on the other admin ''Settings'' screens, like:
- {{{wp-admin/options-writing.php}}}
- {{{wp-admin/options-reading.php}}}
- {{{wp-admin/options-discussion.php}}}
- {{{wp-admin/options-permalink.php}}}
- {{{wp-admin/profile.php}}}
- {{{wp-admin/user-edit.php?user_id=123}}}
- ... etc ...
We should avoid this flickering, e.g. hide it with CSS and display it with Javascript?
I guess we should also consider the case if Javascript is turned off?
Related #43978 [https://core.trac.wordpress.org/ticket/43978 Avoid flickering on the Tools / Export page]
" birgire
Future Releases 39496 Can't view page preview. General 4.7 normal normal Awaiting Review defect (bug) new 2017-01-05T23:55:18Z 2017-04-15T20:19:15Z "Clicking any Edit link on the list of published pages (wp-admin/edit.php?post_status=publish&post_type=page), and then clicking the Preview Changes button on the edit page, I'm unable to preview the page. Instead I'm presented with the error message ""Sorry, you are not allowed to preview drafts.""
Expected result: Clicking the Preview Changes button shows me the page, including the WP Admin bar.
Actual result: Clicking the Preview Changes button shows me the error message ""Sorry, you are not allowed to preview drafts.""
Problem occurs when we use WP Core 4.7. Problem does not occur on WP Core 4.6.
Problem occurs when all plugins are deactivated and uninstalled.
Problem occurs on more than one theme." davidmlentz
Future Releases 42150 Cannot edit links with visual editor on chromium-based browser General 4.8.2 normal normal Awaiting Review defect (bug) new 2017-10-08T13:40:22Z 2017-10-10T21:06:31Z "Hi,
When I'm trying to edit links with visual editor on any chromium-based browser (Opera, Vivaldi and Google Chrome), the editor doesn't respond at all
[[Image(https://thumbs.gfycat.com/InfamousContentArchaeocete-size_restricted.gif)]]
But at the same time the link editor works perfectly on Microsoft Edge and Mozilla Firefox" 3liwa
Future Releases 43306 Creating site using wpmu_create_blog() without / prefixed with $path causes get_id_from_blogname() to fail. General 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-13T19:55:03Z 2019-04-01T22:10:10Z "The below code will result in `NULL`:
$id = wpmu_create_blog( 'example.org', 'example', 'neutralized', 1 );
$result = get_id_from_blogname( 'example' );
But the below code will result in an `int`.
$id = wpmu_create_blog( 'example.org', '/example', 'neutralized', 1 );
$result = get_id_from_blogname( 'example' );
The difference is in the 2nd snippet I prefix `$path` with a `/`. Without that being apparent in docs we should strip the need for the `/` or update docs.
I found this while writing a unit test, and you can see it changing below:
[[Image(http://aubrey.pw/d/2018/BoaRz4J88N.gif)]]" aubreypwd
Future Releases 59052 Deprecated: html_entity_decode(): Passing null to parameter #1 ($string) of type string is deprecated in wp-includes/widgets.php on line 1626 General 6.3 normal normal Awaiting Review defect (bug) new 2023-08-10T15:55:11Z 2023-10-06T09:25:03Z "Since the change to PHP 8.1 (from 8, WP 6.3 is now running, I get once a day, only while opening the dashboard this Warnings (repeating twice):
{{{
""PHP Deprecated: html_entity_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/xxx/wp-includes/widgets.php on line 1626""
}}}
Only once day I'm logged in. After reloading or new login on the same day, the Warning doesn't show up.
This happens on three different Installations.
On one Installation I deactivated all Plugins and changed the theme to fresh Twenty Twenty Two.
But still once a day the warning just after first login.
The Cron-Jobs running, are only from WP, see below.
Searched Google about this warning, I got no result about this warning in releation with ""html_entity_decode()"" & ""wp-includes/widgets.php on line 1626""
So, I'm not sure this is a known bug in WP Core onto PHP 8.1
Any suggestion would be welcome.
the Cron-Jobs running
""wp_privacy_delete_old_export_files,wp_privacy_delete_old_export_files(),""""once every hour""""
""recovery_mode_clean_expired_keys,WP_Recovery_Mode->clean_expired_keys(),""""once a day""""
""wp_https_detection,wp_update_https_detection_errors(),""""twice a day""""
""wp_version_check,wp_version_check(),""""twice a day""""
""wp_update_plugins,wp_update_plugins(),""""twice a day""""
""wp_update_themes,wp_update_themes(),""""twice a day""""
""wp_scheduled_delete,wp_scheduled_delete(),""""once a day""""
""delete_expired_transients,delete_expired_transients(),""""once a day""""
""wp_scheduled_auto_draft_delete,wp_delete_auto_drafts(),""""once a day""""
""wp_update_user_counts,wp_schedule_update_user_counts(),""""twice a day""""
""wp_site_health_scheduled_check,WP_Site_Health->wp_cron_scheduled_check(),""""once weekly""""
""wp_delete_temp_updater_backups,2023-08-16 16:33:02 6 Tage, wp_delete_all_temp_backups(),""""once weekly""""
publish_future_post,[7],2040-09-03 03:02:56 17 Jahre, check_and_publish_future_post(),one-shot,0" treibstoff
Future Releases 42642 Displayin page WP 4.9 General 4.9 normal normal Awaiting Review defect (bug) new 2017-11-20T15:10:06Z 2017-11-20T15:27:45Z "I prefer to display my pages on one column rather than on two, as default checked in WP.
It works fine with twentyseventeen theme and WP 4.8.3.
But it does not any longer works with WP 4.9.
So, I undergraded to 4.8.3 but what a work and waste of time.
Any idea about this bug solving ?
Jacques" jibe64320
Future Releases 46058 Extra database calls when use get_the_excerpt() and posts have images General 5.0.3 normal major Awaiting Review defect (bug) new 2019-01-21T23:49:51Z 2020-06-25T22:26:56Z "**To reproduce this issue:**
1. Install clear wordpress (5.0.3)
2. Create post with image in post content. Assign it to one category (e.g. ""uncategorized"").
3. Open this category page and check database calls in it (with get_num_queries()).
4. Add one more post with image in it - and database calls will increase with every additional post (+2 queries for 1 additional post).
**Info:**
1. This issue dissapear when you delete get_the_excerpt() from the category template.
2. This issue does not exist when posts have no image in it.
**The reason of this issue is in function get_the_excerpt():**
1. function get_the_excerpt() applies filter 'get_the_excerpt' in wp-includes/post-template.php:397
{{{#!php
post_excerpt, $post );
}}}
2. we have 'wp_trim_excerpt' by default for 'get_the_excerpt' in ""wp-includes/default-filters.php:172"":
{{{#!php
$attachment_id ) {
$image_meta = wp_get_attachment_metadata( $attachment_id );
$content = str_replace( $image, wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id ), $content );
}
}}}
" kg69design
Future Releases 60440 Fix limitation on tags/categories. General 6.4.3 normal normal Awaiting Review defect (bug) new 2024-02-05T12:30:24Z 2024-02-05T12:30:24Z "There is a hard limit of 20 tags returned. If a site has many many tags that include a specific string, when they use the type and search functionality in WordPress they don't get all the tags they expect returned.
Another limitation of how it currently works is; because it only returns max 20 results, the user tends to create a new tag when that tag already exists (but was not included in the 20 suggested results) so we get many duplicate tags.
The specific request is to alter the tag search functionality to return more tag results or offer the ability to return paged results.
We can see that default (20) is set here: https://github.com/WordPress/gutenberg/blob/2e01f2208e1e43492236684315f1654cb54e2973/packages/editor/src/components/post-taxonomies/flat-term-selector.js#L31" elenadosil
Future Releases 60716 "Font Library: Replace error message ""A font face matching those settings already exists"" with notice" General trunk normal normal Awaiting Review defect (bug) new 2024-03-07T03:25:56Z 2024-03-17T18:53:45Z If the font already exists, it is not an error, and should not scare the user. oglekler
Future Releases 40487 GUID contains more than 255 characters General 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-19T20:05:53Z 2017-04-19T20:35:13Z "My website had a strange problem: it couldn't save page edit's anymore. After saving a page, it said: your page is successfully saved (some Dutch translation) but it wasn't. I described everything in this post: http://stackoverflow.com/questions/42099222/wordpress-cant-edit-some-pages-anymore
I found a solution: increase the length of the GUID column in the post table to 500 characters." martenbiesheuvel
Future Releases 59546 Gutenberg invalid json due to UTF-8 character E2 80 AF General 6.3.2 normal normal Awaiting Review defect (bug) new 2023-10-05T10:02:37Z 2023-10-05T15:20:01Z "I just inserted a text on a page, hit publish and was getting an error, which states, that the response is not a valid JSON response.
Further Inspection showed, that this error is occuring, if the text has the following char in it:
{{{
U+202F e2 80 af NARROW NO-BREAK SPACE
}}}
Here is the plain text, the char is occuring betwenn ""auszuwerten"" and ""oder""
{{{
auszuwerten oder Werbung anzuzeigen.
}}}
" jungb
Future Releases 56854 I cannot edit comments thru admin menu General normal normal Awaiting Review defect (bug) new 2022-10-19T18:15:37Z 2022-10-19T18:22:09Z "After the the last update i cannot open the https://www.[mysite].com/wp-admin/edit-comments.php
I received an error 502. After I enabled the debug I saw this error:
SELECT COUNT(*) FROM wp_comments LEFT JOIN wp_posts AS wp_posts_to_exclude_reviews ON comment_post_ID = wp_posts_to_exclude_reviews.ID WHERE ( ( comment_approved = '0' OR comment_approved = '1' ) ) AND user_id = 2 AND comment_type != 'order_note' AND comment_type != 'webhook_delivery' AND wp_posts_to_exclude_reviews.post_type NOT IN ('product') AND wp_posts.post_type <> 'wc_user_membership' ORDER BY wp_comments.comment_date_gmt DESC
How I can address this problem?" strongwomancrushing
Future Releases 55110 In WordPress 5.9 Edit site navigation toggle tooltip issue General 5.9 normal normal Awaiting Review defect (bug) new 2022-02-08T06:09:01Z 2022-02-08T12:10:10Z "In WordPress 5.9 Edit site navigation toggle tooltip are displayed when we select template from
edit site select dropdown list > browse all template > Single Post
" multidots1896
Future Releases 41388 Insert Media window does not remember state for custom tabs, iframe bug General 4.8 normal critical Awaiting Review defect (bug) new 2017-07-20T16:13:27Z 2018-08-14T12:33:54Z "Hi! I use Edd plugin (easy digital downloads) and Amazon S3 plugin (https://easydigitaldownloads.com/downloads/amazon-s3/). After WordPress update to 4.8, I have encounted problem with filling my downloadable files.
I upload them via cyberduck and then create 5 instances of “add new price” – push “upload to file”, then – “Amazon S3 Library”. Before update I had to do so for first price – but next 4 prices pulled the path from the previous price – that was much easier and time-saving. Now – I need to enter whole path each time for each price. When I rollback to wordpress 4.7.5 – problem gone. Here is video that will describe my problem more clear – https://www.youtube.com/watch?v=GeaJrLYtMZI&authuser=0
I asked for help EDD team, but they say “'''''Unfortunately that issue is caused by a change in WordPress itself so is not something we can affect, sorry. It’s possible it was an accidental change with WordPress that will be resolved in a new update by the core WordPress team'''''.”" angel8888
Future Releases 39894 JS heartbeat can run before ready causing exception General 3.6 normal normal Awaiting Review defect (bug) new 2017-02-16T19:29:05Z 2017-07-03T21:29:52Z Sometimes where my page is loading slowly I can get the error attached, where the element isn't yet available. programmin
Future Releases 56178 Links got invisible in responsive devices. General normal normal Awaiting Review defect (bug) new 2022-07-08T10:44:48Z 2022-07-15T05:08:25Z "In WordPress 6.0 in the FSE while checking the menu on the smaller devices it appears that the color of the links is the same as that of the background so due to that they appear to be invisible.
Here is the short video of the issue:
https://www.loom.com/share/a2a4f0ea61314b1397b3ca206e3f67b6" hilayt24
Future Releases 57951 Multisite filters not filtering General 6.1.1 normal normal Awaiting Review defect (bug) new 2023-03-19T15:33:41Z 2023-03-22T14:33:58Z "I have a multisite with over 200 folder based sub-sites.
When I am on the /wp-admin/network/sites.php page, the public filter at the top of the page do not filter as expected.
This is my current list: All (258) | Public (226) | Archived (11) | Deleted (9)
When I click on Public filter, I still see both Archived and Deleted in the list of filtered sites. I suppose that I expected to only see those that were not archived or deleted, as they have their own filters.
I may be misunderstanding the point of a ""Public"" filter.
Thank you.
" richardkrone
Future Releases 58859 On pattern edit page not able to open settings panel after close it General normal normal Awaiting Review defect (bug) new 2023-07-20T07:22:57Z 2023-07-20T07:22:57Z "I am trying to edit the pattern and found an issue with the setting panel.
Once I closed the settings panel not able to open it by clicking on the setting icon at the top right corner
Here I am adding a video
https://www.awesomescreenshot.com/video/19274744?key=3fab6b5bb4b249bf197c388f6b47d24e" mikinc860
Future Releases 60086 Picture size changing General normal normal Awaiting Review defect (bug) new 2023-12-16T02:11:05Z 2023-12-16T03:38:54Z "Hi there,
I'm having issues with some images on my website ([nessapporo.com]). I want the images to be a certain size, and they look good on the desktop. When I check it on the smartphone, the image becomes elongated. How can I fix this?
Scott" nessapporo
Future Releases 39977 "Search results for custom post type = ""ANY""" General 4.7.2 normal normal Awaiting Review defect (bug) new 2017-02-27T20:58:56Z 2019-03-15T13:46:54Z "There is a bug for search results query for post type ""ANY"", any returns only page and post. If we use:
{{{#!php
$s,
'numberposts' => -1,
'post_type' => array('post','page','gallery')
);
$the_query = new WP_Query( $args );
}}}
Then works, also pre_get_post not working.
Debug info from QM:
{{{
order DESC
post_type any
posts_per_page 10
s Janis gallery
search_orderby_title
Array
(
[0] => wp_8b3200f070_posts.post_title LIKE '%Janis%'
[1] => wp_8b3200f070_posts.post_title LIKE '%gallery%'
)
search_terms
Array
(
[0] => Janis
[1] => gallery
)
}}}
If we use standart:
{{{
}}}
Then custom post types is not showed on search results. " foxsk8
Future Releases 55265 Setting colour in 5.9.1 General 5.9.1 normal major Awaiting Review defect (bug) new 2022-02-26T17:40:30Z 2022-04-27T07:59:39Z "Hi!
I have been used to changing the colour of text, headings and buttons by simply typing in the colour code; 043D06. This works on some things (advanced lists) but not on others (buttons, plain text, headings). I assume this is a glitch?
The option to change colour is there, so is the colour wheel and what seems to be a typing box but there is no way of typing in the required code. The only way to change colour is to hover over the colour wheel - it is impossible to pick the precise colour needed in this way.
" hicklingadmin
Future Releases 40334 Trim siteurl and homeurl General 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-01T19:20:34Z 2017-04-01T20:49:51Z "I have seen some sites accidently put new line or space end of the '''siteurl''' and '''home''' in the '''wp_options'''
So whenever WordPress defines constants like '''WP_CONTENT_URL''' its not trimming the '''siteurl'''
''/wp-includes/default-constants.php''
{{{#!php
function wp_plugin_directory_constants() {
if (!defined('WP_CONTENT_URL')) {
define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
}
}}}
If '''siteurl''' has the new line in the end and '''plugin_url()'''
gives the result as follow
{{{
https://example.com
/wp-content/plugins/myplugin/
}}}
As javascript is not supporting multiline string so it just broke my UI." thamaraiselvam
Future Releases 43100 Unexpected results from wpautop General normal normal Awaiting Review defect (bug) new 2018-01-16T19:01:25Z 2019-01-17T01:25:57Z "An empty paragraph will result in invalid HTML
To reproduce using default theme add `echo wpautop( '
' );` into a template file.
Expected result `
`
Actual result ``" pross
Future Releases 38098 Use common naming for context switching functions / classes General normal normal Awaiting Review defect (bug) new 2016-09-19T17:13:08Z 2017-04-04T16:12:55Z "I'm creating this ticket after discussions in #26511 and #25293. A quick overview:
As we all know, there are `switch_to_blog()` and `restore_current_blog()` to switch between different sites by adding the sites to the global `$_wp_switched_stack` and doing a bunch of other stuff.
Now, #26511 aims to introduce `switch_to_locale()` to do the same for the site's locale. To avoid using (too many) global variables, a `WP_Locale_Switcher` class was suggested. The locale names are stored in a stack as well
#25293 is about improving `switch_to_blog()` and introducing `switch_to_site()` as well as `switch_to_network()`. #37958 suggests using `Network_Sate` objects for the stack instead of simply the blog IDs.
#19572 is somewhat related as well, though I don't think a `switch_to_post()` function makes sense. Fun fact: `WP_Query` was once named `WP_Query_State`, see [1449].
----
Now, I want to suggest using some kind of naming convention for new `WP_Locale_State` and `WP_Site_State` / `WP_Network_State` classes to make things easier for developers. Those essentially do the same thing:
* Switch to a new state
* Add this state to a stack
* Pop an item off the stack
* Pop all items off the stack (#37958)
Solid naming is very important to avoid confusion. As mentioned, there are `switch_to_blog()` and `restore_current_blog()`. #26511 suggests adding `switch_to_locale()` & `restore_previous_locale()`. #19572 suggests `switch_to_post()` and `restore_post()`. Ugh.
The simplest solution for that is to introduce an interface that these new classes would need to implement. Basically something along the lines of this:
{{{#!php
Test
}}} tag for the sake of accessibility (screenreaders etc.) and semantic markup. My blog, for example, is in English, but some of the blogs linked to in my blogroll have foreign-language titles.
WordPress already allows adding tags like {{{}}} in the Title field of new blog posts, presumably for precisely this purpose, so this feature should be made available to the Links editor as well." CRCulver
Future Releases 40716 WordPress's magic quotes emulation doesn't slash keys like PHP's built-in magic quotes General 0.71 normal normal Awaiting Review defect (bug) new 2017-05-10T14:56:49Z 2017-06-06T06:48:41Z "PHP's built-in magic quotes feature [https://secure.php.net/manual/en/security.magicquotes.disabling.php#69024 not only slashed values, but also keys]. However, although WordPress emulates the magic quotes feature even when it is disabled/unavailable, it has apparently never slashed keys of the GPC arrays, only the values.
As a consequence of this, I was just dealing with a bug in a plugin that a user was experiencing on PHP 5.2, but I had never witnessed on newer versions of PHP (5.6, 7.0), which did not have magic quotes enabled.
The plugin POSTs data via Ajax that includes both keys and values containing backslashes. This data will be double-slashed by the magic quotes feature. So in the Ajax handler, this data is passed through `wp_unslash()`, and so the original, single-slashed values can then be utilized. However, `wp_unslash()` does not unslash the keys. When PHP's magic quotes are disabled, this is not a problem, because WordPress's magic quotes do not slash keys. But on older versions of PHP where magic quotes are enabled by default, PHP will slash both the keys and values, and `wp_unslash()` will not unslash the keys.
Data flow:
{{{
# WordPress's magic quotes emulation:
POST => Data containing slashes in keys and values posted.
add_magic_quotes() => Slashes in values are escaped.
wp_unslash() => Escaping slashes in values removed.
result: data is unchanged.
---
# PHP's magic quotes:
POST => Data containing slashes in keys and values posted.
magic_quotes_gpc => Slashes in values *and keys* escaped.
wp_unslash() => Escaping slashes in values removed.
result: values unchanged, keys still double-slashed.
}}}
In other words, there is an inconsistency in how data is slashes on different PHP configurations, despite WordPress's efforts to standardize it. The values are consistent in the way that they are slashed, but keys are not." jdgrimes
Future Releases 43665 XHR requests disregard the WP_DEBUG_DISPLAY flag General normal normal Awaiting Review defect (bug) new 2018-03-30T09:34:01Z 2018-03-30T10:41:17Z "Within `wp-includes/load.php` and the `wp_debug_mode()` method it does
{{{#!php
'xxxxx==',
'to' => 123456,
'text' => ""Prueba"",
];
$url = add_query_arg( $data , 'https://xxx.com' );
}}}
The $url you get is this: https://xxx.com?api_id=xxxxx=&to=123456&text=Prueba
The line 1142:
{{{#!php
myDynamicCallback(...);
self::myStaticCallback(...);
}}}
''**The 3 dots ""..."" are not omission - it is the syntax**''
Now this syntax actually works for `add_filter` however, it can fail (and I've encountered cases where it fails) for `remove_filter` which leads to very unexpected results.
Temporary bypass can be done using `remove_all_filters` or the old-school syntax `[__CLASS__, 'myStaticCallback']`.
The core issue is in the function `_wp_filter_build_unique_id` which generates the key under which the callback is stored, more specifically, in the way how the PHP's `spl_object_hash` work - this sentence from docs ""This id can be used as a hash key for storing objects, or for identifying an object, **as long as the object is not destroyed**.""
Now this is an educated wild guess, but I would guess that the callable objects created by the First-class callable syntax may not live that long and garbage collector can destroy them if it sees fit.
Anyways... the core is - `spl_object_hash` is NOT the right tool to cache ALL callables, but can only be used where the callable is passed around (e.g. stored in a variable) and therefore it is ensured it's still the same object (I would hope).
**Solution**
...for such cases is to create a `\ReflectionFunction` instance and check for `getClosureScopeClass()` and `getName()` :-)
https://www.php.net/manual/en/class.reflectionfunction.php
https://www.php.net/manual/en/reflectionfunctionabstract.getclosurescopeclass.php
https://www.php.net/manual/en/reflectionfunctionabstract.getname.php" jave.web
Future Releases 40687 pre_option_upload_url_path filter no longer working General 4.7.4 normal normal Awaiting Review defect (bug) new 2017-05-07T20:42:53Z 2019-08-16T15:34:05Z "“pre_option_upload_url_path” filter is not working since WP 4.7.
This is my use case that used to work like a charm before, it's pretty simple and seems like an issue in the {{{wp_upload_dir()}}} function in {{{/wp-includes/functions.php}}} file.
{{{
function cdn_url() {
return 'http://cdn.domain/wp-content/uploads';
}
add_filter( 'pre_option_upload_url_path', 'cdn_url' );
}}}
" QROkes
Future Releases 55486 register_block_type_from_metadata does NOT work within a theme but as a plugin General 5.9.2 normal minor Awaiting Review defect (bug) new 2022-03-30T01:02:26Z 2023-05-30T12:34:44Z "I created a wordpress block and it guides me to the official documentation and it came to work as an external plugin, taking into account the architecture of block.json for its use, however it has not worked for me when the block is required to be integrated into a theme, delivery wrong path request looking in plugin folder plus adding another path.
example error peticion
https://domain.local/wp-content/plugins/D:/xampp/htdocs/wp-content/themes/NewsPaper/inc/gutenberg/myblock/index.js?ver=d395fe5d9d90bd6565685c91d8d38888" andre3600
Future Releases 31350 size_format() Displaying Incorrect Unit General 4.1 normal normal Awaiting Review defect (bug) new 2015-02-16T19:32:10Z 2022-05-03T14:29:59Z The `size_format()` function is using binary standards for displaying a human readable version of the file size, shouldn’t we use the IEC standard of KiB, MiB etc for the unit, or convert to SI and use 1000 instead of 1024 as the value of bytes in a kB etc (ref: http://en.wikipedia.org/wiki/Kilobyte)? It was even noted that it was technically incorrect in the comments of the function: https://core.trac.wordpress.org/browser/tags/4.1/src/wp-includes/functions.php#L194 (If we do fix it, we need to take into consideration the whitespace in front of the 'B ' fixed in: [31052]) brashell
Future Releases 42683 widgets cannot be edited General 4.9 normal normal Awaiting Review defect (bug) new 2017-11-23T18:38:01Z 2017-11-23T20:41:04Z "after upgrading to 4.9, my widgets cannot be edited. All i see is just the buttons after each widget (save etc)
" fovos
Future Releases 43535 wp-mediaelement.min.js?ver=4.9.4:1 crashes, making the Widgets in customize.php unusable General 4.9.4 normal normal Awaiting Review defect (bug) new 2018-03-13T09:57:51Z 2018-03-13T10:29:44Z "When accessing **wp-admin/customize.php** with a live preview, I am unable to add menu items or to switch between ""Text/Visual"" for the text widgets. At the first sight, it seems to be a problem with Javascript.
The console looks like having an error with the media gallery - `Uncaught TypeError: Cannot read property 'indexOf' of null` (see screenshot for details).
[[Image(https://cloudup.com/cLbAt2w2Kas)]]
There is also a second error in the console - which does not seem related - but it may prove helpful: `Error parsing header X-XSS-Protection: 1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube: insecure reporting URL for secure page at character position 22. The default protections will be applied.`
I have also disabled live preview with a `die()`, the situation is the same - which makes me think the error is more related to the way media gallery interprets some part of the content while rendering customize.php. Everything works smoothly for **wp-admin/widgets.php** (no Javascript errors).
There may be other sections that are affected, but I can confirm these two:
* Widgets > Footer X > Any text widgets: cannot switch between Visual and Text (stays blocked on Visual)
* Menu > Main Menu > Add items: items are not clickable (and the first one is not folded).
Browser: Chrome 64.0" radual
Future Releases 43025 wp_list_filter should filter all iterable objects General 4.9.1 normal normal Awaiting Review defect (bug) new 2018-01-04T23:09:38Z 2018-02-11T17:49:28Z "#16499 introduced an issue which requires that data sent to `wp_list_filter` is an array. What it really means is the data sent to `wp_list_filter` should be iterable _like_ an array. By permitting both arrays and objects that are Transverable we can allow for anything that decends from the `\ArrayObject` class.
While there is an `is_iterable` method we _could_ use, it's only availabile in PHP 7.1 so the attached is friendly to PHP v4.2 and above
" jarednova
Future Releases 44259 wp_query: Post & Page Parameters doc section incorrect General normal normal Awaiting Review defect (bug) new 2018-05-29T13:15:46Z 2018-05-29T13:46:25Z "The [[https://developer.wordpress.org/reference/classes/wp_query/#post-page-parameters|Post & Page Parameters]] section of the code ref page for `WP_Query` contains the following incorrect text:
{{{
post_name__in (array) – use post slugs. Specify posts to retrieve. (Will be available in version 4.4)
}}}
The ""Will be available in..."" text should be removed since 4.4 was released long ago." pbiron
Future Releases 54893 wp_set_script_translations() accepts and evaluates ""],
}
}
}
}}}
== Recommendations
Escape JSON string ``
== Impact
* Attackers can inject any JavaScript code they like.
* Translation files can be provided from 3rd party(e.g. voluntary contributors), but hard to detect it's correct or not because they are written in foreign languages for the original authors." Takahashi_Fumiki
Future Releases 34778 A better indication of action happening on buttons. General 4.3.1 normal normal Awaiting Review enhancement new 2015-11-24T15:01:01Z 2020-03-16T18:34:19Z "It's from UX point of view - every single action button that when clicked the page is being refreshed or loads another has no clear way of showing this. A quick example can be the site setup process.
When you click submit for example, a simple blue shadow appears that show that something is happening, but this blue shadow is not very obvious (on a blue button) and is very similar to ""focus"" outline as default behaviour for buttons. I personally suggest one of two options:
One - gray out the button but still keep it clickable, that will show that the click has triggered something, but will also allow the user to click a second time which will deal with the case of having connection problems in the middle of request, where you can resend the settings once more without refreshing the whole page.
Two - same as before, but instead of making the button gray (or do) add small rotate dashicon to visually represent action.
The main reason i report this is because many times when i setup the site or work on the dashboard, clicking a button doesn't really show anything and i think for some reason i haven't clicked it or nothing is happening. Its purely for UX and to me it's not a small thing" xavortm
Future Releases 59916 API Docs: update comment endpoint does't have example request gavande1 General normal minor Awaiting Review enhancement assigned 2023-11-16T11:02:29Z 2023-11-27T18:39:26Z "**Details**
I noticed that the comment update API endpoint doesn't have an example request, even though the API document has a title for it.
**Link to doc**
https://developer.wordpress.org/rest-api/reference/comments/#example-request-2" gavande1
Future Releases 52998 Add a filter to paginate_links to allow bypassing merging query params General normal normal Awaiting Review enhancement new 2021-04-08T10:36:11Z 2022-04-05T15:03:15Z "The [https://core.trac.wordpress.org/browser/tags/5.7/src/wp-includes/general-template.php#L4154 paginate_links] function constructs the HTML markup used in archive pagination.
As part of this, any parameters present in the requesting URL are merged into the pagination links ([https://core.trac.wordpress.org/browser/tags/5.7/src/wp-includes/general-template.php#L4197 ref]).
This is a safeguard to ensure that any logic which relies on `$_GET` parameters in a paginated series still functions as expected as the user navigates through paginated states. E.g., a plugin may use query parameters to describe a date range in an archive; such as `/archive/page/2/?date_from=2001-12-20&date_to=2020-05-14`.
I'd like for theme/plugin authors to be able to disable/bypass this 'merging' process.
**The problem(s)**
The current behaviour makes it possible to request (paginated) archive templates with arbitrary, meaningless query parameters (e.g., https://wordpress.org/support/topic-tag/iframe/page/5/?cats=yes&dogs=no&cake=please&utm_tracking=broken). Those parameters persist through all subsequent paginated requests.
This bypasses caches, breaks digital analytics, and inflates crawling from third party systems (search engines, social media, etc), as it 'creates' many additional URLs.
Furthermore, because WordPress doesn't natively output canonical URL tags on paginated archives, this can be ''extremely'' destructive from an SEO perspective; particularly on large sites, where the 'existence' of many such URLs compounds the problems above. And whilst the presence of a canonical tag would mitigate ''some'' of that damage, it wouldn't address those other problems.
**A potential solution**
I propose that we should introduce a new filter into [https://github.com/WordPress/WordPress/blob/master/wp-includes/general-template.php#L4154 paginate_links] which allows theme/plugin authors to bypass the code block which merges in query parameters.
This could be used by sites/themes/plugins when they're confident that they don't need to persist queries.
The filter should accept a simple boolean value, which acts as a switch to skip the merging logic.
Alternatively:
- The filter could define a list of allowed/expected query params, or;
- The filter could restrict valid params to only include ''registered'' query vars.
** A note on the existing `paginate_links` filter**
Note that [https://github.com/WordPress/WordPress/blob/master/wp-includes/general-template.php#L4302 a paginate_links filter already exists] at the end of the function, but this only allows for manipulating the `href` attribute of the link. Whilst this could ''technically'' be used to ''strip'' parameters via brute force, this is cumbersome, and requires knowledge of the correct canonical URL (which WordPress doesn't natively/reliably have)." jonoaldersonwp
Future Releases 43319 Bootstrap 4 Card issue in backend General 4.9.1 normal normal Awaiting Review enhancement new 2018-02-14T16:35:15Z 2018-02-16T02:47:10Z "Hello,
While working in the back-end of WordPress, I noticed that a class of .card is being applied from forms.css which is located in wp-admin. Bootstrap 4 is coming out with cards in the next version. Right now I'm building a Card Builder for use at the CDC. This is causing issues with my card builder and we don't have a very good method of changing core wordpress files in our build process. Therefore, updates will be a nightmare. If the selector .card on line 766 of forms.css was scoped to have another selector in front of it, then we could avoid having to change WP core in our project.
For the sake of having this issue pop up again later in the future I would advise prefixing .card in forms.css with form or something else to make it scoped differently. This will help avoid issues with Bootstrap 4 being brought into the back-end of WP.
- Jim " jimboobrien
Future Releases 36034 Change post name permalinks to use ID when inserting links General normal normal Awaiting Review enhancement new 2016-03-01T21:34:02Z 2017-06-28T14:31:41Z "When using the visual editor, and your permalink setting is postname, the default behavior when adding an internal link is that the href attribute points to the slug. For example, if I add a link to a page with the permalink/slug of ""my-page"" the HTML link will be created as ` my page`.
This is fine until the slug of the target page (`my-page`) changes. Since WordPress doesn't do any checking when a slug is changed to see if there are any links pointing to it, the link is now dead. I propose that when adding links in the visual editor, that they be added based on the ID of the target, not the slug. This would prevent links from breaking whenever a slug was changed, and not affect the use of the post name in the URL. Even following ID-based links return the prettier post name version in the URL.
The code change is already available as a plugin or addition to functions.php from http://wordpress.stackexchange.com/questions/156032/how-can-i-store-page-id-in-a-post-instead-of-other-selected-permalink:
{{{
function wp_link_query_mod ( $results ){
if( count( $results ) ){
for( $i=0; $i Props to @rheinardkorf for finding http://glayzzle.com/php-parser/#demo !!
>
> On GitHub: https://github.com/glayzzle/php-parser
>
> I had previously stumbled across the https://github.com/glayzzle/php-linter project but it is empty. I didn't see the other project.
>
> This holds great promise. The only icing on the cake here would be if the parser could be told which PHP version to use, but we could get a list of language features that are added after PHP 5.2 and mark them as errors when the version of PHP on the server is not new enough. Amazing.
See more background on the original GitHub issue: https://github.com/WordPress/better-code-editing/issues/48" westonruter
Future Releases 41874 Code Editor: Extend CSS linter to check for safecss-forbidden properties General normal normal Future Release enhancement new 2017-09-13T18:18:06Z 2017-09-29T16:16:52Z "While there is a custom HTMLHint rule which checks for Kses violations, this does not extend to CSSLint and `safecss_filter_attr()`. It would be a nice enhancement to get illegal style properties flagged as lint errors as well.
Originally https://github.com/WordPress/better-code-editing/issues/60:
> The `safecss_filter_attr()` function is used by KSES to filter HTML `style` attributes, removing any properties that are illegal. This should be applied to CSS and `style` attributes in HTML, so that any illegal properties are flagged as such.
>
> It seems that HTMLHint is not currently applying CSSLint to `style` attributes, but if it did, then a `kses` rule added to CSSLint could then apply to both HTML and CSS.
This is for the code editor introduced in [41376] for #12423." westonruter
Future Releases 37699 Death to Globals Episode #1: A Registry, A Pattern General normal normal Awaiting Review enhancement new 2016-08-17T20:49:29Z 2021-01-14T10:48:12Z "Storing application state in globals is ... bad.
Using global state to store objects is ... bad.
Using globals to avoid writing classes is ... bad.
Using globals to pass data between functions is ... bad.
Training people to assume that globals will always be set to the value they expect is ... bad.
Globals are an artifact of a #dark-er time, think PHP 3. It would be nice if we didn't use globals. We have a backward compatibility strait jacket, but that shouldn't stop us from exploring ways to eradicate them.
We can start with class instances, because variables hold a reference to the actual instance when set. We can also start with a simple registry that allows us to create a data that can get / set globals for us (or not!). We can also add a few static methods onto `WP` to hide all of this away.
Attached is a POC that removes (every instance of?) `$wpdb` as a global, and instead uses the registry. Take a glance. All unit tests (seem to) pass.
This will evolve before it becomes a reality, but I encourage you to unleash your imagination unto a world where WordPress' codecase resembles something globallessly lovely.
" wonderboymusic
Future Releases 31603 Don't change $_SERVER['REQUEST_URI'] just to filter the current URL query string General normal normal Future Release enhancement new 2015-03-11T22:06:12Z 2021-07-17T14:25:44Z "While working on #23367, I found 14 places in core that overwrite `$_SERVER['REQUEST_URI']`, which causes problems when trying to use it elsewhere and I don't know which version is going to make an appearance.
I propose either switching from overwriting `$_SERVER['REQUEST_URI']` to using a local var when we need to, or creating a filter that's accessible everywhere if we need the modified value to use elsewhere." morganestes
Future Releases 48501 Enhancement: improve tertiary button styles General normal normal Future Release enhancement new 2019-11-05T17:41:20Z 2020-11-03T16:27:43Z "In WordPress, there are primary, secondary, and tertiary button styles, as shown below.
[[Image(http://cldup.com/L3baQu0gZK.png)]]
I think there is an opportunity to improve tertiary button styles, and document the rationale. Please forgive me, but I've seen discussions about ""link"" buttons or ""plain text"" buttons before, but I can't find them. Otherwise, I'd link them here. The only one I could find is an [https://github.com/WordPress/gutenberg/issues/15358 issue in Gutenberg], where a button was styled to look like a link. I'd like to prevent these issues in the future.
I did a bit of research to see how other design systems implement a tertiary button style:
[[Image(http://cldup.com/6OIfWseUGN.png)]]
A note I'd like clarification on, regarding accessibility and WCAG:
I've read that buttons need another visual indicator other that color to appear active/interactive. This is why sometimes you see tertiary buttons with ALL CAPS or an underline.
I've read the [https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html success criterion for non-text contrast] recently, and it seems that this might not be the case:
> This success criteria does not require that controls have a visual boundary indicating the hit area, but if the visual indicator of the control is the only way to identify the control, then that indicator must have sufficient contrast. If text (or an icon) within a button [...] is visible and there is no visual indication of the hit area then the Success Criterion is passed.
But it does seem like a ''recommendation'':
> Note that for people with cognitive disabilities it is recommended to delineate the boundary of controls to aid in the recognition of controls and therefore the completion of activities.
Here is the image they provide. Apparently both are ok:
[[Image(http://cldup.com/gvHYXQXz3O.png)]]
Does this mean that we don't need a visual boundary for buttons?
----
**With this information, I have a proposal for buttons**
Here are the options that I see for tertiary buttons:
- Plain text: This is what we currently do, but I believe we could make it look a tad more like a button.
- ALL CAPS: This seems like great solution — it provides another visual indication in addition to color. But there is some debate on whether or not all caps text is ideal. Some studies say it’s generally more readable. For some, it can be harder to read. It has been recommended that we don't use all caps in WordPress.
- __Underlined__: This makes the button look like a link, which we don't want to do.
- **Bold text**: This seems like a good solution too. It might be subtle, but I believe it's an improvement.
I propose that we go with the last option. Here's what that look like:
Semibold:
[[Image(http://cldup.com/8YaRMfZ74t.png)]]
Bold:
[[Image(http://cldup.com/nRwzpiTX8T.png)]]
In addition, I've found this on the use of italic, bold, and ALL CAPS from [https://webaim.org/articles/evaluatingcognitive/ webaim]:
> Use stylistic differences to highlight important content, but do so conservatively. Use various stylistic elements (italics, bold, color, brief animation, or differently-styled content) to highlight important content. Overuse can result in the loss of differentiation. Do not use italics or bold on long sections of text. Avoid ALL CAPS.
Please let me know what you think.
" drw158
Future Releases 43622 Improve error messages General normal normal Awaiting Review enhancement new 2018-03-24T01:50:09Z 2019-03-23T04:08:11Z "Audit and improve error messages throughout core.
Many errors contain generic text (something went wrong, expired link warnings) without further explanation, in these cases further details can be added.
Others could do with a wholesale rewrite to improve clarity for non-technical users and/or shift blame away from the user - `Slow down cowboy, no need to check for new mails so often!`, for example.
Follow up to #38332, related #43617.
" peterwilsoncc
Future Releases 41249 "Improve the ""collapse menu"" interface" General normal normal Awaiting Review enhancement new 2017-07-05T20:31:56Z 2019-04-21T10:44:49Z "I would like to propose an update to how the left sidebar collapses in the WordPress admin. Right now I can shrink the sidebar down by shrinking the screen, but there are times I'd like to make the sidebar smaller to focus on the content I'm writing.
It's also important that I don't have to go into fullscreen mode. It takes and a short delay to open/close it. While I'm in fullscreen mode I can't do anything else. Having a smaller sidebar visible at all times - with the option to easily make it bigger again - would be ideal. So, my proposal is:
What if we had 3 stages to the left navigation sidebar?
* As is, full size
* Partially collapsed (like how it shows on tablet view)
* Fully hidden
In order to drag between these states there would be a button that appears on hover to pull the sidebar left or right. Kind of like how Things 3 does it: https://v.usetapes.com/mi3p2NxN3Z
The attachment shows my recommendations for how I'd envision the 3 states:
*Note:* While the interface shows the Gutenberg plugin (this conversation originated on this issue: https://github.com/WordPress/gutenberg/issues/1522), the impact of this feature request applies to the WordPress admin as a whole, as such the discussion was moved to Trac. " JoshuaWold
Future Releases 37307 Indicate non-GPL plugins and themes for users General 4.4.3 normal normal Awaiting Review enhancement new 2016-07-07T14:57:55Z 2017-05-03T10:41:46Z "There are a lot of WordPress plugins in circulation that ship with a non-GPL compatible license.
The wordpress.org plugin repository, of course, only contains plugins that ship with the GPL license, and we are all well aware that all WordPress plugins are considered derivatives and should thusly be licensed under the GPL. This does not remove the fact that not everyone agrees with this, and still vendors insist on shipping with proprietary software licenses.
For the regular WordPress user installing plugins from outside of the wordpress.org plugin repository, there is practically no way to differentiate a plugin that ships with the GPL license, and a plugin vendor that chooses to ship with a proprietary license.
The readme.txt already always contains the license field, but currently the licenses aren't shown anywhere in the plugins.php UI.
I propose we add a license indicator in the plugins.php UI. This would help the user make better choices by choosing to use plugins that ship with a free software license.
It would also be useful to somehow also explain (e.g. in a tooltip perhaps) what it means that a plugin author has decided to ship their plugin with a non-GPL license.
I would love discussion on how the license field could be indicated in plugins.php.
Ideas:
- Part of the Shiny Updates feature?
- Should clearly indicate when a plugin is NOT using a GPL compatible license
- Colour coding different licenses
- A tooltip that would explain the use of GPL vs. proprietary licenses
Related: #29820" Zuige
Future Releases 40834 Introduce a JS module pattern to WordPress General normal normal Awaiting Review enhancement new 2017-05-22T10:25:33Z 2018-09-04T13:49:44Z "This is a discussion ticket proposing an approach for implementing module pattern in WordPress core JavaScript.
== Introduction to modules. ==
For anyone reading this and wanting to learn about JS modules, [https://twitter.com/iam_preethi Preethi Kasireddy] wrote an excellent two part introduction. You can find it here:
* Part 1: [https://medium.freecodecamp.com/javascript-modules-a-beginner-s-guide-783f7d7a5fcc about what modules are and why you should use them.]
* Part 2: [https://medium.freecodecamp.com/javascript-modules-part-2-module-bundling-5020383cf306 about module bundling and the different ways in which that can be done.]
== Goals ==
The higher level concerns that I based this on are:
* The need to modularize our JS in order to make it more maintainable, robust and reusable.
* (Backwards) compatibility with current state and {{{wp_register_script}}} / {{{wp_enqueue_script}}}.
* Great developer experience.
* Allowing core to take advantage of the rich npm ecosystem and current day ES standards.
* Lowering the barrier for the greater JS community to participate in WordPress.
* The benefit of aligning ourselves with [https://github.com/Automattic/wp-calypso Calypso] as much as possible.
== Module definition ==
Currently in core modules are only being used in the WP media library, which follows Common JS module definition, [https://core.trac.wordpress.org/ticket/28510 see modularization ticket]. I would however prefer to switch to ES6 module definition as this is where the JS world is moving and [https://caniuse.com/#feat=es6-module most browsers seem to be working on adding support] as well. Another thing to keep in mind is that Calypso is also using ES6 module imports.
I think it should be a priority for us to align with ES standards as much as possible, especially since transpilers like [https://github.com/babel/babel Babel] and different available polyfills have already solved all major browser compatibility problems for us. Embracing the latest (widely adopted) practices will also help open up WordPress as a project to the greater JavaScript community.
== Module bundler ==
The current bundler of choice is [http://browserify.org/ Browserify]. The other options are [https://github.com/webpack/webpack Webpack] and [https://rollupjs.org/ Rollup].
Webpack is currently the weapon of choice in most React projects. I think this is especially because the development experience is very enjoyable due to its hot reloading capabilities and its ability to only recompile the module that has been changed instead of rebuilding the entire build every time. This is especially great for developing single page apps. As developers we could take advantage of these features as well if we add some code that allows the scripts to come from a different server. This would also be very useful for production as I think it makes a lot of sense to serve our JS from a CDN in the future.
The React project itself has [https://github.com/facebook/react/pull/9327 recently switched from Browserify to Rollup]. By using a technique called [https://rollupjs.org/#tree-shaking tree shaking] it's able to dramatically reduce file size of the bundle. It's also possible to include as a [https://github.com/egoist/rollup-loader Webpack plugin] or [https://github.com/nolanlawson/rollupify Browserify transform].
Here's a [https://medium.com/@housecor/browserify-vs-webpack-b3d7ca08a0a9 good article comparing Browserify and Webpack].
I would prefer to switch to Webpack, especially if we can make the developer experience as smooth as not having to reload pages anymore to see changes directly reflected in the browser. The fact that Calypso is also using Webpack is also a big plus.
== How can we go about bundling the JavaScript in core? ==
Taking into account backwards compatibility, once a script has been registered in core, it can not be removed. Plugin and theme authors unregister / replace scripts or enqueue scripts that aren't enqueued by core on certain screens. Therefore I'd say we might have a bundled file for every script that is currently registered in core. Anything that is in a registered script can of course be extracted away into a separate module. This will give us a ton of freedom as modules can be rearranged without having to worry about bc.
== What are the implications on current API's? ==
Anything that needs to be on the global {{{wp}}} object could still be assigned to it. However, using modules should eventually lead to better composition. Modules that don't need to know about global API's shouldn't depend on them or assign themselves to global objects. I believe it's possible to configure Webpack to do these assignments for us. Of course it's always possible to do it in a separate file.
== Do we need to move everything into modules straight away? ==
No, modularizing code is typically something that can be gradually implemented. We just need to agree on the direction so we can build a roadmap and start implementing it. I do think we need to document our decisions well and make sure core is in sync with that. It will be highly beneficial to have good examples in the code itself of how things can be modularized. There might also be a few things which we simply don't want to modularize, like jQuery for instance, since jQuery needs to be globally available anyway for bc reasons. I am curious to see opinions about this since there could be architectural reasons to still do this.
== Do all modules we for core need to reside in core? ==
I would very much like all general purpose modules to be extracted to a separate package on which core depends. We are an open source project. If we can organize our code in a way that makes it more reusable for the greater community of developers, we should do so. Anything core specific should of course reside in core.
Using modules in core will also expose endless new possibilities in terms of depending on third party libraries / modules. This is another great opportunity if you ask me to build stronger ties with the greater JS community.
" omarreiss
Future Releases 43617 Nonce invalid messages non-informative, needs changed General normal normal Awaiting Review enhancement new 2018-03-23T10:34:11Z 2021-05-21T10:47:38Z "As a followup to the ""Cheating uh?"" patch that has gone into WP 4.9.5, I think the message for an invalid Nonce can be improved.
I often run into the situation where I leave a webpage open for a day, planning to respond with a comment or something similar. By the time I post something, the Nonce is invalid. I then get an empty page with ""Are you sure you want to do that?"". I think ""Yes"" and reload the page, only to have the same error. I get slightly annoyed at the UI and have to hit the Back-button of my browser, which needs active thinking.
I think I am not alone in this. It is not just spammers hitting these messages. And I think it can be improved.
I think it would be good to explain what happened, even if it is too technical. The Nonce was invalid, and that needs to be conveyed. I am just not sure how what is a fitting message for most users while still informative.
""The Nonce on the page did not validate. If you are sure you want to do this, please go back and try again."" might be a better message.
It could be followed by a backlink taking you back to the previous page. That could be based on the HTTP Referrer. If that is not available, a link with JavaScript with a 'history.back()' could do this job. I am not sure if that last option will refresh the page and thus the Nonce.
" mpol
Future Releases 40171 Object Cache Should Support Namespaces General 4.2 normal normal Awaiting Review enhancement new 2017-03-16T12:56:05Z 2017-03-16T16:05:52Z "Currently if any code (particularly a plugin) needs to delete many different cache keys, the default solution is to call wp_cache_flush(). However, this flushes the global cache which may cause serious performance issues on a live site since it affects all cached data. Furthermore is it probably an extremely rare case that all cached data needs to be purged rather than a subset.
Solution Summary: Support namespaces on wp cache calls so that it is possible to kill ranges of cache keys without flushing the entire cache.
Design:
1. Cache functions have an optional parameter added to specify cache namespace. The default namespace will resolve to the global cache.
2. An int value is tracked for each namespace. The current int values for each namespace can be stored in the object cache.
3. When a caller performs a get/set the current int value for the specified namespace is obtained and the namespace + int value is prepended to the key provided by the caller.
4. When all cache keys within a namespace need to be cleared, the int value for that namespace is incremented, and all subsequent get/sets will begin using new keys. Memcache will eventually purge the old data.
This adds the slight overhead of maintaining the int values for each namespace but allows selectively killing/invalidating cache keys without flushing the entire cache. If necessary namespace values can be statically cached to avoid getting the same namespace value from memcache several times." brandonliles
Future Releases 32979 Password UI: Regenerate PW after clearing field General 4.3 normal normal Future Release enhancement new 2015-07-13T17:49:23Z 2017-12-11T13:25:02Z "Based on https://core.trac.wordpress.org/ticket/32589#comment:20.
I think this needs some discussion and focus in it's own ticket.
In the new UI a PW gets generated for you. You have to take an action ""Show password"" or ""Generate new password"" to make the field show. Then you can edit that if you would like. At that point you decide you would rather generate one again. There is no clear way to do so.
A few things worth noting
On user profile you can click ""Generate new password"" again and it will.
On new user you can click ""Show password"" and it will regenerate a pw again. (This is not great and where the change needs to happen)
Perhaps the easy solution is to change the wording on the button when the field is shown to ""Generate new password"".
A small issue that can be taken care of at the same time is the ""Show password"" button shows above the PW field while the ""Generate new password"" button shows below. The button below looks better.
" MikeHansenMe
Future Releases 48758 Repurpose 'Hello World' post to also serve as a Gutenberg tutorial General normal normal Awaiting Review enhancement new 2019-11-21T23:14:42Z 2021-04-10T11:18:28Z "(This ticket has been migrated from GitHub: https://github.com/WordPress/gutenberg/issues/17874)
On new WordPress installs, users get a 'Hello World' post by default. The post's content is minimal and does not do a great job of explaining users what to do next.
[[Image(https://cldup.com/fI5eLunpwG.png)]]
I'm wondering if we can instead make better use of the 'Hello World' post and maybe have some pre-loaded content that can help new users learn the basics of the Block Editor and maybe serve as a little showcase of the cool things you can do.
----
**The new 'Welcome to WordPress"" demo post**
[[Image(https://cldup.com/MtjDPstIuV.png)]]
☝️ The above is a quick example that hopefully can serve as starter to iterate to something better.
Because the guide is in the block editor, the idea is that the guide itself shows what users can do by using different types of blocks and features. For example, the guide can make use of column blocks, video, group, etc. We can use it as a nice showcase of what can be done with Gutenberg.
We can also probably use better images or even fancy illustrations, to make it more interesting and engaging.
In the example above, which again is just a quick attempt, the guide starts by showing users how to add a block using the Block Inserter in the top toolbar. That right there communicates to the new user that the plus sign icon adds blocks and when/if they find it somewhere else in the interface, they will already know what it does. It also discretely shows that there's more options in the toolbar that the user can then explore.
The guide then moves on to explain that there are different types of blocks and that they can be customized by using the options in the Block Toolbar.
And finally, the guide explains that there's a sidebar with additional settings for the document and the blocks.
Again, this could be improved in so many different ways:
- we can iterate on the contents and topics of the guide,
- we can use better images or illustrations,
- we can be more clever and use different blocks and make the guide more interesting
I'd love to hear your thoughts on this." nrqsnchz
Future Releases 59561 Short Description is missing in code comment General 6.3.2 normal normal Awaiting Review enhancement new 2023-10-07T09:00:18Z 2023-10-25T21:44:20Z "Short Description helps to understand variable behavior and it seems missing at the following locations.
https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-admin/edit-form-advanced.php#L19
https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-admin/edit-form-blocks.php#L23
https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-admin/edit.php#L35
https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-admin/post-new.php#L17
https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-admin/post.php#L35
" 1naveengiri
Future Releases 57176 Table pagination issue General 6.1.1 normal normal Awaiting Review enhancement new 2022-11-22T11:46:58Z 2022-11-23T14:13:42Z "Example: the Users -> All Users admin page.
When there are many users, one might want to go to page 50 out of 100.
For this to do there is a page number input field in the pagination top display.
Entering a number has unfortunately no effect.
Over ten years i use wordpress and develop plugins on a dayly basis, but i never discovered the function of the enter key for this purpose.
I also did not suspect the Apply button to do it because going to a different page is not a bulk action.
So either i am very dumb or they are no obvious features.
My request is an enhancement request, to either add an onchange event handler to the page number input field or add some text (e.g. to the Help section) or title to the input field to point the users in the right direction." opajaap
Future Releases 58987 Unify usage of die(), die( '-1' ), exit(); General normal minor Awaiting Review enhancement new 2023-08-06T09:46:23Z 2023-08-06T12:46:51Z "like mentioned [[https://core.trac.wordpress.org/ticket/58420#comment:6|here]] I'd like to know if we want to unify the different die() calls we use:
{{{#!php
// Don't load directly.
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
}}}
(mostly used, having a comment)
{{{#!php
if ( ! defined( 'ABSPATH' ) ) {
die();
}
}}}
(**not** having a comment), like seen in **\wp-admin\link-parse-opml.php**, **\wp-admin\site-health-info.php**
or even
{{{#!php
if ( ! defined( 'ABSPATH' ) ) {
exit();
}
}}}
like seen in **\wp-includes\rss-functions.php**" Presskopp
Future Releases 50400 Update Search Engine Visibility text following XML sitemap launch General normal normal Awaiting Review enhancement new 2020-06-16T12:58:50Z 2020-06-16T22:28:01Z "#50117 adds XML sitemaps to core.
Whilst it's a non-goal of that project to add user controls for XML sitemaps, checking the '''discourage search engines from indexing the site''' option (In ''Settings'' > ''Reading'') ''does'' disable XML sitemaps entirely.
Given this, we should update the wording around this option to make this clear - and whilst we're in there, we could also do a little housekeeping.
I propose that we change the message to:
>**Search Engine Visibility**
>Discourage search engines from indexing this site (and disable WordPress' XML sitemaps)
>''Note: It is up to search engines to honor this request, and this setting won't prevent them from ''crawling'' your website.''" jonoaldersonwp
Future Releases 51751 Update page header design General normal normal Awaiting Review enhancement new 2020-11-10T20:40:14Z 2020-11-11T18:07:26Z "There is [https://github.com/WordPress/block-directory/issues/19 a proposal to create a block directory]. With that proposal comes an idea for a new header pattern that could be applied to all wp-admin pages.
Here is a sample of current page headers:
[[Image(https://cldup.com/-DlIcKR1yF.jpg)]]
Here is the page header pattern in the proposal:
[[Image(https://cldup.com/e3Kj4IaYHT.jpg)]]
The page header is made up of the following:
* **Title** - A short title of the page.
* **Description** - These will be both informative and inspiring. We will need some quality copywriting here.
* **Actions** - These can include search fields and button actions. In the following prototype, it is used primarily for Search, Upload, and Add New actions.
* **Help and Options buttons** - These will replace the ""Screen Options"" and ""Help"" tabs at the top of the pages.
It was initially designed in the context of a Block Directory page. In an effort to test it out, I mocked it up on a variety of pages. I made [https://www.figma.com/proto/dHtjHdh8lZm0DinGKP8MmT/Block-Directory?node-id=1885%3A456&viewport=-3514%2C1996%2C1&scaling=min-zoom a prototype] to easily move between the pages in order to get a better feel for it.
[[Image(https://cldup.com/KCiEMOq71r.gif)]]
You can also peruse [https://cloudup.com/c-n3LZwqhsP this Cloudup gallery] for static images.
In the above prototype, I made two notable changes: I made the background white and I increased the padding of the center column to `64px` instead of `20px`. The design is not contingent on these changes, but certainly looks nicer with them in my opinion. For the curious, [https://cloudup.com/cMnrdDB_SN9 here is a gallery with a grey background and no padding change].
As for implementation, I hope to use some of the styles from the relevant Gutenberg components including the toolbar buttons. I also hope to use the SVG icons. It would be a good first step in aligning the styles of wp-admin with Gutenberg.
What do you think?" michaelarestad
Future Releases 39795 WordPress objects are only accessible via global variables General 4.8 normal normal Awaiting Review enhancement new 2017-02-06T13:47:17Z 2017-02-06T16:29:03Z "Hello.
Here's the context:
I'm trying to write some high quality plugins that go through some code analysis tools before any new release is made available to the public. That means that the code that is being analysed is on a repository of its own.
When running the plugin code through such tools (sensio labs insights for example), some errors are marked as major issues: ""Global variable or function should never be used"" and that is related to the access of some WordPress objects like $blog_id, $wpdb and $wp_filesystem to name a few.
Upon investigation I found out that for $blog_id, there was an alternative, which is to use the get_current_blog_id() function. That is great, because it respects the WordPress way of working on the WordPress side, and in my plugin, I can now use a function instead of a global variable.
Could we make some equivalent functions for the other global WordPress objects? Like get_wp_db(), get_wp_filesystem() for example?
Thanking you.
Regards." jdmweb
Future Releases 40566 add_query_arg() returns only URL fragments in certain circumstances General normal normal Future Release enhancement new 2017-04-25T22:01:33Z 2020-07-28T05:35:11Z "The documentation for add_query_arg() - https://developer.wordpress.org/reference/functions/add_query_arg/ - and its docblock, both claim that it returns a URL. And this appears to be how it is commonly used. (I started looking into this because of it being used in WooCommerce in this way, a wrong assumption which ulimately causes a reproducible-every-time 404 on my webserver on password reset requests via WooCommerce).
e.g. in the documentation: ""Retrieves a modified URL query string."" ""You can rebuild the URL and append query variables to the URL query by using this function"". It is also recommended to use esc_url() on what is returned - a function that states that it acts upon URLs, implying that what is returned is indeed a URL.
The docblock says ""Retrieves a modified URL query string"" - which isn't a very clear statement (does it return a query string? Or a URL *with* modified query string?). It continues later with ""Omitting the URL from either use results in the current URL being used (the value of {{{$_SERVER['REQUEST_URI']}}})"".
The last clause is where the problem comes in. {{{$_SERVER['REQUEST_URI']}}}, actually stores a path that is relative to the current host, only (i.e. not ""U""niversal). Another beautiful bit of PHP mis-design: http://php.net/manual/en/reserved.variables.server.php - ""The URI which was given in order to access this page; for instance, '/index.html'.""
As a result, despite the documentation and expectation, add_query_arg() returns relative fragments. And when these are passed to wp_redirect(), as WooCommerce does, the result can be, as in my case, that the webserver gives a 404. (This appears to be related to changes to relative path handling in CGI output in recent versions of lighttpd. The problem is CGI-specific I think - it relates to how a webserver handles the output of a CGI script when that output has a Location: header without a full URL in it).
It appears to me that in the default case of no URL being specified, add_query_arg() should return an actual URL, instead of a relative path.
Perhaps related: #14062" DavidAnderson
Future Releases 40791 paginate_links outputs unnecessary dots General 4.7.5 normal normal Awaiting Review enhancement new 2017-05-17T19:46:55Z 2017-05-22T16:47:16Z "== Steps to reproduce: ==
A) Call paginate_links with current=2, total=6
B) Call paginate_links with current=5, total=6
(assume defaults for everything else: mid_size=2, end_size=1, show_all=false)
== Actual results: ==
A) `[1] ... [3] [4] [5] [6]`
B) `[1] [2] [3] [4] ... [6]`
The output includes dots that are unnecessary because they are taking up space that an actual page link could occupy.
== Expected results: ==
A) `[1] [2] [3] [4] [5] [6]`
B) `[1] [2] [3] [4] [5] [6]`
When `total <= mid_size + end_size * 2 + 2`, no dots should be included in the pagination output." rphelan
Future Releases 20194 Add Description meta to General Settings General 3.3 normal minor Awaiting Review feature request new 2012-03-07T20:59:05Z 2021-08-10T05:46:44Z "Add a description field to General Settings b/c these days with themes doing all kinds of kooky things, the automatic excerpt is often not representative of the site content. All the SEO-lovers will be happy, searchers will get more accurate results, and it's a nice end-user feature without high overhead.
Could have sworn I made a ticket like this once before, but can't find it in search, so if anyone remembers it/is better at searching trac than I just was, go ahead and close this as duplicate." jane
Future Releases 43328 Add support for Web App Manifests westonruter* General normal normal Future Release feature request accepted 2018-02-15T09:33:11Z 2019-03-01T13:44:17Z "Per [https://developer.mozilla.org/en-US/docs/Web/Manifest MDN]:
> The web app manifest provides information about an application (such as name, author, icon, and description) in a JSON text file. The purpose of the manifest is to install web applications to the homescreen of a device, providing users with quicker access and a richer experience.
>
> Web app manifests are part of a collection of web technologies called progressive web apps, which are web applications that can be installed to the homescreen of a device without needing the user to go through an app store, along with other capabilities such as being available offline and receiving push notifications.
For populating the manifest:
* `description` can be pulled from the `blogdescription`
* `name` can be pulled from `blogname`.
* `background_color` can be pulled from the `custom-background` theme support.
* `lang` can be pulled from the site locale.
* `icons` can be pulled from site icons.
A filter can be present for themes and plugins to augment the manifest.
See also #36995 for adding service worker support to core." westonruter
Future Releases 43334 Include Post/Page status when restoring the previous revision General normal normal Awaiting Review feature request new 2018-02-16T01:07:32Z 2018-02-16T20:05:03Z "I noticed page/post status is not included in the restore previous version. Would be a great addition to the next build.
Thanks" necromuncher
Future Releases 38419 Make beta testing an opt-in feature in core General 4.7 normal normal Awaiting Review feature request new 2016-10-20T19:27:42Z 2021-10-05T01:11:32Z "Currently beta testing of WordPress core (and feature plugins) is something you have to be aware of to take part in. This limits the reach of beta testing feedback to those who are intimately engaged in the day-to-day development of WordPress core and results in feedback that skews heavily in the direction of those who build WordPress as opposed to those who use WordPress.
To increase participation in end-user testing of WordPress core and feature plugins, active participation in such programs should be surfaced more visibly, either through settings during install, a modal pop-up, or an alert.
To be clear, I'm not talking about testing of bleeding edge nightlies here, but specific features and feature plugins in Beta or RC state.
A simple admin alert saying ""WordPress 4.7 beta is available. Would you like to test it?"" would be a huge improvement. Similar can be done with select feature plugins, especially if the alert is tied to the feature they change/improve (so for a new media feature, the alert would appear when the media functionality is engaged: ""We are working on a new and improved media panel. Would you like to test it?"").
This would of course have to be done sparingly to avoid alert overload.
== Simplified feedback procedure ==
Along with the surfacing of beta testing, there should be a way to provide feedback on features directly from within WordPress admin. Asking for feedback to be posted in a Trac ticket or even a Make blog post limits the number of possible responses significantly. An in-app feedback feature activated only for testers would greatly simplify the process and most likely increase the volume of feedback data significantly. Whether this data is mapped to Trac tickets or something else needs to be addressed." mor10
Future Releases 40852 Support Micropub General normal normal Awaiting Review feature request new 2017-05-24T01:13:06Z 2020-09-09T01:30:15Z "Micropub is now a W3C Recommendation.
https://www.w3.org/TR/micropub/
It is used to create, update and delete posts using third-party apps.
Micropub uses OAuth 2.0 Bearer Tokens for authentication and uses traditional form posts as well as JSON posts, which is both simpler and more secure than an XMLRPC approach.
The REST API is specific to WordPress, whereas Micropub is platform agnostic, which has its advantages. " dshanske
Future Releases 36995 Support for Service Workers westonruter* General 5.1 normal normal Future Release feature request accepted 2016-06-02T00:18:09Z 2022-05-03T22:21:12Z "It might make sense into looking to offer a basic service worker for WordPress. It can start with something simple like caching files for `wp-admin`. Beyond that there are many ways it could be expanded:
* Cache all scripts and styles for themes/plugins, possibly offering offline mode for sites
* Possibly Notifications
* etc
Useful links:
* https://developers.google.com/web/fundamentals/getting-started/push-notifications/step-03?hl=en
* https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
* https://justmarkup.com/log/2016/01/add-service-worker-for-wordpress/" bhubbard
Future Releases 45832 php-pm support General normal normal Future Release feature request new 2019-01-04T14:03:25Z 2019-01-14T21:52:28Z "Hi, this is more of a question/discussion starter about [[https://github.com/php-pm/php-pm|php-pm]] support.
On php-pm github page it's stated that:
> For all WordPress lovers out there: PPM is not going to work with WordPress due to the lack of request-response abstraction. We highly doubt that WordPress is ever going to be compatible because its architecture is written in a way that makes it currently impossible to serve multiple requests in one application process.
Are there any plans to support it? Has anyone thought about adding support for request-response abstraction?" calin
Future Releases 59649 PHP 8.0: improvements to allow for named parameters in 6.6 General normal normal 6.6 task (blessed) new 2023-10-17T12:16:28Z 2024-02-26T10:21:48Z "Previously:
* #58976 (6.4)
* #57838 (6.3)
* #56788 (6.2)
* #55650 (6.1)
* #55327 (6.0)
* #51553 (5.9)
Quoted in full below:
> PHP 8.0 introduces the ability to pass named parameters to function calls.
> Ref: https://wiki.php.net/rfc/named_params
>
> Code example:
> {{{#!php
> // Using positional arguments:
> array_fill(0, 100, 50);
>
> // Using named arguments:
> array_fill(start_index: 0, num: 100, value: 50);
>
> // Named arguments do not have to follow the same order as positional arguments:
> array_fill(value: 50, num: 100, start_index: 0);
> }}}
>
> **More than anything, this means that, as of PHP 8.0, renaming a parameter in a function declaration is a backward-compatibility break! **
>
> This should most definitely get prominent mention in the PHP8 dev-note as a lot of Core/plugin/theme developers will not be aware of this at this time.
>
>
> I'm opening this ticket to address a number of issues this brings up for WordPress Core.
>
> I've so far identified three tasks which should be executed ASAP to prepare for named parameters in function calls.
>
> == Task 1: Review Function Signatures of methods in child classes
>
> Methods in child classes may use different parameter names than those used for the same method by its parent. Similarly, classes implementing an interface do not have to use the same parameter names.
>
> While this does not change in PHP 8, it could create problems when the method is called using named parameters.
>
> To quote from [https://wiki.php.net/rfc/named_params#parameter_name_changes_during_inheritance the RFC]:
>
> > If an inheriting class changes a parameter name, calls using named arguments might fail, thus violating the Liskov substitution principle (LSP).
>
> > PHP will silently accept parameter name changes during inheritance, which may result in call-time exceptions when methods with renamed parameters are called
>
> Code sample:
> {{{#!php
> interface I {
> public function test($foo, $bar);
> }
>
> class C implements I {
> public function test($a, $b) {}
> }
>
> $obj = new C;
>
> // Pass params according to I::test() contract
> $obj->test(foo: ""foo"", bar: ""bar""); // ERROR!
> }}}
>
>
> **Note: For variadic functions this will not cause an error, but will move the unrecognized names to be part of the variadic argument, which can cause all sorts of problems.**
> Code sample [https://twitter.com/giveupalready/status/1312139952776306688 courtesy of Chris Riley] illustrating the problem: https://3v4l.org/MhJ79
>
> With regards to WordPress, I'd like to propose making the parameter names in child classes/classes implementing an interface consistent to prevent such issues.
>
>
>
>
> == Task 2: Review Other Function Signatures
>
> 1. The function signatures of existing functions and methods of all WordPress code should be examined and non-descriptive parameter names should be fixed (renamed) **NOW** as later will no longer be an option without creating a BC-break.
> 2. While using reserved keywords as parameter name labels is allowed, in the context of function calls using named parameters, this will easily lead to confusion. I'd like to recommend to rename function parameters which use reserved keywords to remove this confusion.
> {{{#!php
> function array_foobar($toggle = false, $array = []) {}
>
> array_foobar(array: $value);
> }}}
>
>
> == Task 3: Review all uses of `call_user_func_array()`
>
> Named parameters cause a BC-break for `call_user_func_array()` when passing an associative array.
> In previous PHP versions, the array keys would have been ignored. In PHP 8, string keys will be interpreted as parameter name labels.
>
> For more detail, see: https://wiki.php.net/rfc/named_params#call_user_func_and_friends
>
> Basically, we need to make sure that any array passed to `call_user_func_array()` does NOT have string keys. If it does or if the format of the array is unknown (like when it is passed in via a function parameter), we need to add extra safeguards to make the code cross-version compatible.
> A typical way to do this would be to use `array_values()` on the array before passing it to `call_user_func_array()`, though beware that ''**will**'' break code written for PHP 8 which actually expects the label to be used.
>
>
>
>
>
>
> == Other references:
>
> * https://twitter.com/CiaranMcNulty/status/1312087225857970182
>
>
> Related Trac tickets: #50913, #50531" hellofromTonya
Future Releases 56034 PHP 8.2: proposal for handling unknown dynamic properties deprecations hellofromTonya* General normal normal 6.6 task (blessed) accepted 2022-06-22T04:19:45Z 2024-02-26T10:21:38Z "Dynamic (non-explicitly declared) properties are deprecated as of PHP 8.2 and are expected to become a fatal error in PHP 9.0, though this last part is not 100% certain yet.
RFC: https://wiki.php.net/rfc/deprecate_dynamic_properties
**This ticket is only intended for situations 3 and 4 (see below) where fixing a typo or explicitly declaring the property is not possible.**
== The problem
=== What is a dynamic property ?
{{{#!php
id = $id;
// This is a dynamically created property as the property
// is not declared on the class.
$this->field_name = $field_name;
}
}
}}}
Dynamic properties can both be created from inside a class, like in the above example, as well as from outside the class (see the below example), which makes these issues very tricky to find via static analysis.
{{{#!php
type = 'something';
}}}
=== When is something not a dynamic property ?
1. When the property is explicitly declared on the class.
2. When the property is explicitly declared on the (grand)parent class.
=== When are dynamic properties not problematic ?
1. When the class, or one of its parents, has a magic `__set()` method which assigns the property to a declared property.
{{{#!php
field_name = $field_name; // Not problematic.
}
public function __set( $name, $value ) {
$this->fields[ $name ] = $value;
}
}
}}}
2. When the class, or its parent, extends the PHP native `stdClass`, which has highly optimized versions of the `__set()` magic method available.
== Mitigation
The solution needed depends on the specific situation and each instance where a deprecation is thrown needs to be individually evaluated.
We can basically categorize dynamic properties into four base situations:
|| ||= Situation =||= Solution =||
|| 1. || Typo in property name || Fix the typo, either in the property as declared or where the property assignment happens ||
|| 2. || Known, named, dynamic property || Declare the property on the (parent) class ||
|| 3. || Known use of unknown dynamic properties || Declare the full set of magic methods on a class (preferred) or let the class extend `stdClass` (discouraged) ||
|| 4. || Unknown use of unknown dynamic properties || Use the `#[AllowDynamicProperties]` attribute on the (parent) class and/or declare the full set of magic methods on a class and/or let the class extend `stdClass` ||
Note: the `#[AllowDynamicProperties]` attribute is expected to be a temporary solution and it is expected that support for the attribute will be removed at some point in the future.
== The larger problem
=== Intended future roadmap for PHP
The deprecation of dynamic properties in PHP is only step 1 in a larger plan to remove support for dynamic properties completely.
No impact analysis was done for the RFC, as even PHP Core realized that identifying all uses of dynamic properties via static analysis is neigh impossible.
With that in mind, the `#[AllowDynamicProperties]` attribute was introduced to allow for doing an actual impact analysis for the next step of the plan, i.e. removing support for dynamic properties altogether.
**Note**: ''when support for dynamic properties would be removed altogether, correctly set up magic `__set()` methods will still continue to work, including those in the `stdClass`.''
At this time it is unclear when the removal of support for dynamic properties will land, but it is ''expected'' to be either in PHP 9.0 or 10.0.
Once it lands, the attribute is expected to no longer be respected.
=== WordPress infrastructure
Due to the extendable nature of WordPress and its large plugin and theme infrastructure, the problem facing WordPress is exponential as every single class in WordPress ''may'' be used and/or extended from within plugins and themes and these plugins/themes ''may'' be setting dynamic properties on the WordPress Core classes.
Now, while WP Core at least has tests for a small part of its codebase and runs those diligently, which allows for finding (a subset of the) dynamic properties via the deprecation notices, the majority of plugins/themes do not have any tests.
As noted previously, finding dynamic properties via static analysis is hard, so these plugin/themes would have to largely rely on error logging/user reporting of the PHP 8.2 deprecation notices to fix things and that is still providing the plugin/theme is actively maintained, while a large number of plugins/themes are not.
Also note that the PHP 8.x uptake under WordPress users is low (due to WP Core not being fully compatible) and the number of users logging errors is also low, so user reporting is not a reliable method to allow plugins/themes to get ready for this change.
Altogether, this means that end-users run a significant risk of their sites going down once PHP removes support for dynamic properties and the user upgrades to that PHP version, with little advance notice.
== Proposal
Taking all of the above into account, I would like to propose the following:
1. Introduce two traits into WP Core: `trait DeprecateDynamicProperties` and `trait ForbidDynamicProperties`.
* The `DeprecateDynamicProperties` trait would contain a full set of the magic methods (`__isset()`, `__get()`, `__set()`, `__unset()` and will throw a deprecation notice whenever any of those methods are called. Properties will still be set via the magic methods. This trait is intended to be a temporary stop-gap solution and will not fall under the WordPress BC promise. When PHP removes support for dynamic properties, this trait should be removed from WordPress as well.
* The `ForbidDynamicProperties` trait would contain a full set of the magic methods (`__isset()`, `__get()`, `__set()`, `__unset()` and will throw a fatal error whenever the `__set()` method is called. Properties will **not** be set via the magic methods, `__isset()` will always return `false`, `__get()` will always result in an undefined property warning.
2. Evaluate every single class in WP Core `src` directory:
* If the class - or one of its parents - already has a full set of properly implemented magic methods in place, no action is needed.
* If the class - or one of its parents - already extends `stdClass`, no action is needed.
* If the class really **''should''** support dynamic properties, the magic methods should be implemented on the class itself (or its parent).
* For every single class which does not fall into the above categories, the `DeprecateDynamicProperties` trait should be added, as well as the `#[AllowDynamicProperties]` attribute (to allow the class to be recognized for the PHP Core scan for the next RFC).
3. Every new class introduced to WP Core ''after'' the initial change from step 2, would be **required** to either have a full set of the magic methods or to add the `ForbidDynamicProperties` trait. New classes should not be allowed to have the attribute.
If the above proposal is accepted, it would effectively ''backport'' the PHP 8.2 deprecation all the way back to PHP 5.6, making it far more likely that users discover any dynamic property related issues in their site.
This will give end-users plenty of time to either contact the plugin/theme owner to mitigate the issue and/or to switch to other plugins/themes if the plugin/theme is no longer actively maintained.
It will also give plugin and theme authors plenty of time to notify WP Core of Core classes which use the `DeprecateDynamicProperties` trait, but should, in all reality, fully support dynamic properties.
For those cases, after evaluating the merit of the specific use-case and finding it valid, the full set of magic methods could then be added to the WP Core class and the use of the trait and the attribute removed.
Altogether, this should greatly diminish the dramatic impact of PHP removing support for dynamic properties altogether in a future release.
=== Practical
I'm perfectly happy to prepare the patch for this together with some people. However, as the proposed patch comes down to a huge amount of work, I want to see some second opinions supporting this proposal first before starting the work on this.
----
Related: #56009
Trac ticket #56033 is open for addressing dynamic properties in category 1 and 2." jrf
Future Releases 59654 PHP 8.x: various compatibility fixes for WordPress 6.6 General normal normal 6.6 task (blessed) new 2023-10-17T12:33:14Z 2024-02-26T10:20:59Z "Previously:
* #57837 (6.3)
* #56790 (6.2)
* #55656 (6.1)
* #54730 (6.0)
* #53635 (5.9)
* #50913 (5.6)
This ticket will be used as an ""epic"", allowing a variety of small patches each fixing a specific failure to be added to and committed against this ticket.
For patches addressing all instances of failures related to one specific PHP version (such as PHP 8.0, 8.1, or 8.2) change across the codebase, separate tickets should still be opened.
For an example of issues/patches with separate tickets, see:
* #53299 PHP 8.1: Update `is_serialized` function to accept Enums
* #53465 PHP 8.1.: the default value of the flags parameter for `htmlentities()` et all needs to be explicitly set
When opening a separate ticket, please tag it with the appropriate PHP version keyword so that these tickets can be easily found:
* PHP 8.3: keyword is `php83` with its report https://core.trac.wordpress.org/query?keywords=~php83
* PHP 8.2: keyword is `php82` with its report https://core.trac.wordpress.org/query?keywords=~php82
* PHP 8.1: keyword is `php81` with its report https://core.trac.wordpress.org/query?keywords=~php81
* PHP 8.0: keyword is `php8` with its report https://core.trac.wordpress.org/query?keywords=~php8" hellofromTonya
Future Releases 40502 Add the check version and template attributes method for /themes/update-check/1.1/ API HTTP API 4.7.4 normal normal Awaiting Review defect (bug) new 2017-04-20T19:55:09Z 2017-04-20T19:55:09Z "I created a child theme for work, but WordPress noticed me that new theme has an update. That is so weird. So I traced the code and found that problem is API(api.wordpress.org/themes/update-check/1.1/) did not check the whole theme's info between local and WordPress DB.
Here is my steps:
1. install the base theme named `site`
2. create a child theme named `royal`
3. add theme info in royal/style.css and royal/functions.php
style.css:
/*
Theme Name: Royal
Author: Knockers
Version: 1.0
Template: site
*/
functions.php:
4. login to wp-admin/themes.php and the update notice shows up!
I think the API must check the `Theme Name`, `Version`, `Author` and `Template` attributes at least and make sure the theme package is current belong to someone." mxp
Future Releases 51767 Broken logic for `https_local_ssl_verify` filter due to missing `local` argument HTTP API 4.6 normal normal Awaiting Review defect (bug) new 2020-11-13T09:29:11Z 2020-11-13T09:29:11Z "When the Requests library was merged in WP 4.6, the `local` element in the `$args` array of an HTTP API request was removed. The logic for the `https_local_ssl_verify` filter relies on this argument being present and therefore doesn't behave properly.
To reproduce, perform an HTTP API request to `home_url()` and verify that the `https_local_ssl_verify` filter does not get triggered.
Introduced in [37428]." johnbillion
Future Releases 34924 Network upgrade fails on tls 1.2 only servers HTTP API 2.7 normal normal Awaiting Review defect (bug) new 2015-12-09T01:37:03Z 2018-07-16T19:56:09Z "Setup:
Nginx 1.9.7 on Centos 7.1 with cURL 7.29
SSL configured with 'ssl_protocols TLSv1.2' only because Firefox does only accept TLS 1.2 for http/2
Symptom:
After upgrading from WordPress 4.3 to 4.4 the network upgrade fails with error message:
'Your server may not be able to connect to sites running on it. Error message: TCP connection reset by peer'
Test:
Setting 'curl_setopt ( $handle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1 );' in WP_Http_Curl::request solves the issue
This is definitely an issue with older cURL versions. cURL 7.45 works well as reported by @dd32.
Suggestion:
Conditionally set CURLOPT_SSLVERSION if the first connect over https fails.
Hint:
Since WP_Http_Curl has been introduced in WordPress 2.7.0 I guess all version since 2.7.0 are affected.
" mensmaximus
Future Releases 41608 Post files using cURL HTTP API 4.6 normal normal Awaiting Review defect (bug) new 2017-08-11T06:58:35Z 2017-08-11T09:23:40Z "It's impossible to post files by http using cURL via the WordPress API.
If you look at the code in the ''setup_handle'' method in ''Requests_Transport_cURL'' class found in the ''/wp-includes/Requests/Transport/cURL.php'' file, you'll see that the POST data is always converted to a string using the PHP ''http_build_query'' function. However, according to the PHP manual at [http://www.php.net/manual/en/function.curl-setopt.php], the value passed to CURLOPT_POSTFIELDS must be an array if files are passed to this option.
" codealfa
Future Releases 49203 Requests::request_multiple() does not honor $auth option HTTP API 5.4 normal normal Awaiting Review defect (bug) new 2020-01-15T13:40:53Z 2020-02-05T06:52:49Z "If individual requests have an option for `$auth`, the authentication `CURLOPT`s don't get set as `curl.before_send` is never dispatched.
Manually setting an 'Authorization' header overcomes this limitation. I suspect this is not intended behaviour however, cf. documentation in #48349." alpipego
Future Releases 41340 fsockopen HTTP Proxy support is broken for HTTPS URLs HTTP API 4.8 normal normal Awaiting Review defect (bug) new 2017-07-16T12:47:02Z 2020-10-01T22:58:13Z "First of all, a little bit of background on HTTP proxies.
""HTTP proxies"" can exist with and without TLS at the proxy level. Both varieties allow you to connect to HTTPS hosts, through the CONNECT method (https://tools.ietf.org/html/rfc7231#section-4.3.6).
This means that there are four different valid combinations of TLS at proxy connection level and TLS at remote host connection level.
WordPress only allows setting a single proxy host (and port), but provides no configuration for whether it should be connected through TLS. The curl code correctly interprets this as using a non-TLS HTTP proxy for both HTTP and HTTPS connections.
fsockopen instead will use the remote host TLS (ssl) option even when opening the connection to the Proxy, effectively forcing the same host:port pair to be used both as TLS and not, which does not generally work. Resulting in these error connections:
HTTP proxy with no TLS:
- https://api.wordpress.org/ -> tries connecting to proxy with tls, fail.
- http://api.wordpress.org/ -> works
HTTP proxy with TLS:
- https://api.wordpress.org/ -> (probably? -- haven't tried) works
- http://api.wordpress.org/ -> tries connecting to proxy without tls, fail.
" flameeyes
Future Releases 42839 wp_remote_post should support multipart uploads HTTP API normal normal Awaiting Review feature request new 2017-12-08T13:49:32Z 2020-01-22T11:05:19Z Currently `wp_remote_post` doesn't support multipart uploads (file uploads). Because of this many plugin authors need to workaround this by implementing their own way to upload files remotely. calin
Future Releases 60466 Introduce a contextual help tab for plugin dependencies costdev Help/About normal normal 6.6 defect (bug) assigned 2024-02-07T17:11:26Z 2024-03-05T14:27:10Z "Follow up to #22316/[57545].
On the plugins screen, there should be a help tab added about plugin dependencies.
This potentially could be linked to in admin notices and other scenarios where users are notified that something is not right with their current set of installed plugins." desrosj
Future Releases 54449 Loading CodeMirror prevents the Help tabs children to work properly. Help/About 5.8.2 normal normal Future Release defect (bug) new 2021-11-15T17:41:22Z 2022-07-19T13:25:06Z "When you load the `wp-theme-plugin-editor` script (CodeMirror) it prevents/blocks the Help on click event. You can quickly test this if you additional tab on the Theme Editor screen, right now there is only an Overview, but if we add and 2nd one you won't be able to switch between children.
I am using this on another page, but I have tested it, and when I remove the `wp_enqueue_script('wp-theme-plugin-editor');` the functionality works as it should be.
This is the JS file that's causing the issue: `/wp-admin/js/theme-plugin-editor.js`
I have looked at it quickly but couldn't pinpoint the section of code that's causing the issue.
Krasen " krasenslavov
Future Releases 51809 What happens to the about page with major auto-updates? francina Help/About normal normal Future Release defect (bug) assigned 2020-11-17T22:40:56Z 2023-03-20T19:56:03Z "We love our about pages and put a lot of work into them, but moving forward fewer and fewer sites will be seeing the about page as they move to major auto-updates and won't be redirected to it after hitting the update button. It's still there under the W menu, but not as much of a push to check out what's new.
Some possibilities:
* A prompt saying ""hey you've updated to the latest and greatest WordPress! Check out what's new!"" (or similar, noting that notice fatigue is real, and also that this is a reasonably common pattern in constantly updating apps)
* Get rid of the about page but prompt to check out the .org announcement post
* Get rid of the about page (a little sad)
* Leave as-is and just accept that fewer people will see it (also sad)" helen
Future Releases 58595 Add a new admin page with support information and resources Help/About 3.1 normal normal Awaiting Review enhancement new 2023-06-22T01:08:57Z 2023-06-22T01:08:57Z "The links under the 'W' menu are little used links in a high-traffic context. They are also external links in a menu that otherwise only accesses information within WordPress.
Following up from discussions on #55960, I'm proposing that we remove the dropdown of links currently attached to the 'W' menu and replace it with a single link for support and resource information.
This would allow us to create a page that offers much more significant user and developer assistance by directing users to a wide variety of resources on WordPress.org.
" joedolson
Future Releases 21583 Improve discoverability and visual design of Screen Options and Help Panels Help/About normal normal Future Release enhancement new 2012-08-14T22:34:05Z 2023-12-19T19:25:49Z "The Screen Options and Help panels are not very discoverable and, in part because of this, aren't very helpful to our users.
Here are the problems with them right now:
* Most users are blind to these tabs.
* The labels and positioning give little indication as to what these tabs actually do.
* For a lot of users, Help is not that helpful.
*They’re position in the admin creates yet another point of navigation for users to be aware of (and per #1, most of them aren’t).
* The very wide container for text makes a lot of the help text difficult to read.
Here are some proposals to improve the design and discoverability of these tabs (related images and mockups are here: http://make.wordpress.org/ui/2012/08/06/we-did-some-brainstorming-at-dev-day-today/) :
* Adding icons to these tabs would (hopefully) both make these tabs more visible and give a better indication as to what these tabs too.
* Moving these to the right side of the toolbar would give even more context to what these do, as they would be grouped with other user-specific settings.
* (6) The toolbar dropdown would allow for a slimmer content area for better readability.
* (7) The slimmer content area would let us make screen options read like a list for better scannability.
* (4/5) Putting the gear on the upper right would standardise with several other web apps (Twitter, etc).
Related: #21326" chexee
Future Releases 14432 Role-based help text garyc40 Help/About 3.0 normal normal Future Release enhancement assigned 2010-07-27T18:53:00Z 2023-08-24T19:54:11Z The text in the Help tab is based on the screen seen by an admin. We should make it so the role of the logged in user determines the text. jane
Future Releases 60123 Suggestion for Update text From Privacy to Privacy Policy Help/About 4.9 normal normal Awaiting Review enhancement new 2023-12-20T21:13:03Z 2024-02-15T16:26:06Z I have a suggestion, please replace the text from Privacy with Privacy Policy dilip2615
Future Releases 53381 Events and News Widget: Multi-day event placeholders are not replaced with dates in some languages I18N normal normal Future Release defect (bug) assigned 2021-06-11T02:12:29Z 2021-11-16T20:15:54Z "When the user profile language is set to Korean or Japanese, the multi-event WordCamp dates are not correctly displayed in the dashboard widget. This only reproducible only in a certain environment (see how to reproduce section below):
The placeholders are not replaced with numbers and the exact translation is shown, such as `%4$d年%1$s月%2$d日〜%3$d日` (Japanese) and `%4$d년 %1$s %2$d일–%3$d일` (Korean).
The strings in question: [https://translate.wordpress.org/projects/wp/dev/admin/ja/default/?filters%5Bterm%5D=%251%24s+%252%24d%E2%80%93%253%24d%2C+%254%24d&filters%5Bterm_scope%5D=scope_any&filters%5Bstatus%5D=current_or_waiting_or_fuzzy_or_untranslated&filters%5Buser_login%5D=&filter=Apply+Filters&sort%5Bby%5D=priority&sort%5Bhow%5D=desc Japanese] / [https://translate.wordpress.org/projects/wp/dev/admin/ko/default/?filters%5Bterm%5D=%251%24s+%252%24d%E2%80%93%253%24d%2C+%254%24d&filters%5Bterm_scope%5D=scope_any&filters%5Bstatus%5D=current_or_waiting_or_fuzzy_or_untranslated&filters%5Buser_login%5D=&filter=Apply+Filters&sort%5Bby%5D=priority&sort%5Bhow%5D=desc Korean]
How to reproduce:
If you have access to any WordCamp site's dashboard, go to Users > Profile and set your language to 日本語 (Under ""Italiano""). Go to /wp-admin/ and check the Events and News widget.
Depending on the server the site is on, there are at least 3 variations: garbled date, correct translation, or incorrect word order (for all dates, not just multi-day events)." Nao
Future Releases 40643 Russian post date month translation is incorrect I18N 4.7.4 normal normal Awaiting Review defect (bug) new 2017-05-02T22:45:20Z 2017-05-02T23:37:59Z "Was wondering if you could fix the post dates for the Russian translation of the months.
You can see for example that the post date on https://cyhacker.com/ says ""3RD МАЙ 2017"", for example. This is using the [https://translate.wordpress.org/projects/wp/dev/ru/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=2723&filters%5Btranslation_id%5D=76439 normal form] of ""May"".
It should be ""3RD МАЯ 2017"", which is using the [https://translate.wordpress.org/projects/wp/dev/ru/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=1367227&filters%5Btranslation_id%5D=31279546 genitive form] of ""May"".
Not sure if or where I could tweak this. This actually goes for all months, where the genitive form should be used." chepurko
Future Releases 47546 The language used for the `lang` attribute isn't validated before being used I18N normal normal Awaiting Review defect (bug) new 2019-06-15T13:48:41Z 2024-02-28T14:14:35Z "In the admin area, the `lang` attribute can be populated directly from the `WPLANG` option or the user's `locale` meta field. In these cases, no check is performed to ensure that the corresponding language files exist before using the value for the `lang` attribute.
This can come about if the language files that are used by a user or the site are deleted, or the value is otherwise modified to include an incorrect value.
For example, running `wp user meta update admin locale it_IT` will result in `lang=""it_IT""` being added to the `` element, even if the corresponding language files don't exist. This can result in the browser being confused about the language of the page, and can also result in assistive technology handling or pronouncing text incorrectly.
It would be preferable if the existence of the corresponding language files was checked before the `lang` attribute was output, falling back to `en_US` as necessary. I'm not sure if it's best to make this change in the `get_language_attributes()` function, or lower in the `determine_locale()` or `get_bloginfo()` functions." johnbillion
Future Releases 52438 Theme translations in WP_LANG_DIR are loaded twice, no (logical) way to override from a (child) theme. I18N 5.6 normal minor Future Release defect (bug) new 2021-02-03T19:21:45Z 2021-07-22T12:19:57Z "I was trying to override some translation strings from within a child theme for a (parent) theme that has online translations (from translate.wordpress.org) that WordPress downloaded into WP_LANG_DIR/themes/domain-locale.mo.
There are a couple of problems getting this to work, at least one of which (2)) I believe is a bug.
1) Both `load_theme_textdomain()` and consequently `load_child_theme_textdomain()` will give priority to .mo files found in WP_LANG_DIR and will completely ignore theme based .mo files when the former exist. I tried to circumvent this with `load_textdomain()` directly, see [https://wordpress.stackexchange.com/a/249127 here] and made it load before the parent theme's call to `load_theme_textdomain()` in order to make my translations [https://core.trac.wordpress.org/browser/tags/5.6/src/wp-includes/l10n.php#L684 take precedence in the merge]. I did like proposed in the docs, i.e. in the child theme's functions file (that loads before the parent's) via the `after_setup_theme` hook.
The question here is should there be a better (more intuitive) way? Maybe calling `load_theme_textdomain()` with the parent's text domain again (and make it work, of course)?
2) It did not seem to work, so I tried to log which .mo files WordPress tries loading with [https://developer.wordpress.org/reference/hooks/load_textdomain/#comment-4497 this code]. This showed that the downloaded translation in WP_LANG_DIR gets called twice. The 2nd call is from the parent theme's `load_theme_textdomain()` and my effort from 1) successfully put my translaions before that 2nd call. But the 1st .mo file loading... I traced this down to [https://core.trac.wordpress.org/browser/tags/5.6/src/wp-includes/l10n.php#L1307 this code] within `l10n.php`: the check with `_load_textdomain_just_in_time()` actually loads the .mo file via `load_textdomain()` and way to early. And anyway, does this check make any sense:
{{{
if ( isset( $l10n[ $domain ] ) || ( _load_textdomain_just_in_time( $domain ) && isset( $l10n[ $domain ] ) ) )
}}}
If `isset( $l10n[ $domain ] )` is `false`, how could the condition after `||` ever be `true`?
Removing the OR condition with the call to `_load_textdomain_just_in_time()` also removes the 1st logged .mo file. Then, my translations from the child theme were the first to load and worked like intended, i.e. merge with the parent's translations that come afterwards.
It also works when calling `load_textdomain()` in the (child) themes functions file directly (not bound to a hook), but that's not how I understand that this should be done?!
I reproduced the double loading .mo files with a fresh WordPress 5.6 install and the default Twenty Twenty-One theme in formal German language.
I hope, I did not miss anything crucial and this report is of any help.
" captain.crash
Future Releases 30049 wp_load_translations_early does not without WPLANG defined I18N 4.0 normal normal Awaiting Review defect (bug) reopened 2014-10-20T14:24:48Z 2019-05-01T18:27:18Z "In the Hungarian WP 4.0 the maintenance text appears in english.
" szepe.viktor
Future Releases 37287 wp_print_admin_notice_templates() does not use _n*() for plural forms swissspidy I18N 4.6 normal normal 6.6 defect (bug) assigned 2016-07-05T12:23:24Z 2024-02-28T14:25:48Z "Function wp_print_admin_notice_templates() (https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/update.php#L615) does not properly use _n() and related functions for plural forms of its strings. It just makes a simple if (count ===1) check and uses two different strings - one for singular, one for plural form.
This presents a problem when translating into languages that have more than one plural form, or more complicated rules for singular form usage. For example, in Lithuanian we also use singular form for 21, 1241 and any other number that ends with 1 (except for 11). And we have two plural forms - one for numbers ending with a zero, another for everything else. In current situation we can not have a proper translation here. " ideag
Future Releases 52696 Add a way to determine whether a translation exists I18N normal minor Future Release enhancement new 2021-03-02T20:34:53Z 2024-03-13T20:09:06Z "Currently `__()` wraps `pomo/translations.php::translate_entry()̀` in such a way:
{{{#!php
$singular,
'context' => $context,
)
);
$translated = $this->translate_entry( $entry );
return ( $translated && ! empty( $translated->translations ) ) ? $translated->translations[0] : $singular;
}
}}}
If no translation exist, the original is returned which is the more frequently desirable behavior.
But in some cases, the user may want to know whether the string obtained from `__()` is actually the translation or the original.
**Use-case**: I'm inserting programmatically taxonomy terms translated using a 3rd-party service. I'm iterating over `[__(""t1""), __(""t2""), ...]` and I would like to only insert those actually translated, ignoring the others.
Currently, I've no way to discriminate between the original and the translation (which may or may not be identical btw).
I'd like a function providing me this ability like. One such example
`__i18n_exists($term, $context = null);`" drzraf
Future Releases 47511 "Add specific ""default settings"" for different locales" I18N normal normal Future Release enhancement new 2019-06-08T23:49:56Z 2022-09-30T13:33:48Z "In the UI there are several settings that are locale-specific, like ""Date Format"", ""Time Format"", ""Week Starts On"", etc. Also some locale specific differences in displaying information, like user's name on the Profile screen. In East Asia and some parts of Europe (and others) it is not accepted to have ""John Doe"", it is ""Doe, John"" (with or without the comma). For these locales the order of the form fields for First Name and Last Name should be swapped.
This is handled well in MacOS and Windows. Not sure if we need all the options they offer, but a default per-locale settings would be great to have. Then they can include word-count methods (""words"" vs. characters), default lengths for strings/excerpts, (perhaps) some encoding changes for emails, decimal separator (`3,14` vs. `3.14`), grouping separator (`1 000 000` vs. `1,000,000`), and anything else that is locale-specific." azaozz
Future Releases 38869 "Change ""Site Default"" in User Profile Options for Language to ""Site Setting""" I18N 4.7 normal normal Awaiting Review enhancement new 2016-11-19T13:32:58Z 2022-09-11T17:46:43Z "In https://core.trac.wordpress.org/browser/trunk/src/wp-includes/l10n.php?marks=1148#L1148 is the original text-string ""Site Default"" the very first choice in the dropdown menu for the custom user profile language choice.
Wouldn't it be better to change that to ""Site Setting""?
Because it does mean that a user profile might have the same language as it is set under Settings > General in the admin. It is not necessarly a default language, that is choosen in the general site settings for the Website frontend appearance, which might justify the string ""Site Default"" there.
" transl8or
Future Releases 37057 Creation of an esc_html functions for _n(), _nx(), _ex(), and number_format_i18n() I18N normal normal Awaiting Review enhancement new 2016-06-09T00:32:50Z 2022-03-25T18:43:48Z "Using a lot of the translation functions generates an error using the WordPress Coding Standards under PHPCS such as:
Expected next thing to be an escaping function (see Codex for 'Data Validation'), not '_nx'
Certain functions like `_x()`, `_e()`, `__()` all have equivalent esc_html functions. But there are no esc_html equivalent for these other functions.
Granted one could simply wrap the statements in `esc_html()`, for the sake of consistency and standardization for theme developers, I feel that esc_html versions of these functions should be created. " zakkath
Future Releases 28197 Fallback Languages swissspidy I18N 4.0 normal normal Future Release enhancement assigned 2014-05-09T20:53:44Z 2024-02-28T14:38:59Z "We should do a better job of loading translation files in the user's language if they are available.
For instance, if a Spanish speaker has their locale set as es_MX (Spanish Mexico) it would be preferable to load any available Spanish translations files (es_ES, es_CO, etc) before returning the default (generally English).
I wrote up a quick patch, tester plugin, and plugin that demonstrate this idea. If a $mofile is not available in the user's current locale, it will search for and return the first available translation that is also in the same language.
A better option might be to create a filterable stack rank of locales for WordPress to search for within the language before returning the default. Other suggestions are also welcome.
This idea was also discussed in an ""ideas"" thread:
http://wordpress.org/ideas/topic/fallback-to-generic-language-file-when-specific-locale-file-absent" downstairsdev
Future Releases 20739 Improve Excerpt generation for non-english locales I18N 3.4 normal normal Future Release enhancement new 2012-05-23T21:09:45Z 2024-02-28T16:40:01Z "This is a follow on from #16079 to further improve the code.
While we improved it in 3.4 we can do a better job to more fully support the customisation for all different locales.
For known issues see the comments on the previous ticket." westi
Future Releases 39639 Increase cache time on wp_get_available_translations() I18N 4.8 normal normal Awaiting Review enhancement new 2017-01-19T15:02:46Z 2017-01-19T20:11:20Z "Currently there's no nice way of retrieving a full list of supported languages / locale codes from WordPress. The closest seems to be:
{{{
require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
$languages = wp_get_available_translations();
}}}
This calls the WordPress.org API to retrieve the list, making this approach not wholly suitable outside of its original intended use during WordPress install. The results are currently cached for 3 hours so it's not that the API will be called every time this function is called, however it seems that the 3 hours could be extended reasonably safely without causing any detriment.
Patch attached that extends the cache time to 24hrs. " leewillis77
Future Releases 42721 Introduce native language name as a WP_Locale property I18N 4.9 normal normal Future Release enhancement new 2017-11-28T03:11:50Z 2019-01-08T10:27:49Z "At the moment, displaying the current locale's native name is only possible by reusing `wp_get_available_translations()`, which performs an external request to the translations API and stores the result in a transient.
It would be easier if the native name was available as a `WP_Locale` instance property.
Use case: [41198] introduced [source:tags/4.9/src/wp-includes/script-loader.php?marks=391-445#L391 50+ strings with language names] for MediaElement.js. Looking at the code, they are used as subtitle track labels, unless the track has its own label.
This is only a subset of all locales supported by WordPress. If the goal is to make sure the current locale's name can be used as a subtitle track label, it doesn't make much sense to translate the whole list to 100+ languages." SergeyBiryukov
Future Releases 40769 Translators' note required for singular/plural strings where both strings are in the singular form I18N 4.8 normal normal Awaiting Review enhancement new 2017-05-15T14:33:18Z 2021-11-23T11:44:53Z "There is some confusion for translators in GlotPress over WordPress 4.8.x as some of the singular/plural strings are singular in the originals. For example:
Singular: Audio Widget (%d)
Plural: Audio Widget (%d)
A translators' note would be handy here to explain why the plural is not Audio Widget'''s''' in this case.
This currently relates to four strings:
[https://translate.wordpress.org/projects/wp/dev/en-gb/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=4483096&filters%5Btranslation_id%5D=49716087/ Audio Widget]
[https://translate.wordpress.org/projects/wp/dev/en-gb/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=4483106&filters%5Btranslation_id%5D=49716079/ Image Widget]
[https://translate.wordpress.org/projects/wp/dev/en-gb/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=4483125&filters%5Btranslation_id%5D=49716063/ Media Widget]
[https://translate.wordpress.org/projects/wp/dev/en-gb/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=4483114&filters%5Btranslation_id%5D=49716070/ Video Widget]" pidengmor
Future Releases 37491 Improve Iranian functionality in WordPress johnbillion I18N normal normal Future Release feature request assigned 2016-07-27T18:33:49Z 2020-01-07T20:22:06Z "I'm currently one of [https://wordpress.org/plugins/wp-parsidate/ Parsi Date] core developers. Parsi Date, enables Shamsi calendar, aka Iranian calendar, for WordPress.
WordPress is really popular in Iran, many people use it as an accelerator in their own business, so I thought that enabling Iranian calendar, might be a good idea to step the progress of internationalizing WordPress.
Can it be enabled in WordPress? Where to start?" iEhsan.ir
Future Releases 56856 Blogger Importer: File class-feed.php is deprecated Import 4.7 normal normal WordPress.org defect (bug) new 2022-10-19T19:41:56Z 2023-11-28T22:56:10Z "The Blogger Importer plugin (tested v0.9) causes the following deprecation notice:
PHP Deprecated: File class-feed.php is deprecated since version 4.7.0! Use fetch_feed() instead. in ../wp-includes/functions.php on line 5577
`class-feed.php` was deprecated in [39449].
" ironprogrammer
Future Releases 56857 Blogger Importer: File class-wp-feed-cache.php is deprecated Import 5.6 normal normal WordPress.org defect (bug) new 2022-10-19T20:58:34Z 2022-10-19T20:58:34Z "The Blogger Importer plugin (tested v0.9) causes the following deprecation notice:
PHP Deprecated: File class-wp-feed-cache.php is deprecated since version 5.6.0 with no alternative available. This file is only loaded for backward compatibility with SimplePie 1.2.x. Please consider switching to a recent SimplePie version. in ../wp-includes/functions.php on line 5587
`class-wp-feed-cache.php` was deprecated in [49565].
" ironprogrammer
Future Releases 56858 Blogger Importer: Undefined (dynamic) properties Import normal normal WordPress.org defect (bug) new 2022-10-19T21:24:34Z 2022-10-21T01:29:57Z "Under PHP 7.4, the Blogger Importer plugin causes notices like the following:
''If new posts are imported:''
Undefined property: Blogger_Importer::$posts_done in ../blogger-importer/blogger-importer.php on line 408
== Background
[https://github.com/WordPress/blogger-importer/commit/f1c9d6a7fe42fe4b88b475c9a92a96bd7cee8dba f1c9d6a7] introduced several dynamic properties to the `Blogger_Importer` class, such as counters for skipped and imported posts.
In PHP 8.0 dynamic properties log as warnings, [https://php.watch/versions/8.2/dynamic-properties-deprecated in 8.2 as deprecations], and in 9.0 result in fatal errors.
" ironprogrammer
Future Releases 8578 Blogger import incorrectly reports saved user information Import normal normal WordPress.org defect (bug) new 2008-12-11T16:53:52Z 2019-03-15T00:30:30Z "I installed a fresh copy of WordPress 2.7 and was importing content from a Blogger site. Before beginning to import, the page claimed that Blogger account information was saved in the database and that I could restart the process. Even after pressing the ""Clear account information"" button, the message still appeared." covert215
Future Releases 35839 Escape backslashes upon export for better import Import 4.4.2 normal normal Awaiting Review defect (bug) new 2016-02-15T21:10:19Z 2017-03-30T01:05:40Z "Exporting a WordPress site and importing it again will lose backslashes in Post content.
For example, if you had a post discussing c:\Windows\System32\calc.exe it would be imported as c:WindowsSystem32calc.exe" JasonH09
Future Releases 39381 Export->Import WordPress menu bug when image is saved as label Import 4.7 normal normal Awaiting Review defect (bug) new 2016-12-23T15:11:28Z 2017-06-06T04:06:22Z "So I use this as ""Home"" content value:
{{{
}}}
And then I export with:
WordPress -> Tools -> Export -> All
And then I import with this official plugin:
wordpress-importer.0.6.3.zip
( https://wordpress.org/plugins/wordpress-importer/ )
And then I see that it was 'Home' text imported (the actual page name).
Another bug is if I leave the field empty, after saving it get gone from Navigation menu at all. While I may want to use CSS for that. And assigning a CSS class to menu item is gone/missing. (or maybe that was from the theme), but I want to have an option to leave a blank element and hook to it's css.
" KestutisIT
Future Releases 39301 Importer associates all posts with uncategorized term in WP4.7 PHP7 Import 4.7 normal normal WordPress.org defect (bug) new 2016-12-16T01:00:20Z 2017-04-01T08:33:47Z "The WordPress Importer plugin fails to remove the uncategorized term from the post which has at least one category set. It's a pretty quick fix, though.
wordpress-importer.php after line 729
Insert:
{{{#!php
if ( 'category' == $term['domain'] )
$post_is_categorized = TRUE;
}}}
wordpress-importer.php after line 753
Insert:
{{{#!php
if ( isset( $post_is_categorized ) && $post_is_categorized ) {
wp_remove_object_terms( $post_id, 'uncategorized', 'category' );
unset( $post_is_categorized );
}
}}}
And BTW, is there somewhere I can make pull requests for WP like on github? That will make it much easier to suggest code changes.
" staymanhou
Future Releases 24995 Importer does not check to see if DOM is available Import 3.6 normal normal WordPress.org defect (bug) new 2013-08-08T20:55:34Z 2017-02-21T09:11:58Z "I have a WordPress network with many blogs. I exported a few posts from one blog (export file attached with some details sanitized). I then imported the posts into another blog.
Not only does the import probably do nothing, the '''/''blogname''/wp-admin/import.php''' page stops rendering after:
{{{
Import WordPress
}}}
That is, if you do a view source on the page, the above '''h2''' element is the last thing you see.
Expected behavior: execution does not stop mid-page, and if there is an error, it is displayed for logged-in administrative users.
I am logged in as a network administrator." novasource
Future Releases 26247 Importer fails when importing from a server on a private network Import normal normal WordPress.org defect (bug) new 2013-11-25T22:18:00Z 2018-03-02T17:08:23Z "WordPress import (using the wordpress-importer plugin) does not work correctly if both machines are on the same private network. Text content imports, but all media imports fail. I have traced the problem down to a test that is done in wp-includes/http.php. Though i am not deeply familiar with the WordPress code base, the test seems unnecessary to me, and if it is commented out then the import function will behave as expected.
I have included a patch against WordPress 3.6.1 that demonstrates where the problematic test is and resolves the issue." dramaley
Future Releases 28297 Losing custom nav menu data while importing / exporting XML Import 3.9.1 normal normal Awaiting Review defect (bug) new 2014-05-18T03:19:46Z 2018-02-26T15:52:39Z "I have added few fields to the menu for mega menu functionality: https://gist.github.com/mharis/150f43e09adf72d7d0bb
This works fine and when I tried to export the site content which did have all the navigation items and the custom fields and its values in the XML file (https://www.dropbox.com/s/7i2l3x2mvpgup58/xml-test.xml) which is perfectly fine.
The problem happens when importing, only the keys are imported for the custom navigation menu fields and not its value. The values are stripped even through the data seems correct in the XML file.
Any thoughts over it?
" isharis
Future Releases 41952 WP import: Bug with import gziped file from web Import 4.8.2 normal normal Awaiting Review defect (bug) new 2017-09-22T04:54:24Z 2017-09-22T04:54:24Z "When i import svg image with gzip compression, then i give error ""Remote file is incorrect size""
In [https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/wordpress-importer.php#L1007 wordpress-importer.php:1007] your check file size.
If file is gziped, when filesize on disc != content-length in headers" arybnikov
Future Releases 41034 importing users in multisite: should add existing users to the current blog Import 4.8 normal normal Awaiting Review defect (bug) new 2017-06-13T20:44:57Z 2020-10-28T09:58:24Z "When importing a WXR file in a multisite setup, if
1. an author in the WXR file exists in the multisite but **not** in the current blog; and
1. the ""import author"" route is taken (i.e., neither ""create new user"" nor ""assign posts to an existing user"" route is taken)
then a ""Failed to create new user"" error is reported.
Instead of that error, the existing multisite user should be added to the current blog.
I can create a patch that implements this if folks think it would be a good idea." pbiron
Future Releases 6393 Export & import blogroll with categories Import normal normal Future Release enhancement new 2008-03-26T17:01:38Z 2019-03-15T00:36:00Z "I have attached a patch which will export Blogroll OPML file having a category attribute in it. It is valid to have a category attribute in outline tag. Generated OPML file by wp-links-opml.php has been validated by http://validator.opml.org/.
I have also updated link-import.php and link-parse-opml.php files in wp-admin to parse category attribute and create link_category in database if it does not exist and assign link to that category.
This enhancement will automatically export and import link-categories with links." jayminkapish
Future Releases 5678 Respectfully strip newlines in some importers hansengel* Import 2.5 normal normal WordPress.org enhancement accepted 2008-01-16T11:20:02Z 2019-03-15T00:39:32Z "Filing this as an enhancement because it could do with some discussion and insight from wiser and more experienced heads before being labelled ""defect"". :-)
I noticed while helping some users import their blogs that importers of HTML content (such as the RSS importer) don't tidy up superfluous newlines in the import format, which results in unnecessary {{{ }}} elements after {{{wpautop()}}} filtering for display. They turn up in the editor too, which reinforces the problem.
I've adapted one of the filter functions to strip superfluous newlines, and changed my RSS importer to use it. The results have been warmly welcomed by users, who no longer have to clean up their imported blog content. ;-)
{{{strip_newlines()}}} should probably go into {{{wp-includes/formatting.php}}}, if there isn't already a function that already serves this purpose. I couldn't find one, so I adapted this.
Given that similar HTML block/inline-savvy string-replacement code exists in other formatting functions, perhaps there's an opportunity for some refactoring here? I feel kind of silly proposing a function that is almost entirely duplicated from other code in the core.
I've used it immediately before the ""Clean up content"" section in {{{wp-admin/import/rss.php}}}'s {{{get_posts()}}}, and in an Advogato importer that I've written (which also uses HTML as the content format).
{{{
function strip_newlines($text) {
// Respectfully strip unnecessary newlines
$textarr = preg_split(""/(<[^>]+>)/Us"", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
$stop = count($textarr); $skip = false; $output = ''; // loop stuff
for ($ci = 0; $ci < $stop; $ci++) {
$curl = $textarr[$ci];
if (! $skip && isset($curl{0}) && '<' != $curl{0}) { // If it's not a tag
$curl = preg_replace('/[\n\r]+/', ' ', $curl);
} elseif (strpos($curl, '.com (the WP site), instead they access it through www..com/blog
If I create user accounts in the admin, it sends initial password reset links to the new accounts, which have a format like www..com/blog/wp-login.php?action=rp&key=&login=
In wp-login.php, I see the case that catches the rp action, and it does something with the key and user parameters, then strips them off and redirects again to wp-login as follows:
{{{#!php
wp_safe_redirect( remove_query_arg( array( 'key', 'login' ) ) );
}}}
I'm unclear on why this line doesn't incorporate site_url as do several other places in nearby code. The user ends up getting a redirect to /wp-login.php. That is, from the '''user's perspective''' (not seeing the reverse proxy activity), it looks like:
www..com/blog/wp-login.php?action=rp&key=&login=
redirects to
www..com/wp-login.php?action=rp
which is a 404
From the '''WP server's''' perspective, it told
blog..com/wp-login.php?action=rp&key=&login=
to redirect to
/wp-login.php?action=rp
which would have been fine if there were no reverse proxy involved.
This is not the desired behavior in my case, and I would think it would be safe to redirect to
/wp-login.php?
I can work around it in the main site's rewrite rules by forcing /wp-login to /blog/wp-login, but that seems as if it shouldn't be necessary.
Thanks for your consideration." normjhansen
Future Releases 50684 Font/font-size change on login screen Login and Registration normal normal Future Release defect (bug) new 2020-07-16T19:29:59Z 2023-08-19T09:45:51Z "On Windows 10, when a user logs in, the font and the font-size in the input boxes change.
To be more precise, the wrong font and font-size is initially displayed. Only after clicking, the correct font and font-size appear.
A recording:
[[Image(https://i.imgur.com/siMssM6.gif)]]
" superpoincare
Future Releases 31830 Hard coded wp-login.php url in string Login and Registration 3.0 normal normal Future Release defect (bug) reopened 2015-04-01T06:53:58Z 2023-09-18T20:38:16Z "Hi.
I noticed that in
[https://core.trac.wordpress.org/browser/trunk/src/wp-includes/ms-functions.php?rev=32064#L1446 wp-includes/ms-functions.php] (`wpmu_welcome_notification`)
the login url is hardcoded (wp-login.php) into the string.
This will create a problem if a multisite developer has chosen to change the login page url (for security reasons).
Thanks in advance
Lena" lenasterg
Future Releases 52721 No way to filter value of $credentials['remember'] in wp_signon Login and Registration 1.5.1 normal normal Future Release defect (bug) new 2021-03-05T11:44:54Z 2021-06-02T04:45:02Z "There are famous plugins out there using wp_signon and providing $credentials, so essentially $_POST values are completely ignored. Meanwhile, $credentials lacks of 'remember' value in these plugins, so for the wp_signon function means 'remember = false'.
If you want to force that remember = 1, there's only the wp_authenticate filter available which:
1. is maybe deprecated?
2. does not pass the remember value
So, basically, there is no way to filter the remember value, when the wp_signon function is not properly called by someone." mirkolofio
Future Releases 38769 Possible password reset loop Login and Registration normal normal Awaiting Review defect (bug) new 2016-11-12T13:11:48Z 2019-03-25T21:41:17Z "
== Bug summary ==
After registering (wp-login.php?action=register) you get straight to the '''login screen''' with a small notice to check your email (wp-login.php?checkemail=registered). But logging-in is not even possible because users have to set their password via a link provided in their email in the first place. '''If users nevertheless try to login they get a misleading error message that could lead to an endless loop of password reset and the user will not be able to register.'''
'''Bug 1:'''
There should be no login form where a user cannot log-in.
(attachment 1)
'''Bug 2:'''
There should be the message that the user has to set the password first.
(attachment 2)
'''While these things seems to be tiny the results are severe.'''
== Bug description ==
If users register they see after submitting the register form the login form with the message ""Registration complete. Please check your email."" on top. They often overlook this message and try to log-in even if they didn't set a password yet.
This leads to situations where users are not able to register:
1. When users try to log-in directly after registration they get the message that the password is wrong. (see attachment)
2. Because of the misstated error message they go to the ""Lost your password?"" form and try to get a new password.
3. They now check their email for the first time and open the email from the registering (!) and not the ""lost password"" email.
4. They click on the link for setting the password in the register email.
5. This link is invalid because of step 2.
6. They then try again to get a new password.
7. They go back to their email account and open the email from step 2 (!) and open this link. Because of step 6 the link is again invalid.
8. They try to get a new password.
9. And so on.
Having the impression to be trapped in an endless loop they often think that the website is full of bugs, are not interested to register anymore or contact the support for removing bugs.
'''I could provide dozen if not even hundreds of cases where this happened to my website.'''
== How to reproduce the bugs?==
1. Try to register.
2. Try to log-in even without a password (put your usual password in it).
3. Set you password back after the error message.
4. Go to your email account and open the register email. Click on the link.
5. You get the message that the link is invalid. Set you password back.
6. Open the email from step 3 and so on.
== tl;dr ==
After registration you see the login form even if you don't set a password yet. If you try to log-in (even if you don't set a password yet) you get a misleading error message that could trap you in an endless password reset process. Users than give up to register or contact support. It is not just theory. Every day, I lose angry customers or have to support them. Please have a look to the attachments." yetAnotherDaniel
Future Releases 42481 TEST_COOKIE and LOGGED_IN_COOKIE secure flag create issues on non-secure login Login and Registration 4.9 low normal Awaiting Review defect (bug) new 2017-11-09T01:30:29Z 2019-04-29T08:24:10Z "Once a user has accessed the login form over https (possible without a valid ssl license, ignoring the browser warning) the WordPress TEST_COOKIE will have the secure flag set https://core.trac.wordpress.org/browser/trunk/src/wp-login.php#L433
When that user goes back to login over http, this will no longer be possible. The test cookie will be ignored by the browser because of the secure flag.
Without the test cookie, all login attempts will be redirected back to the login form with a warning about cookies not being set by the browser. Most users will not know why this happens and will no longer be able to log in.
The user will have to go back to https, open the developer toolbar, delete the cookie and then back to http. Only then the test cookie will be set again, this time without the secure flag.
A work-around to prevent users from being locked out like this, is to make the test cookie name ""http/s aware"" with something like this in wp-config.php:
{{{
$secure = ( isset($_SERVER['HTTPS']) && 'on' == $_SERVER['HTTPS'] ) ? '_sec' : '';
define( 'TEST_COOKIE', 'wordpress' . $secure . '_test_cookie' );
}}}
(using wordpress_sec for secure cookie similar to the auth cookie)
But... the real question is:
'''Why does the test cookie need the secure flag at all?'''
There is no sensitive information passed and it's only there to (as the name suggests) test for cookie unaware or blocking browsers. At least as far as I can tell, there would be no possible problem with simply removing this cookies secure flag. This will not affect any sensitive login/session cookies secure flags.
Or am I mistaken? Are there use cases where the browser can be set to accept cookies over https while blocking them over http?
" RavanH
Future Releases 60726 The WordPress core password reset needs to pre-populate the username to meet WCAG 2.2 joedolson* Login and Registration normal normal 6.6 defect (bug) accepted 2024-03-07T17:09:25Z 2024-03-07T19:33:35Z "According to new WCAG 2.2 success criterion for [https://www.w3.org/TR/WCAG22/#dfn-processes 3.3.7 redundant entry].
The criterion establishes that information previously entered by or provided to the user that is required to be entered again the same process is either:
* auto-populated, or
* available for the user to select
There are 3 exceptions:
* re-entering the information is essential,
* the information is required to ensure the security of the content, or
* previously entered information is no longer valid.
Once the user has performed the process of requesting a new password, the redirected form should have the username filled-in to pass. As of now, this is the form that the user is redirected to:
" estelaris
Future Releases 49633 Trim cookie paths Login and Registration 5.3.2 normal normal Awaiting Review defect (bug) new 2020-03-12T16:00:09Z 2020-03-12T16:00:09Z " I had just migrated a WP website that was very old. I encountered an issue that took several hours to debug.
The site was on PHP 5.6 and I updated everything to use PHP 7.3. At PHP 5.6 this was not an issue, but was at PHP 7.3.
The site seemed to be loading fine. No errors in the PHP error logs. However, I was not able to login to the WP Admin. After I defined error logging true. I get this:
[[Image(https://kevinbrent.com/images/1.png)]]
After several hours of debugging I found this:
[[Image(https://kevinbrent.com/images/2.png)]]
I was able to fix this in the DB. But, feel that WP could simply trim
spaces from cookie paths since they are not allowed by PHP.
[[Image(https://kevinbrent.com/images/3.png)]]
There are 3 constants that require this attention.
{{{
COOKIEPATH
}}}
{{{
SITECOOKIEPATH
}}}
{{{
PLUGINS_COOKIE_PATH
}}}
" Kevin Brent
Future Releases 42377 "login screen empty fields msgs are not in sync with the ""Username or Email Address"" field label" Login and Registration 4.8.2 normal normal Awaiting Review defect (bug) new 2017-10-30T08:59:29Z 2017-10-30T08:59:29Z "(My first trac bug report everrrrr ...)
Recently the ""Username"" field label on the login screen (and other places) changed to ""Username or Email Address"" and users can now be authenticated using either a username or an email address.
Authentication by username is default implemented by means of a callback (wp_authenticate_username_password) hooked to the authenticate filter.
Authentication by email address is default implemented by means of an additional callback (wp_authenticate_email_password) hooked to the authenticate filter.
Implementation seems to be a bit sloppy and it doesn't provide much flexibility.
This bug report will concentrate on flexibility in the empty field error msgs displayed when the ""Username or Email Address"" field is left empty (while providing input for the ""Password"" field).
Below I'll describe 3 login situations and the resulting (mostly incorrect) error msgs followed by what I think are the correct error msgs.
Note that the ""Username or Email Address"" field is intentionally left unchanged for convenience. This bug report is not about changing the field label as displayed in the login screen. WordPress core as is provides enough flexibility to do that.
So here we go.
1. Both default authentication methods are hooked to the authenticate filter.
On submitting an empty ""Username or Email Address"" field while providing a password the following msg is displayed:
'''ERROR''': The username field is empty. (<== wrong)
'''ERROR''': The '''Username or Email Address''' field is empty.
2. Only the wp_authenticate_username_password method is hooked to the authenticate filter.
On submitting an empty ""Username or Email Address"" field while providing a password the following msg is displayed:
'''ERROR''': The username field is empty. (<== actually correct)
'''ERROR''': The '''Username''' field is empty.
3. Only the wp_authenticate_email_password method is hooked to the authenticate filter.
On submitting an empty ""Username or Email Address"" field while providing a password the following msg is displayed:
'''ERROR''': The email field is empty. (<== wrong)
'''ERROR''': The '''Email Address''' field is empty.
Since I prefer an error msg where the field label name stands out I've capitalized the field name as well as displayed them in bold. Also helps in reading the error msgs and see the differences.
As can be seen we have an issue here. We can't always seem to get the proper field label reference in the empty field error msgs when submitting an empty ""Username or Email Address"" field.
There must be a way for the methods to refer to their own field label part (Username/Email Address) when individually hooked to the authenticate filter but when both are hooked at the same time refer to the combined field label (Username or Email Address) in the error msg.
I think the program logic needs to be changed so all three situations return the correct empty field error msg on login screen submit." nlpro
Future Releases 40249 period as last character in username breaks activation link Login and Registration 4.7.3 normal normal Awaiting Review defect (bug) new 2017-03-24T10:38:43Z 2017-03-24T10:40:31Z "Many browsers and mail clients are converting text-URLs to clickable links.
If a user chooses an username with a period at the end, the activation link in the mail could be incorrect, because the mail client thinks, the period is a punctuation character.
See this (non-working) URL for an example:
https://www.domain.de/wp-login.php?action=rp&key=XXXXXX&user=ballspieler96.
The period at the end is part of the username but not part of the URL.
Fix:
Don't use the username as last parameter. Instead use a defined parameter, which won't have periods as value (i.e. 2action"" or ""key"")" ilikewordpress
Future Releases 23197 wp-activate.php, without explanation, does not load site plugins Login and Registration 3.0 normal normal Future Release defect (bug) reopened 2013-01-14T12:54:26Z 2022-06-14T01:36:09Z "I am the developer of a Wordpress plugin that modifies the Registration process. I am porting my code to Wordpress Multisite and am running into an odd obstacle. During the signup process, I store meta data in the signups table. I intend to restore that data after the user has activated their account using hooks located in wp-activate.php. I learned the hard way that wp-activate is altering the load sequence with the following flag.
define( 'WP_INSTALLING', true );
The preceding comment says ""Define ABSPATH as this file's directory"", which to me does not entirely jive up. Regardless, with this flag in place, when Wordpress would normally determine what plugins to load in wp_get_active_and_valid_plugins, instead it returns an empty array. I do not believe this is the desired behavior.
My solution has to been to create a small ""must-use"" plugin simply for my activation related code. This however, is not a desirable solution since must-use plugins must be manually installed. I cannot determine much of an alternate solution; I cannot modify that flag in a plugin at any level since my plugin would never be loaded for it to get a chance to modify the flag. It is a bit of a chicken and the egg problem." radiok
Future Releases 23637 wp-signup.php has overly aggressive CSS Login and Registration 3.0 normal normal Future Release defect (bug) new 2013-02-27T14:33:46Z 2020-03-04T06:25:13Z The CSS added through wp_head by wp-signup.php stops Multisite form fields from being styled through inheritance. Allowing inheritance will result in more consistent styling with the active theme (for example, field font-size). kwight
Future Releases 40595 wp_authenticate_username_password() should respect WP_Error object generated by higher priorities Login and Registration 4.7.4 normal normal Awaiting Review defect (bug) new 2017-04-28T13:46:54Z 2017-04-28T13:59:39Z "If I've read through #19714 but believe this issue should be reopened. This issue affects anyone who needs to alter the normal authentication process by hooking into the authenticate filter at a high priority. Functions in the process flow should respect a WP_Error object if that is what it is handed, including wp_authenticate_username_password().
'''Expected Behavior'''
function hooks ''authenticate'' filter, assigns priority 10. Function invalidates authentication attempt and returns a WP_Error object. Authentication should fail and error message displayed to user.
'''Current Behavior'''
Function hooks ''authenticate'' filter, assigns priority 10. Function invalidates authentication attempt and returns a WP_Error object. wp_authenticate_username_password() ignores WP_Error object, attempts authentication and returns its own error message, or goes ahead and authenticates the user.
Functions could assign a priority less than 20 (i.e. 30), but then when will be required to decipher error codes and/or the user object to then determine if authentication should continue, '''after''' an authentication attempt has already been processed by wp_authenticate_username_password(), even if no authentication should have been attempted. In additon, if wp_authenticate_username_password() is not going to respect WP_Errors from higher priorities, why not assign it a priority of 1 and make it the very first item in the authentication process?
" gilzow
Future Releases 43080 Allow access to triggered WP_Error when using login_errors and login_messages filters Login and Registration 4.9.1 normal normal Awaiting Review enhancement new 2018-01-12T21:39:59Z 2020-10-13T03:28:56Z "Hi,
There are currently 2 filters login_errors et login_messages but everything is string. As a consequence this is translated. I would be nice to add $wp_error (WP_Error) in these filters to make it even more customizable.
" jmlapam
Future Releases 17948 Enhancements to the login and registration forms wpdavis Login and Registration 3.2 normal normal Future Release enhancement new 2011-06-30T16:25:01Z 2017-10-06T16:23:13Z "I would like to propose a significant overhaul of the registration and login forms for 3.2, which I'd be happy to take on. A few things that I think would be helpful:
Combine registration processes for multisite and single-user into one form on one page.
Allow the registration and login to be templatized — no reason this should be for MS only.
Standardize filters, actions and variables between MS and single-user when at all possible.
A few related tickets:
#17904
#17306
#17085
#16866
#16411
#17630" wpdavis
Future Releases 56224 Hardcoded wp-login.php vs login_url filter? Login and Registration normal normal Future Release enhancement new 2022-07-15T08:42:35Z 2023-09-18T20:51:29Z "The login_url filter allows changing allows changing the login URL.
However there are a few places, where wp-login.php is hardcoded.
Is the filter safe to use to modify the login url? Should (can?) those hardcoded wp-login.php in core be changed?" malthert
Future Releases 39929 "Improve ability to customize ""nav"" links below login form." Login and Registration 4.8 normal normal Awaiting Review enhancement new 2017-02-21T19:07:00Z 2017-02-21T19:11:52Z "In adding a Single Sign-On option to a site, I ran into trouble while trying to add a link to the login form. Flexibility could be introduced by adding an action inside each `p.nav` in `wp-login.php`, but there's already duplicated code. So, I've added a function that builds the output and allows plugins to add new links or change the existing links.
Thanks for considering my request." dcavins
Future Releases 42053 There should be an option to make wp_login_form() functions's username and password input field required. Login and Registration 4.9 normal normal Awaiting Review enhancement reopened 2017-10-01T11:47:32Z 2019-04-24T22:03:20Z There should be options to make the `username` and `password` filed required if necessary or if any developer wants to make it `required` by HTML in `wp_login_form()` function inside `src/wp-includes/general-template.php` file through `$args` argument. rnaby
Future Releases 40705 Unable to login to admin backend from a wordpress login modal window Login and Registration 4.7.3 normal normal Awaiting Review enhancement new 2017-05-09T19:48:11Z 2017-05-09T21:15:38Z "Hello,
I am unable to login to WordPress backend from the login modal. Always get 'ERROR: The password field is empty.' error but if I login through this link https://yourwebsite.com/wp-admin/ or https://yourwebsite.com/wp-login.php it works.
I believe the modal login should work irrespective of where you are?
Have experienced this on more than five sites.
See the attached screenshot.
http://prnt.sc/f5xwb8
Thanks" dickensayieko
Future Releases 30274 "wp-login.php Logo Image Use ""img"" tag rather than CSS background" Login and Registration 4.0 normal normal Awaiting Review enhancement reopened 2014-11-06T14:49:32Z 2017-02-19T17:53:28Z "The fact that the logo image that displays on www.website.com/wp-login.php is a background image rather than an ""img src"" html tag often makes it problematic, because support for resizing CSS backgrounds is more complicated than using ""img src"" tags. For example, it seems like every time I use a plugin or try to alter the logo image on wp-login.php it in some way, it takes some combination of the perfect image size and css hacks to make it responsive.
Conversely, if it was an ""img"" tag, I could just apply ""width:100%; height:auto;"" or something like that.
So, in conclusion, I propose switching from a background image to an ""img src"" html tag.
[[Image(http://i.imgur.com/C5qwZtq.png)]]" themightymo
Future Releases 21352 wp_lostpassword_url() on multisite Login and Registration 3.3 normal normal Future Release enhancement new 2012-07-23T15:58:23Z 2021-10-20T15:03:43Z "The wp_lostpassword_url() function on Multisite outputs the link to the primary domain not the current domain.
Although it works its not what should be expected if a user is registered to use blog ID 2 but not Blog ID 1.
The lost password email generated also links back to the primary domain not the current domain.
" philly max
Future Releases 48345 Add Caps lock message to login screen Login and Registration normal normal Future Release feature request new 2019-10-17T12:05:10Z 2023-05-23T07:36:58Z "Users are often experiencing issues logging in which is a result of them having CAPS LOCK on, without them realising. Many wireless keyboards too don't have a light on them, which makes noticing this even trickier.
There are a number of plugins available that will flag to the user when the CAPS LOCK is on (a message rather than a warning as it may be intentional!) but it would make sense for this to be added into core (possibly alongside other request improvements, such as the ability to display the typed password).
Apologies if this is already a ticket - I did look but my search-fu on Trac isn't great." dartiss
Future Releases 41170 Allow the newbloguser screen to be themed Login and Registration 3.0 normal normal Awaiting Review feature request new 2017-06-25T19:59:04Z 2017-06-26T07:58:12Z "The appearance of the `newbloguser` screen is not themeable. It should be.
Related: #37921" johnbillion
Future Releases 39985 Do action before send email of retrieve password Login and Registration 4.7.2 normal normal Awaiting Review feature request new 2017-02-28T14:01:07Z 2017-03-08T02:49:10Z "Add do_action before sending email to recover password.
Inspiration: I needed to integrate an SMS sending to recover password, where I had to use retrieve_password_message filter hook to get the user's phone number.
https://github.com/WordPress/WordPress/pull/275" bonus369
Future Releases 40394 Activation email not sent to new users on Windows (have come out another time) Mail 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-08T08:59:29Z 2017-04-08T12:48:27Z "https://wordpress.org/support/topic/activation-email-not-sent-to-users/#post-9009273
I experience this into a: windowsOS/php5.6/apache2.4
when i test an user registration, the email that inform the admin about new user is sent out, while the activation email to the user not.
so to fix it on fly, i've remove (like last time) $header that seem to cause a problem:
{{{#!php
UseSendmailOptions or is_null($params)) {
//$result = @mail($to, $subject, $body, $header);
$result = @mail($to, $subject, $body);
} else {
$result = @mail($to, $subject, $body, $header, $params);
}
return $result;
}}}
" axewww
Future Releases 43206 Angle brackets around URLs can confuse email clients Mail 4.9.2 normal normal Awaiting Review defect (bug) reopened 2018-02-01T19:20:43Z 2018-07-17T23:16:30Z "In #14140, angle brackets were added to plain text emails sent by WordPress due to some email clients not handling long URLs correctly.
However in some email clients, the trailing `>` is treated as part of the link, which also causes users to end up at the wrong URL.
As there is no standardised way to make a link clickable in a plain text document I think the best solution would be for WordPress to send all mail in both `text/plain` and `text/html`." tomdxw
Future Releases 53393 Latest version of PHPMailer no longer attaches files to emails Mail 5.7.2 normal normal Future Release defect (bug) new 2021-06-14T01:18:07Z 2021-11-01T17:35:53Z "I've been trying to track down why my s3 bucket files are no longer being attached to automated emails being sent out by WordPress (using the Gravity Forms Entry Automation plugin).
I've been able to identify the latest version of PHPMailer being the reason why the attachments no longer get added. From the author:
----
''This is due to a bug fix that also closed a major security hole. PHPMailer deliberately avoids being a client for HTTP or other protocols for file attachments because it is far too risky. The solution is to take on responsibility for fetching remote files yourself. Instead of :''
{{{
$mail->addAttachment('s3://file.txt', 'file.txt');
}}}
''Do this:''
{{{
$mail->addStringAttachment(file_get_contents('s3://file.txt'), 'file.txt');
}}}
https://github.com/PHPMailer/PHPMailer/issues/2355#issuecomment-858373284
----
I reached out to the Gravity Forms authors as well as the Entry Automation authors and they both have said their plugins just generate raw notification objects and then use wp_mail() to pass the generated mail object off to the rest of my server to actually handle the sending.
Is there a way to get this working again without having to roll my WP version back? Or do y'all know how others are handling this issue?
" threeatetwo
Future Releases 47855 PHPMailer::validateAddress() fails on PHP 7.3 with libpcre2 < 10.32 Mail 5.2.2 normal minor Awaiting Review defect (bug) new 2019-08-08T20:27:05Z 2019-09-21T01:43:11Z "Due to a bug in libpcre2 < 10.32-RC1 https://bugs.exim.org/show_bug.cgi?id=2300,
this email regex validation fails in PHP 7.3 with PCRE_VERSION < 10.32.
One consequence of this is being unable to send a password reset link from the login page - the user sees the error
""The email could not be sent. Possible reason: your host may have disabled the mail() function.""
A simple test script https://gist.github.com/yolabingo/68b4f037661e702742c5abb324a3d992
PHP < 7.3 uses libpcre 8.x
PHP 7.3 uses libpcre2 10.x" yolabingo
Future Releases 40081 Remove wp-admin links from all Core emails Mail normal normal Awaiting Review defect (bug) new 2017-03-09T14:56:40Z 2017-03-09T18:32:07Z "SpamAssassin has an undocumented rule called `URI_WPADMIN`, which is triggered when it sees a wp-admin URL in a message. If the rule is triggered, the message's spam score is bumped by `2.6` points (by default), which gets the message `50%` of the way to being flagged as spam. This can be reproduced easily with [http://spamcheck.postmarkapp.com/ Postmark's spam-checker API].
SpamAssassin also has a `PHP_ORIG_SCRIPT` rule that is assigned to all messages that are sent with the default PHP `mail()` agent. It has a score of `1.5`, which brings the vast majority of Core emails sent by WordPress installations up to a score of `4.1`, which is `80%` of the way to being flagged. That's not counting any other rules that may be triggered based on message content, server configuration, etc.
From a UX perspective, it's very helpful to include links in messages that take the user directly to any actions that we can reasonably assume they'll want to perform on a message. However, from a security perspective, I think the best practice is to not include those links, because doing so trains users to expect and trust them, which makes them vulnerable to phishing attacks.
So, I think we should consider removing all links to wp-admin, and replace them with a message asking users to log in to their site instead. We can give them navigation breadcrumbs like, `To disable these notifications, log in to WordPress at example.org and navigate to: My Sites > Network Admin > Settings.`
Related #39709" iandunn
Future Releases 43425 WP_Mail BCC and CC - RCPT TO Errors Mail 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-26T22:15:08Z 2018-02-26T22:15:08Z "Adding BCC and CC Fields are having inconsistent results. Undeliverable emails, incorrect ""RCPT TO"" Addresses in SMTP Communication etc. ""RCPT TO"" is being set to ""Message-ID"".
See Tests Below - I tested with standard PHP Mail and wp_mail
If anyone has any pointers that would be great.
Windows Server 2012R2
IIS: 8.5
PHP: 7.0.9
WP: 4.9.4
No special plugins or code.
Test 1: Standard PHP Mail with CC Field
{{{
$headers = 'From: Test ' . ""\r\n"" . 'cc: myotheremail@myname.com';
$to = ""myemail@gmail.com"";
$subject = ""TEST SUBJECT"";
$body = ""Test"";
if (mail($to, $subject, $body, $headers)) {
echo(""Message successfully sent"");
} else {
echo(""Message sending failed"");
}
}}}
Results
Both emails received. Content looks ok
----
Test 2: Standard PHP Mail with BCC Field
{{{
$headers = 'From: Test ' . ""\r\n"" . 'bcc: myotheremail@myname.com';
$to = ""myemail@gmail.com"";
$subject = ""TEST SUBJECT"";
$body = ""Test"";
if (mail($to, $subject, $body, $headers)) {
echo(""Message successfully sent"");
} else {
echo(""Message sending failed"");
}
}}}
Results: Both emails were received
However. The body of each email now has the letter ""b"" appended to the content.
Body Content
{{{
b
Test
}}}
Is something in WP causing this or is this an issue in Windows PHP??
----
Test 3: WordPress wp_mail with CC Field
{{{
$headers = 'From: Test ' . ""\r\n"" . 'cc: myotheremail@myname.com';
$to = ""myemail@gmail.com"";
$subject = ""TEST SUBJECT"";
$body = ""Test"";
if (wp_mail($to, $subject, $body, $headers)) {
echo(""Message successfully sent"");
} else {
echo(""Message sending failed"");
}
}}}
Results
CC never received - SMTP Log file shows: [2018.02.26] 16:46:04 [55583] CMD: RCPT TO:<945dc26bed6e74aeec984fc4ae828e32@myname.com>
Why did the CC field get changed? It looks like the ""CC"" Field is now the ""Message-ID"" as they are the same now.
Gmail received the copy as expected.
----
Test 4: WordPress wp_mail with BCC Field
{{{
$headers = 'From: Test ' . ""\r\n"" . 'bcc: myotheremail@myname.com';
$to = ""myemail@gmail.com"";
$subject = ""TEST SUBJECT"";
$body = ""Test"";
if (wp_mail($to, $subject, $body, $headers)) {
echo(""Message successfully sent"");
} else {
echo(""Message sending failed"");
}
}}}
Results
Same as Test 3 -- The BCC Field ""RCPT TO"" command became the ""Message-ID""??
Gmail received the copy but still had the letter ""b"" appended into the message body.
Any ideas, pointers etc? Suspecting Bug in WordPress or Windows PHP.
" JWGarber1725
Future Releases 40390 Wrong time (and date) in mail header send by phpmailer Mail 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-07T12:47:41Z 2017-05-02T11:59:04Z "I noticed that some mail clients show wrong time and sometimes date (around midnight) while forwarding or otherwise dealing with emails. For ex. MS Outlook gets it wrong.
The offset is the same as my local timeoffset to UTC.
Tracking it down this is because the {{{rfcDate()}}} within ''wp-includes/class-phpmailer.php'' uses {{{date_default_timezone_get()}}} to add the date and time into the mail header. This value is forced by WP to be UTC.
Debugging rfcDate() with:
{{{
error_log( var_export( date_default_timezone_get(), true ) );
error_log( var_export( date('D, j M Y H:i:s O'), true ) );
error_log( var_export( current_time( 'D, j M Y H:i:s O' ), true ) );
}}}
I get:
{{{
[07-Apr-2017 12:01:02 UTC] 'UTC'
[07-Apr-2017 12:01:02 UTC] 'Fri, 7 Apr 2017 12:01:02 +0000'
[07-Apr-2017 12:01:02 UTC] 'Fri, 7 Apr 2017 14:01:02 +0000'
}}}
I read this ticket #39595 and I guess it will not be changed.
The ticket also says there is no WP function using the native timezone getter. This shows there is. Or at least a lib within core.
Can we modify the phpmailer class to use {{{current_time()}}} or do we need to set and reset the timezone before and after every phpmailer call?
" Drivingralle
Future Releases 39775 wp_mail miss send Content-Type with boundary when array header does not have other custom headers Mail normal normal Awaiting Review defect (bug) new 2017-02-03T07:42:43Z 2017-04-14T09:46:47Z "It's a PR send in github. https://github.com/WordPress/WordPress/pull/273
Fix empty charset in line 436.
Before:
`Content-Type: multipart/alternative; charset=`
After:
`Content-Type: multipart/alternative; charset=UTF-8`
-------------
fix `$headers[] = ""Content-Type: multipart/alternative; boundary=\""$boundary\"""";` not send when not other headers.
Test Code:
{{{#!php
"";
$headers[] = ""Content-Type: multipart/alternative; boundary=\""$boundary\"""";
$body = ""--$boundary\r\n"" .
""Content-Type: text/plain; charset=UTF-8\r\n"";
$body .= 'test';
$body .= ""--$boundary\r\n"" .
""Content-Type: text/html; charset=UTF-8\r\n"";
$body .= 'test
';
wp_mail( $to, $subject, $body, $headers );
}}}
Before:
[[Image(https://cloud.githubusercontent.com/assets/6196903/22583305/a84c5f1c-ea26-11e6-8718-2bde99d20484.png)]]
After:
[[Image(https://cloud.githubusercontent.com/assets/6196903/22583326/c4055362-ea26-11e6-8890-1da8fac8552e.png)]]
I could search some issue for this, like
http://wordpress.stackexchange.com/questions/191923/sending-multipart-text-html-emails-via-wp-mail-will-likely-get-your-domain-b
https://wordpress.org/support/topic/using-wp_mail-with-php-generated-attachments/
but still have same problem here." kn007
Future Releases 39709 Add filler content to New Site Registration email to avoid space ratio spam rule Mail normal normal Awaiting Review enhancement new 2017-01-26T19:57:08Z 2017-03-09T15:03:08Z "I noticed SpamAssassin on helpscout.net is coming very close to flagging the `New Site Registration` emails as spam.
The biggest rule being triggered is [https://wiki.apache.org/spamassassin/Rules/TVD_SPACE_RATIO `TVD_SPACE_RATIO_MINFP`], with a weight of `2.5`, getting the message 50% of the way to the the default threshold of `5`. That rule looks for excessive whitespace in the message body, and I'm guessing it's being triggered by the high ratio of newlines to paragraph text. I uploaded [http://pastebin.com/tDyEfShL a pastebin with the full headers and body].
I don't have time right now to verify whether or not helpscout.net is using the default SpamAssassin configuration, or if they've weighted this rule more heavily for some reason, but even if they have, it seems likely that others will as well. Additionally, the current message text seems like poor UX, and I think the fix for the spam issue would also fix that.
I think the fix would be to add some filler text to the message body, to decrease the ratio of newlines to paragraph text. e.g.:
> Howdy, this is your WordPress multisite installation at {example.org}. I thought you'd like to know that a new site was created. The details are below:
It doesn't really matter what the text is, as long as it's a normal sentence or two, so whatever makes the most sense from a UX point of view will probably be fine.
If the new text does include the domain name, I think we should avoid entering a full URL, because that could trigger other spam rules. (As an aside, I think it's generally a bad idea to include URLs in emails, since it trains users to expect and click them, which makes them more vulnerable to phishing. That's another ticket, though.)
I think the next steps for this ticket would be:
1. Reproduce the issue with a local SpamAssassin instance, to verify that `2.5` is the default score for this message (rather than something Help Scout modified)
1. Test that adding some filler text will prevent the rule from being triggered. I don't think it'll really matter what the text is, for the purposes of testing.
1. Decide on what the best text would be from a UX perspective" iandunn
Future Releases 60082 """Copied"" tooltip should be hidden when another attachment URL is copied (in list mode)" Media 6.0 normal normal Awaiting Review defect (bug) new 2023-12-15T13:05:00Z 2024-03-12T15:39:27Z "In the media list view, clicking the ""Copy URL"" action link displays previously clicked ""Copy URL"". The previously clicked row showing ""Copied!"" when hover the media again.
=== Environment
- WordPress: 6.4.2
- PHP: 8.2.0
- Server: Apache/2.4.54 (Unix) OpenSSL/1.0.2u PHP/8.2.0 mod_wsgi/3.5 Python/2.7.18 mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11 Perl/v5.30.1
- Database: mysqli (Server: 5.7.39 / Client: 8.2.0)
- Browser: Firefox 119.0 (macOS)
- Theme: Twenty Twenty-Four 1.0
- MU-Plugins: None activated
- Plugins:
* WordPress Beta Tester 3.5.5
=== Steps to Reproduce
1. Go to media library
2. Click ""Copy URL"" of one of the media.
3. Click ""Copy URL"" of another media.
4. The previously clicked row showing ""Copied!"" when hover the media again.
=== Expected Results
1. The previously ""Copied!"" tooltip should be close after clicking the next one.
=== Actual Results
1. The previously clicked row showing ""Copied!"" when hover the media again." jayadevankbh
Future Releases 43531 $content_width and Add Media (+ twentyseverteen?) Media 4.9.4 normal normal Awaiting Review defect (bug) new 2018-03-12T20:07:38Z 2019-01-21T22:04:59Z "I apologize in advance if this isn't a bug. However, I couldn't seem to find any documentation on the expected behavior (e.g., there's nothing on the codex page for the image_size_names_choose filter). None the less, it certainly feels odd / awkward.
When adding an image (to a post / page), the size setting select (Add Media > Attachment Display Setting > Size) doesn't feel quite right. I understand the relationship between (global) $content_width and this setting. That is, the tag's width= is forced / maxed to the $content_width (if the image is wider than the $content_width).
I see this happening for the size = large images, as well as any image sizes I've added via add_image_size() that are too wide. However, it (i.e., the forced max width=) doesn't happen to the size Medium when the Medium width is set wider than the content width.
Perhaps this is intentional?
Theme was twentyseventeen. Unfortunately, I've haven't had time to try to reproduce this on another theme. The size Medium was set to 800 x 800.
I'd like to suggest the Settings > Media page display the current $content_width, as well as explain a bit, as well as link to a deeper explanation. As it is, a user can select a theme, blindly set the image sizes (not realizing who they actually map to the theme), and then be hit with the experience (?) described above, AND have no idea why.
Truth be told, it took me too long to figure this out. Somehow I've managed to avoid $content_width. Too many custom themes maybe? :)
Or am I just missing something about the intent of what otherwise feels like a sloppy experience?
I hope this helps. TIA
" ChiefAlchemist
Future Releases 59684 'filesize' metadata not updated after resizing media Media 6.3.3 normal minor Awaiting Review defect (bug) new 2023-10-19T16:28:17Z 2023-10-31T17:01:30Z "It seems like WordPress does not update the 'filesize' metadata after an image is modified through the media library. The details panel in the media library displays the original file size instead of the 'new' file size.
=== Environment
- WordPress: 6.3.3-alpha-56924
- PHP: 8.2.10
- Server: Apache
- Database: mysqli (Server: 5.7.31 / Client: mysqlnd 8.2.10)
- Browser: Chrome 118.0.0.0 (Windows 10/11)
- MU-Plugins: None activated
- Plugins:
- WordPress Beta Tester 3.5.4
The following optional modules are not currently installed on our server:
- exif
- fileinfo
- imagick
=== Steps to Reproduce
1. Upload a new image in the media library
2. Note the file size (ie. 22 KB)
3. Resize the image by clicking on 'Edit Image', then 'Scale Image' (in my test case, I resized the image from 1920x1080 to 200x113)
4. Click 'Update'
5. The 'Dimensions' field is correctly updated, but 'File size' remains the same (22 KB)
=== Expected Results
The 'File size' should display the new file size (ie. 3.3 KB)
=== Actual Results
The 'File size' field displays the size of the original image, before it was resized.
Here is the value of the '_wp_attachment_metadata' field in the database after the media is resized:
{{{
a:6:{s:5:""width"";i:200;s:6:""height"";i:113;s:4:""file"";s:31:""2023/10/Test-e1697729884174.png"";s:8:""filesize"";i:22990;s:5:""sizes"";a:5:{s:6:""medium"";a:5:{s:4:""file"";s:16:""Test-300x169.png"";s:5:""width"";i:300;s:6:""height"";i:169;s:9:""mime-type"";s:9:""image/png"";s:8:""filesize"";i:4852;}s:5:""large"";a:5:{s:4:""file"";s:17:""Test-1024x576.png"";s:5:""width"";i:1024;s:6:""height"";i:576;s:9:""mime-type"";s:9:""image/png"";s:8:""filesize"";i:18748;}s:9:""thumbnail"";a:5:{s:4:""file"";s:16:""Test-150x150.png"";s:5:""width"";i:150;s:6:""height"";i:150;s:9:""mime-type"";s:9:""image/png"";s:8:""filesize"";i:3006;}s:12:""medium_large"";a:5:{s:4:""file"";s:16:""Test-768x432.png"";s:5:""width"";i:768;s:6:""height"";i:432;s:9:""mime-type"";s:9:""image/png"";s:8:""filesize"";i:13044;}s:9:""1536x1536"";a:5:{s:4:""file"";s:17:""Test-1536x864.png"";s:5:""width"";i:1536;s:6:""height"";i:864;s:9:""mime-type"";s:9:""image/png"";s:8:""filesize"";i:30857;}}s:10:""image_meta"";a:12:{s:8:""aperture"";s:1:""0"";s:6:""credit"";s:0:"""";s:6:""camera"";s:0:"""";s:7:""caption"";s:0:"""";s:17:""created_timestamp"";s:1:""0"";s:9:""copyright"";s:0:"""";s:12:""focal_length"";s:1:""0"";s:3:""iso"";s:1:""0"";s:13:""shutter_speed"";s:1:""0"";s:5:""title"";s:0:"""";s:11:""orientation"";s:1:""0"";s:8:""keywords"";a:0:{}}}
}}}
The ""filesize"" metadata has the value '22990' instead of '3033'." vertisoft
Future Releases 49587 Add error handling for the media manager Ajax response Media 3.5 normal normal Future Release defect (bug) new 2020-03-06T11:00:27Z 2021-03-02T21:47:47Z "When the media manager modal performs an Ajax request to query attachments, if the Ajax call responds with an error then the user is presented with an eternal loading spinner and no indication there has been a problem.
I think there are two places which need a `fail()` handler for the Ajax promise:
* `wp.media.model.Attachments.more()`
* `wp.media.model.Query.more()`
I haven't done any testing yet though to confirm this.
Needs a decision around how best to present an error to a user. Probably needs UI work; maybe one of the UI pieces such as the upload failure message can be reused." johnbillion
Future Releases 35887 Adding multiple media to post - selecting image size Media 4.4.2 normal normal Awaiting Review defect (bug) new 2016-02-20T12:03:10Z 2023-10-25T04:35:24Z "When clicking ""Add Media"" to add images to a post, you can select multiple images. With all images selected, logic follows that if you change the ""ATTACHMENT DISPLAY SETTINGS"" size from default ""Medium"" to ""Full Size"", that all selected images would have the same setting changed, but when you add them, only the one image that was highlighted is actually ""Full Size"" and the rest which were selected, but not highlighted, are still ""Medium"".
I think when adding multiple media, all should be changed to size that is selected in ""ATTACHMENT DISPLAY SETTINGS""." myburgh.bernard@…
Future Releases 58051 Attachment custom fields not rendered after upload antpb Media 6.2 normal normal 6.6 defect (bug) assigned 2023-04-02T02:23:40Z 2024-03-06T16:20:39Z "This is a follow-up to #40909.
Attachment custom fields added via `attachment_fields_to_edit` are no longer rendered just after an image is uploaded.
Clicking away and back will restore the custom field markup, but is quite inconvenient." trepmal
Future Releases 36680 "Audio player with preload=""metadata"" shows incorrect duration for audio files 1 hour or longer" Media 4.5.1 normal normal Awaiting Review defect (bug) new 2016-04-27T04:29:12Z 2017-09-20T21:29:57Z "For an audio file that's longer than one hour, using the audio player shortcode with preload=""metadata"" shows an incorrect duration for the audio when the page loads. The hours are chopped off. So an audio that is 1:07:45 in duration will erroneously display 07:45 upon loading.
Then when the audio file is played, the correct duration pops in, but this causes the volume control to disappear, so the volume can no longer be adjusted while the clip is playing.
Many podcasts are longer than an hour in duration.
For a demonstration of the bug, see audio 16 on this page, which is 1:07:45 in duration:
http://www.stevepavlina.com/audio/" Dexterity
Future Releases 42978 Automatically clear file upload error messages Media normal normal Future Release defect (bug) new 2017-12-25T15:50:20Z 2020-08-31T10:09:33Z "When an error occurs on file upload in the media uploader while drafting a post, the error message persists after both a) another file is successfully uploaded, b) the media manager is closed and re-opened.
In both of these cases, it is my opinion that the user is best served by having the error message automatically dismissed, as
1. Its positioning is not typical of a ""historic/cumulative"" error log,
2. It may be assumed that by successfully uploading another file the error first encountered is no longer relevant, and
3. An indefinite amount of time may have passed since the error was first encountered and the media manager subsequently closed and the next time the media manager/upload div was re-opened such that the user may have completely forgotten about the error and may be confused to see a red error box and mistakenly think it is associated with some action he/she just took,
4. As a dialog, nothing about the media manager suggests that its state should persist after being closed and re-opened.
(see attachment as an example of an error)" ComputerGuru
Future Releases 34296 Autoplay for more than one self-hosted video fails Media 4.3.1 normal normal Awaiting Review defect (bug) reopened 2015-10-14T10:05:48Z 2017-07-05T20:12:26Z "Hi,
When adding more than one self-hosted video to a page (using the [video] shortcode or media browser to insert), if you set more than one to autoplay, then none of them autoplay.
This might be a mediaelementjs problem.
Stock 4.3.1 install with TwentyFifteen:
http://test.10degrees.uk/one-video-autoplay/ - one video set to autplay, works fine.
http://test.10degrees.uk/two-videos-autoplay/ - both videos set to autoplay, neither plays.
These are both mp4 files.
Jonny" jonnyvaughan
Future Releases 51992 Bug in Media Thumbnail for DWG file Media 5.6 normal major Future Release defect (bug) new 2020-12-09T14:56:40Z 2021-02-17T00:22:27Z "Hi,
since today's update the file name of DWG files are not shown anymore unlike the PDF files. I have allowed DWG to be uploaded. Can you help? Thanks
" mschuessler
Future Releases 42751 Can we please enqueue media-views independently ? Media 4.9 normal normal Awaiting Review defect (bug) new 2017-11-29T22:14:11Z 2023-10-18T16:16:58Z "Many of theme developers are styling mediaelement to their preference and this is a first step when they do so;
{{{
/*
* use theme mediaelement CSS
*/
wp_deregister_style('mediaelement');
wp_deregister_style('wp-mediaelement');
}}}
that disables the default CSS and lets us use our own. Issue with this is that
buttons, imgareaselect and media-views CSS files depend on these and if anyone is using a frontend page builder or anything that needs media library in frontend, these 3 CSS files are not present.
My first tought was
{{{
/*
* since we have deregistered medialement style
* make sure media dependencies are loaded
* in case of frontend editros
*/
if( is_user_logged_in() ){
wp_enqueue_style( 'buttons' );
wp_enqueue_style( 'imgareaselect' );
wp_enqueue_style( 'media-views' ) ;
}
}}}
but to my surprise media-views which is a key CSS file for media library is not loading since it is a dependent.
I know that I can do the direct enque but since we have a handle we should be able to use it independently from other styles.
While we are at it, why are we loading mediaelement CSS files at the bottom of body
http://prntscr.com/hh0808 ?
CSS files should always be in head. " Themezly
Future Releases 18275 Can't get perfect thumbnail sizes with image editor Media 3.2.1 normal normal Future Release defect (bug) new 2011-07-28T02:37:16Z 2017-06-27T16:14:27Z "In the media settings, I have the thumbnail set to a fixed size (218x145), and set to crop to these exact dimensions.
Sometimes the automatic thumbnail crops off people's heads, etc, so I use the Image Editor to manually adjust the thumbnail. I select a rectangle, set the aspect ratio to 218x145, click crop, apply to thumbnail only, and save.
However, sometimes that results in an image slightly off in dimensions - for example, 215x145.
I expect this is a rounding error. However, it happens even if I select an area much bigger than this when cropping in the Image Editor - eg 300x200. After I click crop and see the 300x200 image, I would expect the thumbnail to be automatically be created at 218x145 like it does normally based on this adjusted image - however, it appears the checkbox for using exact dimensions doesn't apply here. (In fact, if I select, say 300x300, it will make my thumbnail 145x145).
This feels like a bug to me, and makes it very hard to generate thumbnails at the size I want." smerriman
Future Releases 55200 Cannot add caption to images on mobile Media 5.9 normal normal Awaiting Review defect (bug) new 2022-02-19T01:05:50Z 2023-06-14T11:45:43Z On the mobile view of the admin section you cannot add ally text, captions, or descriptions to media uploads vincepettit
Future Releases 31177 Captions video not saved with the post and are lost on attachment page postphotos Media 4.1 normal normal Future Release defect (bug) assigned 2015-01-29T16:13:09Z 2024-01-24T17:36:59Z "At the moment you can add srt-captions and a poster image to a video, entering them while embedding a video in a post.
When you add a video via Add Media in a post the output will be something like:
{{{[video poster=""url-here/image.jpg"" width=""400"" height=""224"" mp4=""url-here/video.mp4""] [/video]}}}
This means that the poster and the captions are not stored with the attachment itself, so on attachment this data is lost pages and it is impossible to add a caption or a poster image via the image library.
It would be useful to save srt-captions and the poster with the attachment data itself, like the description and the caption now are.
" rianrietveld
Future Releases 53800 Color of WebP image thumbnail changes on media library list and grid view Media 5.8 normal normal Awaiting Review defect (bug) new 2021-07-27T15:40:23Z 2022-11-04T12:20:55Z "Hello friends,
Probably this issue is already being tracked. If so please close the ticket.
WordPress 5.8 supports WebP image upload, which works well. But in media library the original color of the image changes completely to a yellow hue. Please see attached screenshots.
**Development Environment**
OS: Ubuntu 16.04
WordPress version: 5.8
Installed and Active Plugins: Akismet Anti Spam
Installed and Active Themes: 2021" subrataemfluence
Future Releases 42953 Created images have a larger filesize than the original Media normal normal Awaiting Review defect (bug) new 2017-12-21T12:34:42Z 2020-11-30T03:14:16Z "Images uploaded in the media library get resized to the defined sizes. However, if the image has been optimized beforehand the result can be that the generated images have a filesize larger than the originally uploaded image.
It can happen due to a very high `jpeg_quality` value for example..
This should not happen under any circumstances. Uploading optimized images is something a lot of people do for SEO purposes, and larger generated images affect that negatively.
Sometimes even if the image-size is smaller, the generated file's filesize is bigger.
One solution would be to save the image in a temp location and have its filesize checked against the original image. If the image is smaller than the original one then move to its final location. If not, then some other solution has to be found." aristath
Future Releases 33713 Customizer: allowing to set files other than image for Header background and background image Media 4.3 normal major Future Release defect (bug) new 2015-09-03T18:11:48Z 2021-05-23T18:04:08Z "When we set header background image or background image from customizer settings, media upload should not allow to upload files other than image.
We can set files other than image, and it shows broken in preview
" umesh.nevase
Future Releases 47130 Drop files to upload is also available except Upload Media tab Media 5.1.1 normal normal Future Release defect (bug) reopened 2019-05-06T10:31:46Z 2021-08-12T14:38:08Z "Howdy Developers,
As per my understanding, `Drop files to upload` feature should be enabled during `Upload media` only.
Instead of that, I have noticed that whenever Crop Image or any other popup for media is open, then `Drop files to upload` is still there.
" malavvasita
Future Releases 43816 Editing Image Can Lead to Mixed Metadata Media 4.9.5 normal normal Future Release defect (bug) new 2018-04-20T00:04:30Z 2022-11-23T16:09:37Z "== Summary
If an image is uploaded at a size allowing the creation of a defined image size (ie, ""large"", ""twentyseventeen-featured-image"", etc.) and the image is then edited to a size which doesn't allow that defined size to be created, the non-supported size can still be placed and will display the original image.
== Steps to Reproduce
1. Upload an image which is slightly larger than a defined image size in a particular theme (for example, if using the WordPress default definition for ""large"" images, 1,024 pixels, upload an image 1,100 pixels wide)
1. Edit the image, and scale or crop it to be 1,000 pixels wide
1. Save edit
1. Within the post editor, ""add media"", select the ""large"" image size, and place within body of post
=== Expected Behavior
* //Developer//: The ""large"" image should not be able to be selected within the ""Place Media"" dialog
* //Regular user//: The ""large"" image placed should reflect the image edit
=== Result
The ""large"" size is selectable and the **original** image is placed within the page.
=== Other Effects
In this particular example, if the Media Library is in ""grid"" view, and our edited image is selected, the dialog which opens will display the incorrect original image, as the dialog preferentially uses the ""large"" image size.
== Source of Behavior
I believe the problem stems from line 880 of https://core.trac.wordpress.org/browser/tags/4.9.5/src/wp-admin/includes/image-edit.php :
{{{
$meta['sizes'] = array_merge( $meta['sizes'], $img->multi_resize( $_sizes ) );
}}}
* `$meta['sizes']` contains all of the sizes which were able to be created when the image was uploaded
* The return from `$img->multi_resize()` only has keys set for those sizes that can be created from the edited image
* Using `array_merge` keeps the original values not returned by `$img->multi_resize()`, despite the fact they are no longer valid for this edit
== Fix
I believe the fix may be as simple as simply returning the result of `$img->multi_resize()` without merging it into the existing `$meta['sizes']`, which are mainly used in this context to create the `_wp_attachment_backup_sizes` array.
{{{
$meta['sizes'] = $img->multi_resize( $_sizes );
}}}" rogerlos
Future Releases 52509 Error generating Thumbnails of PDF-Files Media 5.6.1 normal normal Awaiting Review defect (bug) new 2021-02-12T12:46:26Z 2023-07-02T13:37:05Z "This is a follow-up to #48853.
This issue seems to be still present in Version 5.6.1
Some PDF-Files cause an internal server error, some do not. (The server's error log tells something about missing headers)
Here's what i did to isolate the error:
- I examined the PDF-Files. The affected files had a PDF-Version 1.7 an were created with non-Adobe-Tools (e.g. Office365). PDFs with Version 1.4 and 1.5 (created with Acrobat) worked well.
- tried it with a local copy of the site on XAMPP: No Problems
- used a little code-snippet to prevent thumbnail-generation in general: Upload works
This is the snippet:
{{{#!php
-1 ) {
77 data[ pair.name ] = new Array( pair.value );
78 } else {
79 data[ pair.name ] = pair.value;
80 }
81 }
82 });
83
84 this.controller.trigger( 'attachment:compat:waiting', ['waiting'] );
85 this.model.saveCompat( data ).always( _.bind( this.postSave, this ) );
86 },
}}}
By doing this, it would return the following data object:
[[Image(https://actycrea.com/img/wordpress/finally.png)]]
I explained? I'm very sorry for my English ...
Fernando.
" fobiaxx
Future Releases 43114 FLV video - NetworkError: Exception ProgressEvent error Media 4.9.2 normal normal Awaiting Review defect (bug) new 2018-01-17T18:13:19Z 2021-04-01T14:56:40Z "Hello,
FLV doesn't work any more since last versions of Wordpress.
I have this error : NetworkError: Exception ProgressEvent error when I use this code in articles :
[video width=""640"" height=""480"" flv=""http://mydomaine.org/wp-content/uploads/2012/02/DSC_0011.flv""][/video]
and sometimes this error : ""Aucune vidéo dont le format ou le type MINE est géré n'a été trouvée""
Thank you for your help" Fred001
Future Releases 47121 Featured image modal: content disappears when changing device orientation Media 5.0 normal normal Awaiting Review defect (bug) new 2019-05-04T09:27:12Z 2019-08-29T13:51:28Z "To reproduce:
- emulate a mobile device via the Chrome dev tools
- edit a post in Gutenberg
- click Featured Image > Set featured image in the sidebar
- the ""Featured Image"" media modal opens
- depending if your initial device orientation is landscape or portrait, click once or twice on the Chrome dev tool ""Rotate"" button to change device orientation
- once the orientation is ""portrait"", the whole content of the modal disappears
- ie: the content container becomes totally empty: `
`
- change orientation again: still empty
See attached screenshots." afercia
Future Releases 43310 "Generic ""HTTP Error"" when uploading PDFs via Media area" Media 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-14T01:58:49Z 2018-08-19T11:13:16Z "This might be tied in with Ticket #41973. This may also be [https://make.wordpress.org/core/2016/11/15/enhanced-pdf-support-4-7/ tied into this issue], which was previously fixed for 4.7x.
Currently using the following code to handle image processing:
{{{
// Fix image processing
add_filter( 'wp_image_editors', 'change_graphic_lib' );
function change_graphic_lib($array) {
return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}
}}}
I've done all the digging around I can. File upload max size is 140 megs (the test PDF I used is only 13 megs). I've done the .htaccess and php.ini tweaks needed to allow plenty of upload time. Images no longer return the arbitrary ""HTTP Error"" after adding the above function.
PHP 7.0.27-0+deb9u1 (cli) - This is the latest stable release, [https://packages.debian.org/search?keywords=php7.0 per Debian].
This is what I passed along to our customer:
""You’ll have to “tough your way” into the PDF uploads… after you upload a PDF, give it a few minutes… then do a power refresh on the media gallery (I would recommend you upload it through the media gallery first, rather than using the “Add Media” feature on posts and pages).""" BearlyDoug
Future Releases 42922 Image Scaling using get_the_post_thumbnail issue in WordPress Media 4.9.1 normal normal Awaiting Review defect (bug) new 2017-12-17T08:22:37Z 2020-11-19T15:56:40Z "Issue URL - http://www.creativescripters.com/clients/testwp/uncategorized/image-resized/
I am using wordpress (self hosted) latest version, The problem is I am looking to get a thumbnail from the resized/scaled image, and when I do that wordpress returns the test-150x150.jpg i.e. Thumbnail from the original image and not the resized image which should have been test-e1513229707262-150x150.jpg
Step to reproduce the issue
1. Upload an image , Scale it (click edit on uploaded image and change width and click scale). Wordpress will rename the image and add an Suffix Id to the name so you can confirm the image have been scaled. for eg if you uploaded test.jpg after scaling image name will become test-randomstring.jpg
[![enter image description here][1]][1]
2. When I call get_the_post_thumbnail($post, 'full') I get the correct image The resized one i.e. test-randomstring.jpg
[![enter image description here][2]][2]
3. When I try to get a different size of the scaled image for eg I need thumbnail generated from the image size and I call function get_the_post_thumbnail($post, 'thumbnail') wordpress return the THUMBNAIL from actual image (the one I uploaded initially test.jpg and not the resized one test-randomstring.jpg)
Screenshot - https://i.imgur.com/sQKoZcF.png
[1]: https://i.stack.imgur.com/TTIaG.png
[2]: https://i.stack.imgur.com/T3vPE.png" rigids.php
Future Releases 40785 Image caption in WYSIWYG is not displaying in post page Media 4.7.5 normal normal Awaiting Review defect (bug) new 2017-05-17T13:53:07Z 2017-05-19T11:15:53Z "I have uploaded an image to my post via Media upload utility of WYSIWYG editor and added a caption to it. When I go the post page, the image is there but the caption is not showing up anywhere, which ideally should be underneath the image.
In wp_posts table the content was saved as:
{{{
Nestled among ski slopes in the Garhwal Himalayas, this secluded hotel is 23 km from Panch Prayag temple and 25 km from Nanda Devi National Park. In winter, the property is only accessible by cable car.
Ranging from studios to 2-bedroom suites, the cosy lodgings come with cable TV and kitchenettes with minifridges, microwaves and stoves. Suites add living rooms and dining areas.
Breakfast is free. There's also a relaxed restaurant, a game room and a bonfire area with regular entertainment. Ski equipment rentals and lessons are available, as are guided hikes and in-room massages. The property has a generator.
[caption id=""attachment_713"" align=""alignnone"" width=""1600""]
Cliff Top Restaurant at 10000ft[/caption]
}}}" subrataemfluence
Future Releases 60548 Image editor: improve the browsePopup function joedolson* Media 6.3 normal normal 6.6 defect (bug) accepted 2024-02-15T14:10:11Z 2024-03-06T16:59:58Z "While auditing all the remaining jQuery deprecations still to address in core, I noticed a couple things that offer room for improvements in the `browsePopup` function of the core image editor.
1. The `browsePopup` function uses the `window.event` property, which is deprecated and should not be used. This is the `global` event. Instead, the event should be passed as a function parameter. Aside: instead of using inline events, it could have been better to consider a more modern approach.
2. When using the keyboard to navigate the items in the 'Image rotation' dropdown menu, the page scrolls. See attached animated GIF. There's some code in place to prevent page scrolling you may need to reduce your viewport height.
See [55919] / #50523
" afercia
Future Releases 43152 Image remains in page after deleting from Media Library Media 4.9.2 normal normal Future Release defect (bug) new 2018-01-24T00:31:39Z 2019-04-15T15:21:13Z "Whilst editing your page, if you open the Media Library (using the Add Media button), and then delete an image that is currently added to the page, the image remains on the page after closing the pop-up window.
To Reproduce:
- Insert Image on Page
- Click Add Media button to display the Media Library popup Window
- Select the image that you previously inserted on the page and delete the image
- Close the media pop-up window
- Image that was deleted remains on page
Here's a gif to show an example - https://cl.ly/1I2r3q3H301J
I originally raised this as an [https://github.com/WordPress/gutenberg/issues/4610 issue with Gutenberg], but it was suggested to raise it here since it's also an issue with the classic editor." ahortin
Future Releases 54839 Image upload after dirty filter requires filter change before it can be inserted to page Media normal normal Future Release defect (bug) new 2022-01-17T08:15:54Z 2024-02-05T20:14:53Z "Steps:
1. Open media library popup.
2. Change date filter.
3. Upload new image.
4. See uploaded image is not visible in list nor selectable. (Select button is disabled)
5. Change filter to match the new image uploaded, See image is visible.
Expected behavior:
1. Uploaded image should be selectable if it matches filter (or should reset filter on tab change).
Current behavior:
1. Uploaded image after dirty filter is not selectable." utkarshpatel
Future Releases 59577 Images in block templates or patterns do not have loading optimization attributes flixos90 Media normal normal 6.6 defect (bug) assigned 2023-10-09T19:12:23Z 2024-03-13T15:41:15Z "This ticket is created as a break out from #59464: While that ticket was also initially pointing out the lack of loading optimization attributes in TT4, it has been primarily focused on the lack of the dimension attributes `width` and `height` from images that are hard-coded in the theme (e.g. in a `core/image` block within the theme's block templates, template parts, or patterns).
As noted in https://core.trac.wordpress.org/ticket/59464#comment:16 however, there is another arguably more severe problem: Even if that bug was fixed for TT4, most of those images ''still'' wouldn't receive the loading optimization attributes. That is because TT4 includes most of its images directly in block templates, or in patterns, outside of template parts, post content, or widget content.
Currently, any images that aren't covered by more specific contexts than `template` (which is for the overall block template) are not handled at all by `wp_filter_content_tags()`, impacting TT4 and likely several other block themes. This ticket is focused on that problem, trying to identify a solution to also consider images in the overall block template, while avoiding duplicate processing of images that were already processed with a more specific context." flixos90
Future Releases 39980 Improve handling of image previews for non-image files joemcgill Media 4.7 normal critical Future Release defect (bug) assigned 2017-02-28T02:57:40Z 2017-05-20T20:16:18Z "Follow up from #31050.
The changes to the `image_downsize()` and `image_get_intermediate_size()` functions introduced in [38949] added regressions to the `'image_downsize'` and `'image_get_intermediate_size'` filters, running them for non-image attachments.
Best option to fix this seems to be to introduce new function(s) with new filter(s) specifically for handling this case: adding image preview to non-image attachment.
This will fix the regressions, and will make it possible for plugins to hook into this functionality." azaozz
Future Releases 47456 Improve the user interface to ensure correct usage of the image alt text joedolson* Media high normal Future Release defect (bug) accepted 2019-06-01T11:15:23Z 2024-03-12T11:15:33Z "Splitting this out from the [https://github.com/WordPress/gutenberg/issues/created_by/karlgroves WPCampus accessibility report issues on the Gutenberg GitHub], see https://github.com/WordPress/gutenberg/issues/15309 as part of the reported issue applies to the Media Views in core.
Related: #41467
== Problem
A common misconception is that the image alt text should always be a ""description of the image"". In most of the cases, this is misleading. Actually, the image alt text needs to describe the purpose of the image in its specific context. For more details, see the W3C Alt Text Decision Tree tutorial (https://www.w3.org/WAI/tutorials/images/decision-tree/).
WordPress stores a ""default"" alt text in the media object. While storing a default value may help users when they build their content, it also promotes a misunderstanding of the purpose of the alt text.
In the accessibility team, we think this is more an user interface problem rather than a data model problem. The user interface should ensure users clearly understand that alt attributes are context sensitive and that the ""default"" alt value needs to be changed (or even removed) based on the specific usage.
== Data model problem:
The alt text is not constant: it needs to describe the image purpose on a case by case basis.
== User interface problem:
The alt text from the media library is automatically assigned as the alt text within the post: this is not always correct. Actually, in most of the cases it produces wrong alt text.
== Improvements to evaluate
Credits: Some of the following points come from @carlseibert and @joedolson comments on #41467, and from the Gutenberg GitHub issue.
1. allow saving multiple alt attributes for a given media object: a default attribute and a set of alternates users can select from
2. have something in the editor UI that would let users know whether the alt text was filled, and what it says
3. modifications on the Media views side to differentiate between the alt text describing the image and the alt text for a specific usage, which might override the normal alt text without changing it
4. all linked images must have alternative text if the image is the sole content of the link, and the action should be blocked if this is not true
5. any guidance given should inform users that the text provided needs to inform the user of the link action
6. include a warning about linking directly to the image file: linking directly to images is inadvisable, because the resulting image view in the browser does not include alternate text
7. when the image is linked to the image file itself, the alt text can remain the normal alternative text for that image, with an appended indicator that the link is to view the image
8. worth considering plugins that add ""lightbox"" modals, sliders and the like often use the alt text value to add contextual text within their UI
9. images used to link to other resources should offer a field to add dedicated link text separate from the image's own description; in this case the alt text should be empty. Example markup (simplified):" afercia
Future Releases 36285 Inconsistency between the filters that can be used to override the default shortcode output for images/videos/audio Media normal normal Future Release defect (bug) new 2016-03-21T18:15:59Z 2017-07-27T16:13:03Z "Currently, in order to override the default output of the {{{caption}}}, {{{video}}} and {{{audio}}} shortcodes, you have to use the following respectively:
{{{
apply_filters( 'img_caption_shortcode', '', $attr, $content );
apply_filters( 'wp_audio_shortcode_override', '', $attr, $content, $instance );
apply_filters( 'wp_video_shortcode_override', '', $attr, $content, $instance );
}}}
Imho, there should be some consistency between these regarding the following:
* hook name.
* arguments passed to the filtering function.
Also, it would be very useful if the attachment ID was also passed to the filtering function.
Right now, the attachment ID of images can be obtained from {{{$attr['id']}}}, which gives {{{attachment_IDNUMBER}}}, while the ID of video and audio attachments can only be obtained by using the media file URL found in the {{{$attr}}} array and directly querying the database in order to get the post ID based on the {{{guid}}} field.
" gnotaras
Future Releases 58729 Incorrect Information Displayed in Media Library Window when Uploading Featured Image Media normal normal Awaiting Review defect (bug) new 2023-07-06T11:29:00Z 2023-10-20T01:34:47Z "I encountered an issue while attempting to upload a featured image for a post on WordPress. The problem arises when I access the Media Library window, as it displays incorrect information regarding the number of uploaded items.
Steps to Reproduce:
1. Log in to the WordPress admin panel.
2. Navigate to the ""Posts"" section and select an existing post or create a new one.
3. Click on the ""Set featured image"" button within the post editor.
4. After uploading the first image its showing wrong information of number of media, Instead of **Showing 1 of 1 media items** its showing **Showing 1 of 2 media items**
5. It appears that the number of media items is inconsistent when I attempt to open the media library again by selecting the ""replace"" option.
Video Link : https://www.loom.com/share/f87871494c5145c385f2343b454fe262
" adhun
Future Releases 53665 Incorrect mime type saved on attachment for scaled/rotated images processed with image_editor_output_format filter Media 5.8 normal normal Future Release defect (bug) new 2021-07-15T11:30:14Z 2021-11-01T21:59:28Z "When the `image_editor_output_format` filter is used to change the format of jpeg images during the upload of a new large or rotated image, the mime type saved to the `posts` table record is for the `original_image` and not the `-scaled` or `-rotated` ""full"" size image that is used throughout the admin area.
Example filter:
{{{
add_filter( 'image_editor_output_format', function( $formats ) {
$formats['image/jpeg'] = 'image/webp';
return $formats;
} );
}}}
From an original file called ""picture.jpg"" this will produce a file called ""picture-scaled.webp"" that is used in the Media Library.
When viewing the details of the image from the Media Library's grid view, the overlay panel shows the mime type of the webp file as ""image/jpeg"". See attached screenshot for an example.
This may confuse some users.
It may also have a knock-on effect for themes or plugins that use the stored mime type rather than deduce it from a file's extension." ianmjones
Future Releases 47137 Insufficient form semantics joedolson* Media normal minor Future Release defect (bug) accepted 2019-05-06T14:33:17Z 2024-02-01T20:40:12Z "Moved from the WPCampus accessibility report issues on GitHub, see
https://github.com/WordPress/gutenberg/issues/15305
* **Severity**:
* Low
* **Affected Populations**:
* Blind
* Cognitively Impaired
* **Platform(s):**
* All / Universal
* **Components affected**:
* Media Dialog
**Issue description**
The ""Media Library"" panel of the ""Featured Image"" modal dialog lists
some filtering of options, a group of checkboxes, a sub-form of relevant
meta-data, and a ""Select"" button. However there are no semantics which
associate these controls together, nor give the orphan ""Select"" button
any meaning relative to the selected checkbox/image.
Additionally, a link taking users to a new window/tab with an editing
form does not inform users that it opens a new window or tab.
Semantic markup is vital for assistive technology users, to convey the
structure and relationships between information. When appropriate
semantic markup is not used, it may be more difficult for such users to
understand what the content means, and to comprehend the structure that
the visual presentation conveys.
**Issue Code**
{{{
Select
}}}
**Remediation Guidance**
Turn the form into an actual `
...
Select
}}}
**Relevant standards**
* 1.3.1 Info and Relationships (Level A) https://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic
* 1.3.3 Sensory Characteristics (Level A) https://www.w3.org/TR/WCAG20/#content-structure-separation-understanding
* 3.3.2 Labels or Instructions (Level A) https://www.w3.org/TR/WCAG20/#minimize-error-cues
* 4.1.2 Name, Role, Value (Level A) https://www.w3.org/TR/WCAG20/#ensure-compat-rsv
**Note**: This issue may be a duplicate with other existing accessibility-related bugs in this project. This issue comes from the Gutenberg accessibility audit, performed by Tenon and funded by WP Campus. This issue is GUT-50 in Tenon's report" anevins
Future Releases 47148 Insufficient labelling and inappropriate nesting of form controls joedolson* Media normal minor Future Release defect (bug) accepted 2019-05-06T15:16:18Z 2024-02-05T20:03:21Z "Moved from the WPCampus accessibility report issues on GitHub, see: https://github.com/WordPress/gutenberg/issues/15288
* **Severity**:
* Low
* **Affected Populations**:
* Blind
* Low-Vision
* Cognitively Impaired
* **Platform(s)**:
* Windows - Screen Reader
* Windows - ZoomText
* Mac - VoiceOver
* Android - TalkBack
* iOS - VoiceOver
* **Components affected**:
* Media Dialog
**Issue description**
In the ""Featured Image"" modal dialog's ""Media Library"" tab, users
can choose an image to be the featured image; this is presented as a
series of checkbox elements which, once checked, show a button to
uncheck inside the custom checkbox element.
This button is in the Tab order, however its only name is ""Deselect"",
it doesn't tell the user what is being deselected. Users must infer
what this button does from context, and may wonder why it's next to
seemingly-ordinary checkboxes which themselves are natively
unselectable.
The button role of these buttons does not convey that the user is
checking or unchecking an item, and their placement inside the
checkbox elements is semantically confusing, and may be functionally
confusing since one focusable element is nested inside another.
Screen reader users hear that a list is present, yet find that they
cannot navigate by list-items.
**Issue Code**
{{{
}}}
**Remediation Guidance**
Allow the list semantics to remain available by not overriding the
`` elements' native list-item roles.
Remove the `` inside the checkbox and allow the original
checkbox itself to be hidden and shown (perhaps styled with the custom
checkmarks and ""-"" symbols, using the :before pseudo-element, as
used in other checkboxes); hiding elements with opacity still allows
speech recognition and screen readers to perceive the checkbox as though
it were visible. The alt attribute inside the image will be able to
label the checkbox if it's inside the `` element.
The checkbox now can offer both the image name and its state together in
one unit, allowing users to always know what they are deselecting.
**Recommended Code**
{{{
Media options result
li {
position: relative;
}
li>input {
position: absolute;
opacity: 0;
...
}
li input+label img {
...
}
li input:focus+label img {
/* styles for focussed input */
/* include an actual outline in addition to box-shadow for high contrast users */
}
li input:checked {
opacity: 1;
}
li input:checked:focus,
li input:checked:hover {
/* change from checkmark to dash */
}
li input:checked+label img {
...
}
}}}
**Relevant standards**
* 1.3.1 Info and Relationships (Level A) https://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic
**Note**: This issue may be a duplicate with other existing accessibility-related bugs in this project. This issue comes from the Gutenberg accessibility audit, performed by Tenon and funded by WP Campus. This issue is GUT-49 in Tenon's report" anevins
Future Releases 59521 Issue with update_post_thumbnail_cache if using get_posts Media 6.3.1 normal normal Awaiting Review defect (bug) new 2023-10-03T09:25:40Z 2023-10-03T09:25:40Z "Hello,
I got this:
''Warning: Attempt to read property ""ID"" on int in /wp-includes/post-thumbnail-template.php on line 116''
I'm using:
{{{#!php
'ids' ) );
foreach ( $posts as $post_id ) :
$thumb = get_the_post_thumbnail( $post_id );
endforeach;
}}}
The **update_post_thumbnail_cache()** used in **get_the_post_thumbnail()** assumes **$wp_query->posts** always contains an array of **$posts objects**, while it can be an array of $posts IDs.
To prevent the warning it would be appropriate to check that $post is actually a post object.
The patched code:
{{{#!php
posts as $post ) {
$post = get_post( $post ); // Add this or check if is_integer( $post )
$id = get_post_thumbnail_id( $post->ID );
}}}
Thanks
Kind Regards" Xendo
Future Releases 58979 "Layout breaking while editing an Image from ""Image Details Edit"" screen." Media 6.3 normal normal Awaiting Review defect (bug) new 2023-08-04T04:57:06Z 2023-08-07T16:13:03Z "== Bug Report
=== Description
The layout is breaking while editing an Image from ""Image Details Edit"" screen.
=== Environment
- WordPress: 6.3-RC3
- PHP: 7.4.12
- Server: Apache/2.4.46 (Unix) OpenSSL/1.0.2u PHP/7.4.12 mod_wsgi/3.5 Python/2.7.13 mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11 Perl/v5.30.1
- Database: mysqli (Server: 5.7.32 / Client: mysqlnd 7.4.12)
- Browser: Chrome 114.0.0.0 (macOS)
- Theme: Twenty Twenty-Three 1.2
- MU-Plugins: None activated
- Plugins:
* WordPress Beta Tester 3.5.2
=== Steps to Reproduce
1. Open Media -> Library
2. Select an Image
3. Click the ""Edit Image"" button below the Image
4. Click ""Crop Image"". Crop settings are visible to the right of the Image
5. Now Click ""Scale Image"". Layout breaks.
x. 🐞 Bug occurs.
=== Expected Results
1. ✅ Layout Should not break. At the very least, it should be consistent for scale and crop.
=== Actual Results
1. ❌ Layout breaks and lack of consistency.
I am attaching Screenshots for reference." deepakvijayan
Future Releases 58741 Media Library Popup Showing Blank Popup on Window Resize Below Mobile Viewport Media 6.2.2 normal normal Awaiting Review defect (bug) new 2023-07-06T18:18:08Z 2023-07-06T18:18:08Z "== Bug Report
=== Description
The media library popup in WordPress is encountering a problem where it displays a blank popup when the window is resized below the mobile viewport. This issue prevents users from accessing the media library and selecting files on smaller screens, negatively impacting the overall user experience.
=== Environment
- WordPress: 6.2.2
- PHP: 7.4.33
- Server: Apache
- Database: mysqli (Server: 5.7.42 / Client: mysqlnd 7.4.33)
- Browser: Chrome 114.0.0.0 (macOS)
- Theme: Upshift 1.0
- MU-Plugins: None activated
- Plugins:
* WordPress Beta Tester 3.5.1
=== Steps to Reproduce
1. Access the WordPress admin dashboard.
2. Navigate to add new post.
3. Click on set featured image button.
4. Resize the window below mobile viewport, you will get a blank screen.
=== Expected Results
1. Users should see media window even after window resize.
2. This scenarios is not there in media library popup of image block on block editor.
=== Actual Results
1. Users gets blank popup when window is resized.
Video Link : https://www.loom.com/share/efad2f97064f441596d69cc9a354a658
" adhun
Future Releases 41349 Media Library insert from URL doesn't give a message when a URL fails check Media normal normal Awaiting Review defect (bug) new 2017-07-17T20:32:53Z 2020-12-03T18:39:48Z "There is a check to see if something is a valid URL. This is awesome, but it doesn't give a message when fails. This is a weird user experience as you are left wondering what happened.
There is some strange behaviour, it sometimes has 'link text' vanishing, other times doesn't. It also can appear to flash as a block and then vanish. The logic of when the link text input shows or doesn't, seems a little confusing to work out.
What would be better would be to have a message when it's not a correct URL and check for inconsistencies in the link text input showing.
[[Image(https://cldup.com/bnlQYzjP04.gif)]]" karmatosed
Future Releases 43658 Media attachment filter drop-down mime types in grid mode is not properly filtered by available mime types Media 4.9.4 normal normal Future Release defect (bug) assigned 2018-03-29T07:07:42Z 2023-10-18T16:51:19Z "In '''Gird''' mode media attachment filter is not properly filtered by available mime types, it shows all mime types by default via -
{{{
get_post_mime_types()
}}}
But in '''List mode''' its already filtered by checking
{{{
if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {
continue;
}
}}}
" itzmekhokan
Future Releases 57085 Media autoscale threshold change picture's colors Media 5.3 normal major Awaiting Review defect (bug) new 2022-11-12T10:20:28Z 2022-11-18T16:25:32Z "When uploading a picture, the automatic autoscale threshold (2560) changes the picture's colors to a different color profile (fewer colors, less vivid)
I've deactivated the automatic autoscale with
{{{
add_filter('big_image_size_threshold', '__return_false');
}}}
and the issue disappears
This is a big problem for photography-related blogs or websites, where photo quality makes the difference.
It's ok to scale the images for better performance, but we should be able to avoid it without loss of quality.
Note: I've tried to remove the jpg quality loss applied by WordPress and that's not the problem, the problem comes with the autoscale.
(Attached: image file without autoscale, image file with autoscale)
[[Image(https://aulawp.com/web/wp-content/uploads/2022/11/prueba-Barbeiro-5670.jpg)]]
[[Image(https://aulawp.com/web/wp-content/uploads/2022/11/prueba-Barbeiro-5670-1-scaled.jpg)]]" fernandot
Future Releases 43641 Media controls in the media grid are too wide Media 4.9 normal normal Awaiting Review defect (bug) new 2018-03-27T11:14:37Z 2018-10-02T16:56:31Z "The audio and video player that's shown when viewing an individual media item in the media grid displays a control bar which is too wide for its container.
Tested in latest Chrome, Firefox, and Safari on macOS." johnbillion
Future Releases 40129 Media deleting selected on mobile does not work Media normal normal Awaiting Review defect (bug) new 2017-03-12T12:47:13Z 2017-03-16T19:42:35Z "Steps to reproduce:
- Select a month in bulk select.
- Click image.
- Click delete selected.
- It doesn't delete.
[[Image(https://cldup.com/IHq3IPurbV.PNG, 50%)]]
Discovered on iPhone 7 Plus." karmatosed
Future Releases 40121 Media edit screen on mobile has visual issues Media normal normal Awaiting Review defect (bug) new 2017-03-12T12:23:38Z 2017-05-03T21:10:17Z "This screen unfortunately on an iPhone 7 Plus is pretty unusable.
[[Image(https://cldup.com/ANkhsYmH_F.PNG, 50%)]]
I would at the least suggest we don't have 2 panes and move the right below the left. Then we can iterate." karmatosed
Future Releases 41352 Media library - applying image and date filter redirects to homepage Media 4.8 normal normal Awaiting Review defect (bug) new 2017-07-18T00:12:31Z 2017-09-17T06:43:48Z "When in the media library, select LIST view > select IMAGES in the 'All media items' dropdown, select a month from the dropdown and click FILTER. I am being redirected to the websites homepage rather than the filter results.
3 people have replicated this bug, I personally have replicated it across 3 of our Wordpress websites. I tried disabling media related plugins and it had no affect. " mikedtv
Future Releases 57821 Media library badly autopopulates image caption if Windows image metadata exists Media 6.1.1 normal normal Awaiting Review defect (bug) new 2023-02-28T13:01:38Z 2023-03-11T08:05:36Z "If you upload an image which has specific metadata (Properties → Comments filled out on a Windows computer, with the Properties → Title field blank), the caption on the image in WP Admin autopopulates with a string of question marks.
------------------
=== Steps to reproduce
1. On Windows, edit an image's properties in the file explorer so that the Comments field is populated, but the Title field is not.
2. Upload the image to any site
=== What you expected to happen
The caption field in the Media library should either stay blank, or contain the actual ""Comments"" field contents.
=== What actually happened
The caption field for that file contains a string of question marks as long as your original comment text.
" properlypurple
Future Releases 40593 Media library replace image popup not displaying completely below 641px width Media 4.7.4 normal normal Awaiting Review defect (bug) new 2017-04-28T10:04:38Z 2018-10-02T14:31:15Z "When trying to Replace Media with screen width below 641px the right panel of the popup gets hidden and there is no way to update image information like description and title.
Tested in Chrome (Version 58.0.3029.81 64-bit) and Firefox (53.0 - 64 bit).
Screenshots attached." subrataemfluence
Future Releases 45886 Media modal .edit-attachment link opens in new tab rather than in modal antpb Media 5.0.2 normal normal Future Release defect (bug) assigned 2019-01-09T19:52:31Z 2020-09-05T12:12:37Z "Using the `wp.media` JavaScript API creates a link ""Edit Image"" (`.edit-attachment`) in the right sidebar of the Media modal. Expected behavior would be to open the ""Edit Image"" modal, as does the Featured Image media modal.
However, the custom Media modal does not behave consistently with the Featured Image modal - the `.edit-attachment` link opens in a new tab instead of the modal - which is both unintuitive and frustrating to end-users.
The console does not display any warnings or errors.
Custom media modal as documented: [https://codex.wordpress.org/Javascript_Reference/wp.media]
As a side note, I have noticed similar behavior in the WordPress Media page:
Media (Admin Sidebar) -> Click a picture -> Edit more Details
This also fails to open the modal - and opens in the current page instead.
" statelessstudio
Future Releases 39358 Media search speed has been dramatically reduced joemcgill Media 4.7 normal normal Future Release defect (bug) reopened 2016-12-21T08:07:18Z 2023-10-18T16:48:40Z "In the ajax-actions.php file there is function called wp_ajax_query_attachments. This function is responsible for searching images in the media library.
We see that in Wordpress 4.7, someone added a new filter to this function:
{{{
// Filter query clauses to include filenames.
if ( isset( $query['s'] ) ) {
add_filter( 'posts_clauses', '_filter_query_attachment_filenames' );
}
}}}
This filter is a performance killer and takes forever to output a result in large databases. We have tested this with db that has over 500000 posts." merts
Future Releases 45021 Media: Gallery modal has wrong focus and image detail joedolson* Media 6.1.1 normal normal Future Release defect (bug) accepted 2018-10-02T01:06:04Z 2024-02-05T20:21:21Z "When you first click on Add Media from the post editor, the existing images are shown, and nothing has specific ""focus"" (blue outline).
Clicking on Create Gallery first, the Search box is focused.
Clicking on images first, and then Create Gallery, the last image selected is focused.
Once images are selected, clicking on the Create New Gallery button, the Cancel Gallery link is focused.
On the Edit Gallery page, before clicking on an image, the sidebar shows Gallery Settings for link, columns, size. Once an image is selected, there is no way to unselect it, and although the Gallery settings remain the same, it is unclear whether this applies to the image selected or the entire gallery. Regardless, the image details are shown in the sidebar. However, if you Cancel Gallery and choose different images, when you get back to the Edit Gallery page, it will still be showing the image details for the old image, not any of the newly chosen ones (but none of the images are focused when you get there). So the Cancel didn't actually cancel.
If you close the modal without inserting the gallery into the post, and then click on Add Media again, it will show the values from the last attempt. This is unexpected, and unwanted if you had selected a lot of images and wanted to start over. There ''is'' a Clear link, but it is small and at the bottom. The last selected image is focused, but not after you click Create Gallery (the Cancel Gallery link is), so the image detail is the wrong one. If you go ahead and insert the gallery, and click Add Media again, then nothing is remembered from the previous gallery.
While in Edit Gallery, if you had selected two images and click on Add to Gallery, you can select more and click Add, they will all be shown, with one image focused and showing the correct image detail. Clicking Cancel Gallery at this point returns to the media list, but with the original two selected and perhaps a different image focused than the previous list. The added ones are forgotten." joyously
Future Releases 53663 Media: fix and improve WebP features detection Media normal normal Future Release defect (bug) new 2021-07-14T23:17:35Z 2022-12-01T00:25:44Z "Follow up from #53653.
Looking at https://developers.google.com/speed/webp/docs/riff_container, the ""extended"" WebP file format `VP8X` may include a lossy or lossless ""bitstream"" chunk (`VP8 ` or `VP8L`) and few optional chunks: `ALPH`, `EXIF`, `ICCP`, `ANIM`, etc.
Ideally the `wp_get_webp_info()` function should be extended to detect these features. " azaozz
Future Releases 48436 Media: fix the layout of Gallery settings in the media modal dialog Media 3.9 normal normal Awaiting Review defect (bug) assigned 2019-10-26T12:53:10Z 2020-11-01T11:47:20Z "In WordPress 3.8, the gallery settings in the media modal right sidebar were well aligned:
[[Image(http://cldup.com/eEOQrDgtO6.png)]]
The alignment broke pretty soon in WordPress 3.9, see [27487] / #26631. The CSS was changed to adjust the styling for the audio / video playlists settings but it broke the gallery details settings:
Screenshot from WordPress 3.9:
[[Image(http://cldup.com/EP_dN25J_v.png)]]
That's because the playlist settings are not intended to be aligned in two ""columns"":
[[Image(http://cldup.com/9djN13Naos.png)]]
The gallery settings are fully operable, so this is just a minor visual glitch.
Regardless, the layout is broken since March 2014 and still needs a fix on current trunk, even after the many changes to the media modal form controls markup and CSS, see [45499] / #47122.
[[Image(http://cldup.com/XfzKug_020.png)]]
" afercia
Future Releases 40126 Mobile has two media editing experiences Media normal normal Awaiting Review defect (bug) new 2017-03-12T12:38:39Z 2023-10-25T05:04:49Z "Seems like two editing experiences on mobile
One: Upload an image, click edit once uploaded. See this in new tab:
[[Image(https://cldup.com/TblPv9TBJT.PNG, 50%)]]
Two: Click ending on existing image, don't get new tab and get double pane weirdness. See this:
[[Image(https://cldup.com/eK7TcVfqi4.PNG, 50%)]]
We should have one experience as it feels not sensible having two.
" karmatosed
Future Releases 17255 More statuses (like draft and/or private) for media files Media 3.1 normal normal Future Release defect (bug) new 2011-04-27T11:48:11Z 2023-10-25T15:39:32Z "It's weird that media files don't carry any concept of pub status. If someone wants to upload files (either attached to a post or directly into the library), they should be able to keep them hidden via 'draft' status just like any other content. The fact that people can link to things that haven't been explicitly published is bizarre.
Media files should have a pub status. If uploaded as post attachment, should inherit publish on post publish. Would then need a workflow for if a post becomes unpublished containing media, as it then lives in library for use by other content, so would need to ask if user wants to unpub media files as well. This would be a big shift, so would make most sense as part of a media redux with a long notice period for plugin and theme authors. " jane
Future Releases 38479 Need to check utf8_encode() is available before use. Media 4.4 normal normal Future Release defect (bug) new 2016-10-25T04:38:14Z 2017-08-10T18:05:17Z "The DOM/XML extension isn't necessarily installed on some distros so use of `utf8_encode()` should be checked for availability first. It's not checked in `wp_read_image_metadata()` in ""wp-admin/includes/image.php"" (where I encountered its lack on a Ubuntu 16.04 PHP 7 server), introduced in [36429] and [36430], nor in `wxr_cdata()` in ""wp-admin/includes/export.php"", introduced in the distant past.
(Also it does ISO-8859-1 not Windows-1252 so more than likely not that good in the image situation anyway.)" gitlost
Future Releases 50667 New attachment size is created even the source is smaller Media 5.4.2 normal normal Awaiting Review defect (bug) new 2020-07-15T09:42:55Z 2022-10-19T20:37:30Z "When you upload a very optimized image sometimes the created attachment size's file size is larger than the source image. When a new size is created its filesize should be checked whether it's really smaller or not. Now it just allocates extra space and uses extra bandwidth.
Sample image: [https://ibb.co/x8LhGC0]" adam.radocz
Future Releases 40127 On mobile media deleting message formatting issues Media normal normal Future Release defect (bug) new 2017-03-12T12:42:20Z 2023-09-05T15:21:34Z "Formatting leads to widow in delete media image on mobile. Seen tested on iPhone 7 plus.
[[Image(https://cldup.com/91KH54-k3y.PNG, 50%)]]" karmatosed
Future Releases 41516 PNG Image Saturation Loss on Resize Media 4.8 normal normal Awaiting Review defect (bug) new 2017-08-01T16:08:23Z 2017-08-04T04:16:39Z "I work with PNG images made with grey colors. And the colors change because of wordpres, not the original image, but all the new sizes.
By default make the colors much darker but sometimes, also is weird:
[[Image(http://i.imgur.com/L3Sk1Rg.png)]]
Left and right are the same image. Some times handle even different for the same K=70 color.
( I export with Adobe illustrator to sRGB )" colomet
Future Releases 42128 PNGs lose color space information when resized Media normal normal Awaiting Review defect (bug) new 2017-10-06T21:11:46Z 2017-10-06T22:17:56Z "In cases where a PNG image is RGB but contains no color pixels, ImageMagick is converting the image to a gray color model during resizing, which makes the image look dark and blocky.
I'm uploading a few of original example images, saved as both PNG8 and PNG24 and one without an alpha channel.
Based on these examples, this seems to only affect PNG images and transparency doesn't seem to matter." joemcgill
Future Releases 42851 Problem with video height since 4.9 Media 4.9.1 normal normal Awaiting Review defect (bug) new 2017-12-09T12:02:55Z 2018-01-02T23:19:13Z "I have a video on a page and after updating to WP 4.9.1 the following element gets a height of 0px:
The result is that the video area shows just the controls and nothing more (see attached screenshot on the left) .
I can fix this with workarounds via CSS like styling mejs-container and mejs-mediaelement (see attached screenshot on the rigth) but that's a hassle for the responsive versions.
Anyone elese facing these problems?
(P.S.: I'm not an expert AND a German, so forgive me for dumb questions and bad writing …)
" vhcrossmedia
Future Releases 41468 "Provide contextual info about what ""attached"" and ""detached"" means regarding media objects" Media normal normal Awaiting Review defect (bug) new 2017-07-27T22:10:56Z 2017-07-30T14:25:03Z "From user testing:
""I have no idea what it means when it says an image is 'Attached' to a post. Does it mean the image is in the post? Does it mean if I 'Detach' the image from the post it will go away from the post? I'm worried a client might 'Detach' an image from a post to remove it, or 'Attach' an image to add it. What is this for? How can an image be 'Unattached' to the post it is displayed in anyway?""" mor10
Future Releases 60141 Proximity of controls: Upload New Media multi-file uploader Media normal normal Awaiting Review defect (bug) new 2023-12-22T13:50:57Z 2023-12-22T13:50:57Z "See #40822
See #51754
When uploading media files in the Upload New Media > multi-file uploader page, newly added files are listed within rows after the uploader.
The rows contain:
- The attachment details, on the left.
- Additional tools, on the right.
There's a couple problems with that.
== Proximity of controls
The tools are displayed too far to the right, way far from the details. This is a problem, for example, for low vision users and users who use screen magnifiers, as the tools may be out of their vision field.
Controls should be displayed visually grouped so that they can be easily discovered by all users. I'm not sure there's a good reason to have all that spacing between details and tools in the first place.
== The Copy button shifts to the left when copying
There's a few Copy buttons in use in the admin pages. Most of them are aligned to the left and there's a good reason for that: The UI must provide space for the 'Copied!' confirmation text.
However, on this page the Copy button is aligned to the right. After a copy operation, the 'Copied!' text appears on the right of the button thus making the button itself shift to the left. I'm not sure having moving interactive controls on the screen is a good user experience. Instead, the Copy button should be placed in a way to reserve some space for the 'Copied!' text to appear without triggering a shift of other content.
See screenshots and animated GIF below." afercia
Future Releases 39679 Redirect loop on attachment pages Media 4.7.1 normal normal Awaiting Review defect (bug) new 2017-01-24T17:12:11Z 2018-09-03T15:48:54Z "Summary: a URL to an attachment page will redirect to itself in an infinite loop in certain cases.
Speculation: this may be due to my permalink structure, which would be why others are not complaining about it.
This issue depends on the letter case of the URL. The attachment pages exist, and there is a method that allows them to be accessed, however they cannot be reached if the link is all lowercase letters. Because that is the link generated by the Media Library, users can encounter this.
It took me a while to convince myself that this is a WP core issue because it does not happen on all servers. After adding logging code to some of the action hooks, I could see that a URL comes in and then generates a redirect, using `wp_redirect`, to the exact same URL that was requested.
My permalink structure is `/%postname%.html`, and the WP portion of the site is in a subdirectory, so WP pages are accessed as: http://yourfriendpaul.com/wp/shredding-on-my-guitar.html
Trying to reach the attachment page using this URL will result in an infinite loop:
http://yourfriendpaul.com/wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900
Trying to reach it with this one will succeed, note the uppercase C. Making ANY letter in path uppercase will make it succeed:
http://yourfriendpaul.com/wp/shredding-on-my-guitar.html/good-at-shredding-dsCn4850-1200x900
To complicate matters further, this does not happen on my Ubuntu server, but does happen on GoDaddy with the exact same database (other than site name).
This is my first bug report, so I'm not sure how much info to put in the initial report. The following is an excerpt from my error log, with some notes added. Sorry for the formatting, it is just pasted.
Thanks in advance for looking into this.
Paul
The data is captured using the error log.
The first entry is made in wp-config.
The next 3 lines are when yfp_functions is loaded.
It creates the function that prepends `**yfplog` to an error message.
The final three lines are from the action hooks indicated.
{{{
` # A call in all lowercase has multiple tries, in bursts, which loop and cause 301 redirects to the original URI,
` # but one uppercase letter avoids any redirects and finds the content. Only two of the redirects are shown.
`
` [24-Jan-2017 06:19:04 UTC] *** in wp-config.php, REQUEST_URI is /wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900
` [24-Jan-2017 06:19:04 UTC] **fyplog - *** Log writing is enabled in yfp_functions, making funcion yfp_write_log()
` [24-Jan-2017 06:19:04 UTC] **fyplog - script: /wp/index.php
` [24-Jan-2017 06:19:04 UTC] **fyplog - uri: /wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900
` [24-Jan-2017 06:19:04 UTC] **fyplog - wp_loaded() action was called.
` [24-Jan-2017 06:19:04 UTC] **fyplog - wp_redirect() action was called, location: http://YourFriendPaul.com/wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900, status: """"
` [24-Jan-2017 06:19:04 UTC] **fyplog - wp_redirect_status() action was called, location: , status: ""301""
`
` [24-Jan-2017 06:19:04 UTC] *** in wp-config.php, REQUEST_URI is /wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900
` [24-Jan-2017 06:19:04 UTC] **fyplog - *** Log writing is enabled in yfp_functions, making funcion yfp_write_log()
` [24-Jan-2017 06:19:04 UTC] **fyplog - script: /wp/index.php
` [24-Jan-2017 06:19:04 UTC] **fyplog - uri: /wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900
` [24-Jan-2017 06:19:04 UTC] **fyplog - wp_loaded() action was called.
` [24-Jan-2017 06:19:04 UTC] **fyplog - wp_redirect() action was called, location: http://YourFriendPaul.com/wp/shredding-on-my-guitar.html/good-at-shredding-dscn4850-1200x900, status: """"
` [24-Jan-2017 06:19:04 UTC] **fyplog - wp_redirect_status() action was called, location: , status: ""301""
`
` [24-Jan-2017 06:19:49 UTC] *** in wp-config.php, REQUEST_URI is /wp/shredding-on-my-guitar.html/good-at-shredding-dsCn4850-1200x900
` [24-Jan-2017 06:19:49 UTC] **fyplog - *** Log writing is enabled in yfp_functions, making funcion yfp_write_log()
` [24-Jan-2017 06:19:49 UTC] **fyplog - script: /wp/index.php
` [24-Jan-2017 06:19:49 UTC] **fyplog - uri: /wp/shredding-on-my-guitar.html/good-at-shredding-dsCn4850-1200x900
` [24-Jan-2017 06:19:49 UTC] **fyplog - wp_loaded() action was called.
` [24-Jan-2017 06:19:49 UTC] **fyplog - ******* in function get_attachment_link()
` [24-Jan-2017 06:19:49 UTC] **fyplog - ******* in function get_attachment_link()
` [24-Jan-2017 06:19:49 UTC] **fyplog - ******* in function get_attachment_link()
` [24-Jan-2017 06:19:49 UTC] **fyplog - ******* in function get_attachment_link()
` [24-Jan-2017 06:19:49 UTC] **fyplog - ******* in function get_attachment_link()
` [24-Jan-2017 06:19:49 UTC] **fyplog - ******* in function get_attachment_link()
}}}" OPunWide
Future Releases 46970 Remove white Space - iPhone 6/7/8 Media 5.2 normal normal Future Release defect (bug) new 2019-04-18T08:42:03Z 2023-05-20T07:27:13Z "Hello,
While we edit image from admin dashboard (Dashboard > Media > Library - edit), there is much white space displayed in iPhone-6/7/8 landscape and portrait mode. So for that, we can make that element in full width.
Thanks,
Shashank." shashank3105
Future Releases 40299 Removing width attribute on an image with a caption removes entire caption Media 4.7.3 normal normal Future Release defect (bug) new 2017-03-29T13:59:21Z 2018-12-27T21:56:20Z "If you insert an image with a caption into the visual editor, it will create code like:
{{{
[caption id=""attachment_12345"" align=""alignnone"" width=""150""]
My caption[/caption]
}}}
If you switch from the visual editor to the text editor and remove the `width` attribute '''of the image''' to get:
{{{
[caption id=""attachment_12345"" align=""alignnone"" width=""150""]
My caption[/caption]
}}}
And then either update the post, or switch back to the visual editor, the caption is stripped and only the image remains:
{{{
}}}
Removing the `height` attribute doesn't appear to cause the same behavior. I don't believe that removing the width attribute on the image should result in both the caption being stripped and the `[caption]` shortcode being removed.
I'm not sure but this might be related to [27426] and #23103." catchmyfame
Future Releases 53669 Respect the quality settings in `wp_editor_set_quality` for lossless WebP adamsilverstein Media 5.8 normal normal Future Release defect (bug) assigned 2021-07-15T14:56:26Z 2022-12-01T00:23:58Z "In Imagick, WordPress now supports saving lossless WebP images when the source is a lossless WebP image. 🎉
This happens [https://github.com/WordPress/wordpress-develop/blob/f17f4f5f7e474e2c0bb77ace02aaf44fccd8362c/src/wp-includes/class-wp-image-editor-imagick.php#L208 inside the Imagick editor in `set_quality`].
The filter, `wp_editor_set_quality`, applies before this is run, in [https://github.com/WordPress/wordpress-develop/blob/f17f4f5f7e474e2c0bb77ace02aaf44fccd8362c/src/wp-includes/class-wp-image-editor.php#L241 the parent class].
This means that if a WebP is detected as Lossless, it isn't possible to override lossless thumbnailing with `wp_editor_set_quality`.
WordPress should respect the `wp_editor_set_quality` filter's override, [https://developer.wordpress.org/reference/hooks/wp_editor_set_quality/ unless `set_quality()` is run manually]." kirasong
Future Releases 48361 Select Files on iOS doesn't trigger on modal if start on Upload Files tab and switch to Media Library tab adamsilverstein Media normal normal Awaiting Review defect (bug) assigned 2019-10-17T23:27:06Z 2019-11-03T19:46:59Z "Hello,
I came across an odd issues on a client site recently using ACF and the Gallery field so I did a fresh install and found the issue resides in core as well.
In short the 'Select Files' button doesn't trigger the uploader if you trigger the media modal starting on 'Upload Files' and then switching to 'Media Library' when there's no files present.
To reproduce use an iOS device (iPad/iPhone);
1. Install a clean WordPress
2. Create a new post.
3. Add a Gallery block
4. Click the 'Media Library' button.
5. If your Media Modal opens with 'Media Library' tab selected then switch to 'Upload Files' and reload the screen.
6. Your Media Modal should open on 'Upload Files' now.
7. Switch to the Media Library tab now.
8. Click the 'Select Files' button that appears below the 'No items found' text.
9. Note the uploader isn't triggered.
This seems to only occur when there's no items in your media library and you are using the Media Modal but your settings have it open on 'Upload Files' first and then you switch to 'Media Library'.
I initially came across this with an ACF Gallery field, but in my clean install it was the Gallery block that I was able to reproduce the issue with.
All the best,
Cheers
" garrett-eclipse
Future Releases 35771 Setting Size for Native Video Player Doesn't Work Media normal normal Awaiting Review defect (bug) new 2016-02-07T21:28:00Z 2017-06-27T16:50:20Z "Width and height rules do not affix the size of the embedded native media player.
Width is ultimately honored, but height setting is overruled and set proportionally based on video's proportions. Consequently, if width of the player is set to fill in the theme's available content space, but the embedded video is vertical (filmed vertically, whereby height of the video is greater than width), then the player will be stretched way too tall, regardless of height settings (which is ultimately ignored).
To reproduce:
Embed any locally hosted, vertical video using native video player, using the Embed Media Player option from the Insert Media attachment window. Set width to the width of your theme's content area, and height to less than width. Height will not be honored.
Desired solution:
Set player size to the width and height chosen by the user. Fit the video within the set space of the player." Tranny
Future Releases 37311 Site icon thumbnails are lost if wp_generate_attachment_metadata called again later Media 4.5 normal normal Awaiting Review defect (bug) reopened 2016-07-07T22:36:48Z 2021-04-14T16:36:05Z "If image sizes are regenerated with the Regenerate Thumbnails plugin, the custom Site Icon sizes (and possibly other images in the customiser?) are lost.
The question is whether this is something that needs changing in the plugin, or whether the logic for how these sizes work should change in core. (Virtually all core documentation tells people to use this plugin when changing image sizes, so it should be fixed in one of the other).
I'm of the opinion it should be changed in core, where custom sizes like the ones created by Site Icons should be somehow marked as special sizes, with wp_generate_attachment_metadata checking for any existing custom sizes and including them in the output." smerriman
Future Releases 58740 Slow load in media page of WordPress admin when having huge posts table Media 6.2.2 normal minor Awaiting Review defect (bug) new 2023-07-06T15:53:15Z 2023-07-06T15:53:15Z "Slow load can be traced to this function.
{{{
// get_available_post_mime_types
// wp-includes/post.php
}}}
From what I understand, this function tries to get all of the available mime type of attachment post type. When posts are over a hundred thousand, this is causing media page in admin to load in about half a minute (hosting performance relative).
I'd like to suggest a transient in this function. Will open a PR if this bug is approved.
" Twellve_Million
Future Releases 25103 Submit buttons on form fields in the Add Media panel joedolson* Media 3.5 normal normal Future Release defect (bug) accepted 2013-08-20T21:23:11Z 2021-05-21T15:57:23Z "Splitting this out from #23561
There is no Go or Search button available to trigger the action for the search and filter input fields in the Add Media screen - both of which change the content of the panel below. For accessibility reasons the user should be in control of triggering the filtering." johnbillion
Future Releases 47144 Text inadvertently rendered by assistive technologies joedolson* Media normal normal Future Release defect (bug) accepted 2019-05-06T14:58:01Z 2022-10-28T15:49:23Z "Moved from the WPCampus accessibility report issues on GitHub, see https://github.com/WordPress/gutenberg/issues/15296
* **Severity**:
* Medium
* **Affected Populations**:
* Blind
* Low-Vision
* Cognitively Impaired
* **Platform(s):**
* Windows - Screen Reader
* Mac - VoiceOver
* Android - TalkBack
* iOS - VoiceOver
* **Components affected**:
* Block Panel
* Document Panel
* Media Dialog
**Issue description**
Users of assistive technologies such as screen readers who navigate to
the bottom of the Settings panels will find a button which they cannot
activate (nor see if sighted) called ""Select files"".
Additionally, if users change the color modes in the popup custom color
picker, the current mode is announced in a live region. However, long
after users are done with choosing a color, even after choosing to edit
another block on the page, when they reach the bottom of the Block panel
they'll still hear ""hex color mode active"". At this point, users may
not remember what this was for and have no idea what this is
referencing, as it no longer has any context.
**Issue Code**
{{{
Hex color mode active
Select Files
}}}
**Remediation Guidance**
When users have performed an action, such as clicking another block (or
whatever action causes ""No block selected"" to appear in the Block
panel), clear the live region so that users who encounter it while
manually reading do not hear it. Refill the live region when users
change color modes.
The hidden file selection button should be hidden from all users with
display: none whenever it is not visible nor meant to be used.
**Recommended Code**
{{{
Select Files
}}}
**Note**: This issue may be a duplicate with other existing accessibility-related bugs in this project. This issue comes from the Gutenberg accessibility audit, performed by Tenon and funded by WP Campus. This issue is GUT-41 in Tenon's report
''**Note**: The a11y-speak live regions are used in core as well. In several places. Thus, clearing the live regions shouldn't depend on a specific user action or scenario. It would require a more generic solution, preferably avoiding setTimeout() which seems to me a very fragile solution by its own nature.''" anevins
Future Releases 58733 The load more button appears even when there is only one image in the feature image selection window. joedolson* Media 6.3 normal normal Awaiting Review defect (bug) accepted 2023-07-06T13:22:35Z 2023-07-21T15:20:00Z "Load more button appears in the popup window for replacing the feature image, even when there is only one image available.
Steps to reproduce the issue:
1. Go to the post editor in WordPress.
2. Locate the section where you can edit the feature image for the post.
3. Click on the ""Replace"" button to select a new image.
4. The popup window will open, showing the available images.
Despite there being only one image in the selection, the ""Load More"" button is present in the popup window.
Video Link: https://www.loom.com/share/c0e9faa4cc86455eb30bdaf2149b5a60
=== Environment
- WordPress: 6.3-beta3-56143
- PHP: 7.4.21
- Server: Apache/2.4.46 (Unix) OpenSSL/1.0.2u PHP/7.4.21 mod_wsgi/3.5 Python/2.7.13 mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11 Perl/v5.30.1
- Database: mysqli (Server: 5.7.34 / Client: mysqlnd 7.4.21)
- Browser: Chrome 114.0.0.0 (macOS)
- Theme: Twenty Twenty-Three 1.1
- MU-Plugins: None activated
- Plugins:
* WordPress Beta Tester 3.5.0" aparnajl
Future Releases 58483 UI issue in uploasd multiple media in mobile Media 6.2.2 normal normal Awaiting Review defect (bug) new 2023-06-08T07:40:16Z 2023-06-08T07:40:16Z "Hi,
We need to add padding on the right side for maintaining alignment on the right side in uploading multiple media on mobile.
The more informed nation you can see mentioned screenshot. " sumitsingh
Future Releases 48111 Update usage of `multi_resize` to utilize new `wp_create_image_subsizes()` function kirasong Media 5.3 normal normal Future Release defect (bug) assigned 2019-09-23T17:48:40Z 2020-02-21T09:41:15Z "As mentioned in https://core.trac.wordpress.org/ticket/40439#comment:61
There are two uses of `multi_resize()` that will need to be updated to use the new `wp_create_image_subsizes()` function introduced in #40439.
- In the [https://github.com/WordPress/WordPress-develop/blob/master/src/wp-admin/includes/image-edit.php#L947 image editor] (`src/wp-admin/includes/image-edit.php`).
- In [https://github.com/WordPress/WordPress-develop/blob/master/src/wp-admin/includes/image.php#L583 PDF Thumbnails/Fallback Thumbnail Support] (`src/wp-admin/includes/image.php`).
" antpb
Future Releases 34465 Uploader in Media Modal Not Working When Certain Library Arguments Present Media 4.0 normal normal Awaiting Review defect (bug) new 2015-10-27T13:32:55Z 2017-09-18T00:16:15Z "I noticed this bug while working on a plugin that deals with the media modal. I'm using the following code to create a media modal on a button view:
{{{
function frame(){
// Destroy the previous collection frame.
if ( this._frame )
{
this.stopListening( this._frame );
this._frame.dispose();
}
this._frame = wp.media( {
className: 'media-frame rwmb-media-frame',
multiple : true,
title : 'Select Media',
library : {
type : 'image',
},
frame: 'select',
} );
//Event stuff goes here
this._frame.open();
},
}}}
The issue is when uploading a file using the upload tab in the media modal. The file uploads but it never appears in the Media Library tab like it does in the core media modal used by the editor. The side Attachment Details panel shows the file information but the file itself doesn't appear on the grid. Attached is a screen cap from a user of the plugin. " Funkatronic
Future Releases 40289 Uploading 2 files with the same name but different casing, overwrites existing files Media 4.7.3 normal normal Awaiting Review defect (bug) reopened 2017-03-28T22:23:44Z 2017-06-08T09:36:11Z "Problem: Under normal circumstances, if I upload a file to the media library but a file with a similar name was previously uploaded, wordpress would change the name of the new file (by adding a dash and a number).
However, If I upload 2 files with the same name, BUT WITH DIFFERENT CAPITALIZATION, wordpress won't rename the second file and will just reference the older one.
So if for example, I already had the file cover.jpg in my library and I've created a new post and uploaded the file COVER.JPG, it will show in the post the older image of (cover.jpg)." quickim
Future Releases 42484 WP ajax call fail when executing long time 'ERR_SPDY_PROTOCOL_ERROR'. Media 4.8.3 normal normal Awaiting Review defect (bug) new 2017-11-09T12:18:18Z 2017-11-09T12:38:47Z "Hello,
I have one ajax script that is uploading 25MB video on server and convert on server. This core process doing by only WordPress ajax file. This process is run successfully but after uploading and conversion ajax automatically fail and give me this error ""ERR_SPDY_PROTOCOL_ERROR"". This error i am facing from last update(4.8.3). so i think there is issue regarding ajax call in WordPress 4.8.3 version.
I am WordPress Developer with 6+ years of experience and i have found this bug. Please review this bug.
There is attach one image related to error.
[[Image(http://webidroid.com/WP_ajax_err.png)]]
" gaurangsondagar
Future Releases 55057 WebP EXIF data missing and images are not rotated in the same way JPEG images are rotated. adamsilverstein Media 5.8 normal normal Future Release defect (bug) assigned 2022-02-03T01:25:58Z 2022-07-07T18:29:05Z "When a WebP image is uploaded with the rotated exif this exif is ignored and the image is uploaded as it is instead of rotating the image when a JPEG version is uploaded the rotation happens as it should creating a `-rotated.jpeg` version of the original image.
**Result when uploading a JPEG version**
[[Image(https://user-images.githubusercontent.com/3921289/152251451-201251d2-409f-42d6-a302-a93bfe3aec3c.png)]]
**Result when uploading a WebP version**
[[Image(https://user-images.githubusercontent.com/3921289/152251458-1f3d98ac-5b40-4728-97a9-a3c05aa7cbb7.png)]]
Steps to replicate the problem:
- Create a WebP version of the original JPEG image (you can use imagemagick to do this)
- Upload the WebP version of the image and observe the image is not rotated the same way it happens with the JPEG version.
Original JPEG image used to test this behavior can be found at (and attached as part of this report):
- https://www.flickr.com/photos/brevity/6221434141/in/photostream/
Related with the performance ticket:
- https://github.com/WordPress/performance/issues/146
**Media handling information from the installation where this is happening:
**
Active editor WP_Image_Editor_Imagick
ImageMagick version number 1691
ImageMagick version string ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Imagick version 3.7.0
File uploads Enabled
Max size of post data allowed 100M
Max size of an uploaded file 100M
Max effective file size 100 MB
Max number of files allowed 20
Imagick Resource Limits area: 122 MBdisk: 1073741824file: 786432map: 512 MBmemory: 256 MBthread: 1
ImageMagick supported file formats 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
GD version bundled (2.1.0 compatible)
GD supported file formats GIF, JPEG, PNG, WebP, BMP
Ghostscript version 9.53.3" mitogh
Future Releases 53941 When converting images after uploading the original image may not be converted Media 5.8 normal normal Future Release defect (bug) new 2021-08-17T03:12:58Z 2021-11-16T18:57:42Z "This is less noticeable when the original image is larger than the ""big image threshold"" (and not a PNG) as the scaled image is converted.
To reproduce:
- Set image conversion, for example GIF to JPEG.
- Upload image.gif that is smaller than 2560x2560px.
- Note that image.gif is listed in the Gallery and present in the uploads directory but it's sub-sizes have been converted to JPEGs like image-150x150.jpg, etc.
Expected behavior: the original image should be converted." azaozz
Future Releases 40250 When cropping a image right after scaling, the crop selection will show incorrect dimensions adamsilverstein Media 4.7.3 normal normal Future Release defect (bug) reviewing 2017-03-24T11:04:59Z 2021-01-28T19:53:54Z "Steps to reproduce:
- Upload any image to the media library.
- Press ""Edit Image"" on the uploaded image.
- Scale the image up or down by any dimension.
- Try to crop the image afterwards with the drag selection on the image.
On the screenshot provided you will notice the crop dimensions are actually larger then the image size.
The bug only seems to appear when the page is not being refreshed, indicating the correct values are probably not being passed to the javascript handling the cropping after a scaling operation.
[[Image(source:http://imgur.com/fEj6uDP)]] (Screenshot: http://imgur.com/fEj6uDP)
" level level
Future Releases 55345 When uploading image through featured image section, the image item count is wrong. Media normal normal Awaiting Review defect (bug) new 2022-03-08T17:45:56Z 2022-06-08T14:17:41Z "When uploading image through featured image section, the image item count is wrong.
=== Env
* 5.9.1
* Brave, Chromium
* Win 10
* Theme : TT2
* Plugins: None
=== Test Instruction
* Open Post Editor and click on 'Set featured image' option.
* Notice the total number of existing images
* Upload a new image into the featured image section.
* Now notice the number of images (+2)
* Reload the page, and now the count corrects itself.
When uploading image directly to the featured image section of the post editor, the media item count works correctly.
" alanjacobmathew
Future Releases 45980 WordPress 5.0.3 PDF is opening empty page in Chrome and not showing content Media 5.0.3 normal normal Awaiting Review defect (bug) reopened 2019-01-14T10:34:54Z 2019-01-30T07:38:23Z "Hi,
I have some links that open pdf.
On firefox or safari, when I clic on the link, the pdf is opend on another page.
I can see the pdf.
On Chrome, when I clic, anoter page is open but the page is empty.
I can see on the url that the pdf is open
https://www.....de/wp-content/uploads/2018/07/TEST.pdf
but it is empty. And it worked before (not with WordPress 5.0.1)
And it doesn't work with new pdf too.
MAny thanks for you help" Timama
Future Releases 30402 WordPress does not respect the bit-depth of the original image when resizing Media 3.9.2 normal normal Awaiting Review defect (bug) new 2014-11-19T08:15:02Z 2021-03-04T15:09:12Z "i have uploaded 8 bit depth indexed color png, near 1400x1800 size image in wordpress and inserted it into post , and original image was near 500 kB and the smaller width-height version made by wp is near 1400 kB, because it is 24 or 32 bits per pixel png.
(this is useless. i have edited html code to use full version because it is smaller by weight and it is scaled by size so it is ok)." qdinar
Future Releases 36308 get_attached_file() destroys file paths on Windows Media 4.4.2 normal normal Future Release defect (bug) assigned 2016-03-23T15:45:03Z 2023-05-31T15:30:19Z "While working on ticket #36273 I noticed that ''get_attached_file()'' from ''wp-includes/post.php'' will destroy paths normalized by ''wp_normalize_path()'' on Windows:
For example the function starts with
{{{#!php
$file = get_post_meta( $attachment_id, '_wp_attached_file', true );
// $file = 'C:/WWW/Sites/demo/htdocs/wordpress/wp-content/uploads/2016/03/example.jpg'
}}}
However this will become
{{{#!php
$file = 'C:\WWW\Sites\demo\htdocs\wordpress/wp-content/uploads/C:/WWW/Sites/demo/htdocs/wordpress/wp-content/uploads/2016/03/example.jpg'
}}}
due to
{{{#!php
if ( $file && 0 !== strpos($file, '/') && !preg_match('|^.:\\\|', $file) && ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) )
$file = $uploads['basedir'] . ""/$file"";
}}}
This is similar to ticket #24824 however we are dealing will full qualified paths here, not URLs (well, both are URIs...).
PS: Yes, `$uploads['basedir']` contains mixed directory separators. That's another thing." Whissi
Future Releases 53200 image quality reduction in smaller images Media 5.7.2 normal normal Awaiting Review defect (bug) new 2021-05-13T13:01:43Z 2021-05-13T13:01:43Z "So what happens is you upload a full size image to wordpress in my case project53.co.uk and I am using a goodlayers theme but I have repeated the same process on a stoc install on a different site and have the same issue.
On this site for example the easiest one to see it on is the woman and look at the cheeks as full size looks ok and has colour and smaller images looks toned down and grey and it is wordpress changing the image quality with the smaller images.
this is the details send from our dev guy
For now - I have removed the thumbnails that the site was trying to use (I had set it to 'full', which should have been used, but the theme didn't want to co-operate) and then regenerated the thumbnails - pretty much forcing the site to use the full-size image.
It may occur elsewhere in the site - hard to say until I've seen every possible variation of an image on the theme - but as long as we repeat the same steps to remove the thumbnail size and regenerate, it will be fine.
You could just remove all regenerated sizes and ensure that sizes are set by the container the image is in; that would definitely stop it.
So if you see another image (or multiple images) having the same problem:
Inspect that image and see what thumbnail size it is using. (You can generally tell by the suffix on the end of the image name, e.g. blahblah-800x600.jpg)
Go into Goodlayers Options > Miscellaneous > Thumbnail sizing Remove the thumbnail size that it's using
Go into Tools > Regenerate Thumbnails
Ensure that the thumbnail size that you remove is not there
Click Advanced Options, and check the box which says ""Delete unselected thumbnails"" - this will remove that size from the server and tell WordPress it doesn't exist
If it was me - I'd unregister all of the thumbnails and just limit the size of images which are being uploaded - and use that size globally throughout the theme (if the size doesn't exist it should fallback to the full size image as default).
That doesn't necessarily have to be the case - but you just don't want 5MB images on a page - because then you'll have all the page speed problems to deal with!
" digitalmountain
Future Releases 46390 image_default_link_type is not seen by Gutenberg Media 5.1.1 normal normal Awaiting Review defect (bug) reopened 2019-03-01T12:34:42Z 2022-04-05T02:26:53Z "I have in option.php the image_default_link_type set to file so that by default the ""link to "" for all media files is by default set to media.
Since upgrading to Gutenberg 5.1, this feature appears to be deactive." brianjcameron
Future Releases 54205 jqxhr is undefined inside of deferred.done() when using wp.media to add a custom image upload Media 5.8.1 normal major Awaiting Review defect (bug) new 2021-09-30T20:55:42Z 2022-05-31T14:33:33Z "I have done all the usual trouble shooting and found this is being cause by a new block of code added to wp-util.js in 5.8.1. Specifically lines 121-134.
The jqXHR property does not exist inside of the done() object and therefor always errors out. This is removing a key functionality of a clients admin that makes it where no new products can be added without a horrible workaround." metawebdevelopment
Future Releases 59641 manually setting fetchpriority on image should prevent core from adding fetchpriority attribute Media 6.3 normal normal 6.6 defect (bug) new 2023-10-16T20:44:56Z 2024-02-17T13:44:33Z "When working on testing the automated fetchpriorty attribute core now adds for images, I discovered this bug:
If users manually set fetchpriority=""high"" on an image either programmatically or using a plugin, core will not change that setting, however it unexpectedly sets fetchpriority=""high"" on another image.
=== Steps to reproduce
1. install this plugin to add a manual fetchpriority dropdown: https://github.com/adamsilverstein/wp-fetchpriority-control
2. create a post with several large images
3. select the first image and apply fetchpriority=""high"" (under advanced)
3. publish the post and view its source
**Expected results:**
Only the first image should have the `fetchpriority=""high""` attribute, setting high fetchpriority on more than one image reduces the effect of adding the attribute.
**Actual result:**
Core applies `fetchpriority=""high""` to the second image so the first two images contain the attribute.
" adamsilverstein
Future Releases 45802 media_upload_tabs not supported in 5.0? Media normal normal WordPress.org defect (bug) reopened 2019-01-01T04:37:22Z 2019-06-04T19:16:22Z "I noticed the instructions here are incorrect at least for the latest WordPress 5.0
https://codex.wordpress.org/Inserting_Media_into_Posts_and_Pages
At least, I can't seem to find the add media and it appears to be replaced by Gallery and Image, which shows upload/media-library/insert-from-url.
Unfortunately it looks like there is no longer a way to get to this dialog and use extra upload-tabs to the left on the dialog shown in the tutorial linked above. In other words [https://developer.wordpress.org/reference/hooks/media_upload_tabs/ media_upload_tabs] doesn't do anything? If so, it should probably note this on that filter page and on the codex page.
" programmin
Future Releases 46209 mediaelement CSS loading at bottom of body Media 4.9 normal normal Future Release defect (bug) new 2019-02-07T21:55:20Z 2023-01-31T13:55:35Z "The question was asked in #42751 why we are loading mediaelement css in the body. It was agreed in the recent Media meeting that this is better fit for it's own ticket for discussion.
----
Mentioned by @themezly :
While we are at it, why are we loading mediaelement CSS files at the bottom of body
http://prntscr.com/hh0808 ?
CSS files should always be in head.
" antpb
Future Releases 46544 mp3 file with different file mime type and content type when uploading should not be rejected Media 5.1 normal major Awaiting Review defect (bug) new 2019-03-17T02:51:33Z 2023-01-27T02:33:41Z "{{{#!php
wp_print_media_templates(). llvasconcellos
Future Releases 41372 when no any media. at that time this section is not usable. so Please hide when no any media. Media normal major Awaiting Review defect (bug) reopened 2017-07-20T07:57:16Z 2017-11-06T06:02:03Z When no any media at that time this section is not usable. So please hide when no any media. rushabh4486
Future Releases 53187 wp_filter_content_tags added too early Media 5.5 normal normal Awaiting Review defect (bug) new 2021-05-11T19:15:40Z 2021-07-26T16:31:46Z "Currently wp_filter_content_tags filter is added to the_content filters with default priority, this means that if the iframe is outputted by shortcode it will not get the lazy loading attribute.
I think that it should be added after do_shortcode has run with priority of 12." maciejmackowiak
Future Releases 32117 wp_get_attachment_metadata sizes array file misses path if using year/month organizing Media 4.2 normal normal Awaiting Review defect (bug) new 2015-04-24T15:58:51Z 2017-08-14T13:15:29Z "wp_get_attachment_metadata returns array like this:
{{{
[""metadata""]=>
array(5) {
[""width""]=>
int(3072)
[""height""]=>
int(2304)
[""file""]=>
string(25) ""2015/03/GC702D01_high.jpg""
[""sizes""]=>
array(4) {
[""thumbnail""]=>
array(4) {
[""file""]=>
string(25) ""GC702D01_high-200x150.jpg""
[""width""]=>
int(200)
[""height""]=>
int(150)
[""mime-type""]=>
string(10) ""image/jpeg""
}
}}}
as you can see, ""file"" in the first level of the array contains year and month (as i do have turned on organizing in year/month structure for uploads), but ""file"" in the second level for (e.g. in this case) the thumbnail size is only the file name, without the path.
This is at least confusing, make it difficult to get the URL of the file - each size need to be then requested separately by wp_get_attachment_image_src function.
IMO optimal solution would be to use full path in both `$metadata['file']` and `$metadata['sizes'][$size]['file']` so the same name would have the same structure. But i do not know if it wouldn't have some compatibility issues.
Less optimal imo would be to add there also the path - it can be there only once in the top level, as all sizes are currently always in the same folder, but i think this could lock us from possible changes / plugin modifications etc. E.g. I think that it would be great, if it would be possible (and even default) to have size name, as a folder, so that we would have thumbnails in uploads/thumbnail, medium size in uploads/medium ... - this would highly reduce the number of images in one folder in default settings and would reduce the problems with displaying them on most systems. And also if we would want to delete some defined size, we could simply delete one folder and save space.
So the second optimal would be to show the path in `sizes[$size]` subarray, e.g.
{{{
[""metadata""]=>
array(5) {
[""sizes""]=>
array(4) {
[""thumbnail""]=>
array(4) {
[""file""]=>
string(25) ""GC702D01_high-200x150.jpg""
[""path""]=>
string(25) ""2015/03/""
}
}}}" thomask
Future Releases 58611 wp_get_missing_image_subsizes can return incorrect subsizes for a rotated image antpb Media 6.2.2 normal normal Future Release defect (bug) assigned 2023-06-23T12:33:44Z 2024-02-05T20:27:49Z "During the upload of a rotated image to the Media Library, the `wp_get_missing_image_subsizes()` function often returns missing subsizes for the non-rotated original image that will never be generated for the rotated image.
This means for example, if a plugin is filtering `wp_update_attachment_metadata` and waiting for all thumbnails to have been generated before performing some action, it may be told that there are missing thumbnails for a rotated image, that will not be generated. Therefore it will not be able to perform that action as not all the thumbnails are deemed to be available." ianmjones
Future Releases 51421 wp_get_missing_image_subsizes returns thumbnail sizes for animated GIFs Media 5.5.1 normal normal Awaiting Review defect (bug) new 2020-09-30T14:27:32Z 2020-10-01T14:36:20Z "While thumbnails are not created for animated GIFs to avoid the problem of users picking a thumbnail size to insert into their content and unexpectedly getting a static image instead of an animated GIF, they are generated for static GIFs.
The `wp_get_missing_image_subsizes` function however recognizes animated GIFs as an image format that can have subsizes generated, and so returns a list of missing thumbnail sizes that will never be created.
This causes problems for various plugins when checking whether all required thumbnails exist before commencing processing the GIF etc." ianmjones
Future Releases 43413 wp_prepare_attachment_for_js missing image size medium_large Media 4.9.4 normal normal Future Release defect (bug) new 2018-02-25T18:54:29Z 2019-04-15T18:12:50Z "I have a function that creates a media size in case the size is called but is missing in meta. https://gist.github.com/danyj/2edb3d83bae4c363bf839f0dd5f1343f
usage
{{{
thz_create_missing_attachment_size(13031,'medium_large');
}}}
every missing file size is recreated and exists in by wp_prepare_attachment_for_js size key except the media_large because it is missing here.
https://github.com/WordPress/WordPress/blob/dfa68397063daf90a8758896693f137f9b981856/wp-includes/media.php#L3297-L3304
Basically if meta has been updated the wp_prepare_attachment_for_js is not checking for sizes but manually goes by that array . Not sure if the missing size key is left out on purpose but when you compare the wp_prepare_attachment_for_js to wp_get_attachment_metadata the data is not same " Themezly
Future Releases 58240 wp_read_image_metadata() doesn't handle Exif array values joedolson* Media normal normal Future Release defect (bug) accepted 2023-05-03T06:02:01Z 2024-02-05T20:25:50Z "Some images appear to have multiple values for some headers, which causes `wp_read_image_metadata()` to return `'Array'` for some fields.
A real-life example are these images:
- https://wordpress.org/photos/photo/3056444e62/
- https://wordpress.org/photos/photo/7716444e53/
- https://wordpress.org/photos/photo/5376444e57/
Looking at the return value from `exif_read_data()` for one of these, you'll see arrays below. However `wp_read_image_metadata()` includes lines like `(string) $exif['FocalLength'];`. It looks like `iPhone 13 mini` might be common between the above examples
{{{
[...]
'SectionsFound' =>
string(19) ""ANY_TAG, IFD0, EXIF""
'COMPUTED' =>
array(6) {
[...]
'ApertureFNumber' =>
string(5) ""f/1.6""
}
[...]
'Make' =>
string(5) ""Apple""
'Model' =>
string(48) ""iPhone 13 mini back dual wide camera 5.1mm f/1.6""
'Exif_IFD_Pointer' =>
int(106)
'ApertureValue' =>
array(2) {
[0] =>
string(9) ""1356/1000""
[1] =>
string(9) ""8803/1000""
}
[...]
'FocalLength' =>
array(2) {
[0] =>
string(9) ""5100/1000""
[1] =>
string(10) ""10884/1000""
}
'ShutterSpeedValue' =>
array(2) {
[0] =>
string(10) ""10884/1000""
[1] =>
string(19) ""1124129791/84149760""
}
}}}
As a result on the above Photo pages you'll see something like this:
{{{
Focal Length: Arraymm
Shutter Speed: 1/0
}}}
This could be related to the image processing application being used, or the sections found in the image. I'd be tempted to just select the first array key in those cases." dd32
Future Releases 60178 wp_video_shortcode() outputs invalid HTML Media normal normal Awaiting Review defect (bug) new 2024-01-02T22:09:17Z 2024-02-15T07:25:42Z "Did an audit of a website and found several invalid HTML for video tags that were output with `wp_video_shortcode()`. The errors:
* Bad value `1` for attribute `loop` on element `video`
* Bad value `1` for attribute `autoplay` on element `video`
* Bad value `1` for attribute `muted` on element `video`
Based on documentation from Mozilla, all 3 are boolean attributes. Here is an example of function usage that produced the HTML validation errors:
{{{#!php
wp_get_attachment_url(9999),
'class' => 'my-custom-video',
'poster' => '',
'loop' => 'true',
'autoplay' => 'true',
'muted' => 'true',
'height' => 1080,
'width' => 1920
] );
}}}
This part in `wp_video_shortcode()` is the culprit:
{{{#!php
$v ) {
$attr_strings[] = $k . '=""' . esc_attr( $v ) . '""';
}
}}}
Currently, we are using the filter to clean up these attributes like this:
{{{#!php
' .
/* translators: %s: Asterisk symbol (*). */
sprintf( __( 'Required fields are marked %s' ), '
* ' ) .
'' .
'
';
}
}}}
The foreach loop that goes through all fields could easily check if any field has the ""required"" attribute and rather use that as a condition to show the message instead of `$item`." webzunft
Future Releases 60345 Add duplicate checking for uploaded attachments Media normal normal Awaiting Review enhancement new 2024-01-25T16:39:34Z 2024-01-25T16:39:34Z "It can be very difficult to tell whether you've already added a given document or image to your media library if it's no longer in recent items. The lack of sorting or filtering makes specific difficult to locate.
Based on a [https://wordpress.slack.com/archives/C02SX62S6/p1706115251959409 conversation on duplicate detection in #core-media], we think that a starting point for this is to hash the meta data for an attachment at the time of upload and store that as attachment meta.
We could then check for that hash value before uploading a new document, and prompt the user to use the old attachment if it already exists.
The specific meta data would probably need to vary depending on the type of attachment." joedolson
Future Releases 39626 Add video poster in media browser Media normal normal Awaiting Review enhancement new 2017-01-18T15:07:26Z 2020-03-02T16:17:23Z "When you upload images you get to see amazing thumbnails in the browser. This unfortunately isn't the case for videos. Could we somehow have this?
This is what we currently have:
[[Image(https://cldup.com/yK6Hu9pZgw.png, 50%)]]" karmatosed
Future Releases 31139 Allow editing of video embed parameters in the media modal wonderboymusic Media normal normal Future Release enhancement reopened 2015-01-26T18:53:55Z 2017-07-10T17:33:41Z Unsure if this is possible, but it would be pretty sweet if you could adjust available video embed parameters, such as height/width, straight from the media modal. It could fit pretty well on this screen: https://cloudup.com/caoYOVuWM41 melchoyce
Future Releases 36270 Allow filtering of the final HTML output of media related shortcodes Media 4.7.2 normal normal Awaiting Review enhancement new 2016-03-18T02:33:02Z 2020-04-09T09:00:28Z "Sometimes it is required to further process the final HTML output of the media related shortcodes, eg {{{caption}}} or {{{gallery}}}, so as to add extra HTML code such as enclosing div or span elements or just modify the existing HTML code during run time.
For instance the final output of {{{img_caption_shortcode}}} could be filtered:
https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-includes/media.php#L1537
Passing all relevant image attachment data, like ID and size, would also be very useful.
I hope that I am not missing anything but right now the only way to insert code inside the {{{
}}} or {{{}}} block seems to be the complete override of the {{{img_caption_shortcode}}} function.
" gnotaras
Future Releases 41854 Allow filters to be added for the Media Library in Grid Mode & Insert Media Media 4.8.1 normal normal Awaiting Review enhancement new 2017-09-11T08:02:45Z 2017-09-17T14:41:55Z "Hello,
I would like to suggest the action '''restrict_manage_posts''' and '''pre_get_posts''' to be used by the Media Library in Grid Mode. It would also be great to have this available in Insert Media or when picking a Featured Image. That will allow many developers to add useful filters and avoid users to look desperately for their images/photos :) Many users have been asking this and most of them believed it was a bug (List Mode and Grid mode look very similar so the absence of filters for the Grid Mode is actually not logical).
Thanks a lot :)" TigrouMeow
Future Releases 33054 Better featured image/attachment sanity checks Media 4.2.2 normal normal Awaiting Review enhancement new 2015-07-20T22:19:09Z 2017-06-27T16:16:22Z "Use case:
Add a post: If a user uploads a featured image and the file fails to write to disk, the post record contains the url to the image but of course the image is broken. The end state is one where the featured image is simply broken, but the post record references the image.
Possible solutions:
1. Do an extra sanity check after write to disk that the image was actually created. If there was a failure alert the user. This is probably the easiest.
2. Or reverse the order of operations, making it transactional in nature. That is, create the image(s) first, check if successful, and then update the post record. If there is a failure show an alert to the page, and don't write the image path to the post record as the file doesn't exist. It is alot cleaner to not have an image than having a broken one. It is also better if the image was successfully written to disk but the post url failed to update for some reason; we can always re choose from the media library.
a. Going above and beyond, the sanity check would keep track of thumbnail sizes to be created and make sure they all were successful. If not, don't update the post record and remove the thumbnail sizes that did write to disk. Once again treat as a transaction; all or nothing.
Extended impact:
Many folks use image compression plugins or tools that compress the images before writing to disk. Currently if those items fail usually by timeout you are left with a broken image and the url is in the meta.
I propose that there be a pre-check as to the thumbnails to be created before the image write even occurs (add a new action hook that keeps track of the thumbnails we expect from add_image_size) and then check on the backside to make sure we have the image(s) we expect. After that all sanity check rules proposed above would apply." ShawnLunny
Future Releases 50169 Consistency in Gallery and Image block settings Media 5.4.1 normal normal Future Release enhancement reopened 2020-05-14T14:24:11Z 2020-07-21T22:10:08Z "In the Gutenberg repo we have been tracking an issue focused on unifying the Gallery and Image editing experience. Currently, it's a bit disconnected from image settings and this ticket aims to change the Gallery block to create instances of image blocks rather than raw markup
https://github.com/WordPress/gutenberg/issues/11436
From the issue:
Is your feature request related to a problem? Please describe.
Single and gallery options should be similar to each other.
I added one image to a gallery and want to resize it in a similar way to how I resize single images. Not possible. I want to add images by clicking the standard add image media library screen but it only says upload an image. It should be identical to the single image media selection options.
Describe the solution you'd like
I would like to see much more consistency between single image and gallery options. It should be very easy to go from one to the other with similar options. As one begins working with images an expectation is created that image options should be similar between various blocks that handle images.
Single image options
[[Image(http://user-images.githubusercontent.com/5323259/47937002-c17bf600-dedf-11e8-9823-ad596ce22764.png)]]
Gallery image options
[[Image(https://user-images.githubusercontent.com/5323259/47937047-dfe1f180-dedf-11e8-8b08-0db18edc2eb2.png)]]
Single image upload media options:
[[Image(https://user-images.githubusercontent.com/5323259/47937075-ee300d80-dedf-11e8-8bb1-44a47574e2ac.png)]]
Gallery upload media options:
[[Image(https://user-images.githubusercontent.com/5323259/47937095-fbe59300-dedf-11e8-88d9-6dbea7190f78.png)]]
Captions are also different from single images to the gallery.
Top example shows the Gallery and bottom a single image.
[[Image(https://user-images.githubusercontent.com/5323259/47940629-8e3f6400-deeb-11e8-9ff6-cfa71c5daccf.png)]]
Btw
It would also be very helpful to be able to rearrange the gallery images by using drag and drop.
" antpb
Future Releases 53645 Convert heic to a web safe image format. Media normal normal Awaiting Review enhancement new 2021-07-12T17:07:39Z 2024-02-08T08:58:08Z "[https://support.apple.com/en-gb/HT207022 As of ios 11], Apple start using the HEIF format to save images. Sadly HEIF files can not be viewed in web browsers. For those taking images on their iPhone, this would mean to embed a raw iPhone photo, would require them to use a third party tool to convert that image into a web safe format like jpeg.
WordPress core should convert this image to a web safe format while keeping the original for reference. " spacedmonkey
Future Releases 48485 Custom image size not generated if identical to original size joedolson* Media 5.2.4 normal minor Future Release enhancement accepted 2019-11-03T09:31:22Z 2024-01-29T20:19:18Z "When defining a custom image size using `add_image_size` and uploading an image that has exactly the same dimensions of that image size, the new image size is not added. This also means that -- when adding the newly defined image size -- to the Insert Media screen using the `image_size_names_choose`-filter, the custom image size does not appear in the dropdown menu.
Even though I can understand why this happens from a server load / storage point of view, I feel the unexpected behaviour (to end users) is a bigger problem. An even prettier fix would be to detect the custom image size is identical to the original size and map the custom image size URL to the original file URL (e.g. through a symbolic link).
{{{#!php
__( 'Project-foto' ),
) );
}
add_filter( 'image_size_names_choose', 'custom_media_sizes' );
}}}
" brampeerlings
Future Releases 42829 Debugging image uploads with wp_generate_attachment_metadata Media normal normal Awaiting Review enhancement new 2017-12-07T14:24:22Z 2019-02-14T21:28:56Z "Because of the if statement declared in image.php on line 181 ([https://core.trac.wordpress.org/browser/tags/4.9/src/wp-admin/includes/image.php#L181]) it seems impossible to retrieve the error message, what is supplied by the wp_upload_bits() function.
Please return this message or implement a new function what verifies what the error messages are trying to inform the user about." Fleuv
Future Releases 39346 Display Error if GD library ins't installed/enabled Media 4.7 normal normal Awaiting Review enhancement new 2016-12-20T18:47:03Z 2018-01-04T18:55:29Z "I recently moved a website to a new server and ran the Regenerate Thumbnails plugin which ended up breaking my site because it couldn't generate the image sizes. Looking at their reviews there are a number of people bashing the plugin for breaking their sites because they do not have the GD library installed. I was very confused for awhile and I couldn't google the issue I was having but then remembered it required the GD library.
This isn't an issue only directed at the plugin because when you upload an image it will only show the full size available which left me puzzled for awhile.
I think if we could display an error in the media library after uploading an image that it failed to create the image sizes because of the missing PHP library that would be very helpful." stormrockwell
Future Releases 43608 Display missing module error for GD when on Media Settings Media 4.6 normal normal Future Release enhancement new 2018-03-22T06:16:06Z 2019-04-15T18:22:33Z "When WordPress is installed on a server is [http://php.net/manual/en/book.image.php missing the GD PHP image library], there should be an admin level warning displayed on the Media Settings admin page.
Without the GD module there will be '''no intermediate image sizes created when images are uploaded in the media library''' (the media gallery just uses the full image size by default)
[https://pasteboard.co/Hd2hc9L.jpg Without Admin Notice]
The Media Settings page should display an admin warning / error that tells the user that they're missing that module and without it no intermediate images will be created. The whole page talks about the various images size and without GD none of these settings will be used for anything.
I've created a simple gist that displays an admin notice if the '''GD library isn't loaded''' and the current user is on the '''Media Settings''' page.
[https://pasteboard.co/Hd2hVdk.jpg With Admin Level Notice]
[https://gist.github.com/simonrcodrington/be60b6daae0b966a559878c4ba16d9d0]
This has come up a few times now where images haven't been created in the media library and no one has known why. Sometimes hosting providers don't include this extension or they are just not loaded. Having an admin level notice here would make sense.
" simonrcodrington
Future Releases 40427 Expose a JavaScript API to extend the Media Manager Media 4.8 normal normal Awaiting Review enhancement new 2017-04-12T17:30:38Z 2021-05-20T20:29:03Z "After talking with @mikeschroder as Pressnomics about how hard it was to extend the media manager, I wanted to open the discussion here for ways we could improve that.
One way I made it work for the Stock Photo plugins at GoDaddy was to override core bindHandlers (see https://github.com/godaddy/wp-stock-photos/blob/master/assets/js/stock-photos.manifest.js#L13) and register my new view. One problem with that approach is that it makes it hard for anyone else to extend it for themselves.
I'm turning out to the community so we can discuss ways we could expose hooks that would let anyone extend any part of the media manager experience. This could pave the way for awesome new plugins." jonathanbardo
Future Releases 39262 Fall back to ImageMagick command line when the pecl imagic is not available on the server Media 4.7 normal normal Awaiting Review enhancement new 2016-12-13T11:59:23Z 2019-05-16T13:22:06Z The patch allows WordPress to fall back to the ImageMagick command line when the imagic pecl is not available on the server. Patch attached. Hristo Sg
Future Releases 40441 High server resource usage and timeouts during image uploads Media normal normal Awaiting Review enhancement new 2017-04-13T18:53:52Z 2017-04-14T14:25:12Z "When uploading an image, server resource usage can run high and the resize process can easily timeout causing the upload to fail. This is often down the creation of intermediate image sizes and is especially noticeable when plugins/themes have custom image sizes defined.
This issue has been mentioned before in both #37840 and #36534.
#40439 proposes saving the progress of intermediate image creation so resizing can be resumed on retry.
This ticket is mainly for discussion around ways to reduce potential server implications when uploading an image and creating intermediate image sizes." enshrined
Future Releases 54452 Image Aspect Ratio on resize Media 5.8.2 normal trivial Awaiting Review enhancement new 2021-11-16T10:54:08Z 2021-11-16T10:54:08Z "With the picture block the css resize the picture width but never the height so it break is aspect ratio.
Just need to add a height: auto to .wp-block-image img ." edgarwes
Future Releases 34367 Image Editing: Orientation-aware rotation icons Media normal normal Future Release enhancement reviewing 2015-10-20T05:38:51Z 2019-06-04T20:17:04Z "Having just processed a massive set of images and needing to rotate several of them, I noticed a small issue with the way the WordPress image editor's rotation icons work. They're generally much better than the standard rotation arrows you'd normally see, providing a visual of an image being rotated one way or another from portrait to landscape. But if you're looking at a landscape image that needs to rotate one way or the other, it's somewhat disorienting trying to decide which button to push, since you're essentially rotating it one more time past the orientation indicated in the icon. By contextually adjusting these icons to reflect the orientation of the image in the editor, we could eliminate an extra cognitive step during the image editing process (see proposed screenshots).
Probably the easiest way to go about fixing this would be to add a class for the image's orientation somewhere in a container div, then add some css to rotate these buttons when the image is already landscape, so that they indicate that clicking would make them rotate into portrait orientation." celloexpressions
Future Releases 53013 Improve media library grid management tools joedolson* Media normal normal Future Release enhancement accepted 2021-04-09T19:07:03Z 2023-10-18T16:18:07Z "The list view & the media modal both support bulk selection tools that aren't available in the media library's grid view.
We should explore ways of moving the media grid view towards greater feature equivalence with these other views, including options such as:
- One-click deletion
- Select multiple items
- View attachment titles (helps differentiate between two versions of an image)
- Copy URL for attachment
Prompted by #51363. While a custom context menu is not something we consider to be viable for accessibility reasons, the intent of that ticket is definitely worthwhile. " joedolson
Future Releases 40123 Improve media uploading flow Media normal normal Awaiting Review enhancement new 2017-03-12T12:30:16Z 2019-01-14T17:54:02Z "Currently once you upload an image it just leaves you back at screen. We should consider on success offering next steps. We could use this as a chance to add encouragement:
[[Image(https://cldup.com/sS6jT02xtn.PNG, 50%)]]" karmatosed
Future Releases 39618 Insert PDF Thumbnail into Editor Media 4.7 normal normal Future Release enhancement new 2017-01-17T22:00:29Z 2019-12-09T15:38:51Z "[38949] is awesome, but the next logical move is to allow content editors to easily insert the PDF thumbnail into the Editor upon Insert Media.
There will need to be a UI for allowing the content editor to choose whether to insert the image or the textual link. The easiest place for this to live without a major UI overhaul would be in the Insert Media workflow itself.
In fact the ""Size"" pull-down menu doesn't really do anything right now for PDFs, so it would be a good place to add an option ""Document Link Only"", and then honour the other sizes when selected and actually insert the image.
" tomauger
Future Releases 42986 Insert default filters to wp_delete_file to don't delete core files. Media 4.9.1 normal normal Awaiting Review enhancement reopened 2017-12-27T11:57:51Z 2019-03-22T13:34:35Z "
I am see many plugins that don't use wordpress method to delete files ( are using unink ) and exist wp_delete_file. Really you can insert filter, but I think that if didn't have filter by default you can use method to remove anything, including core files.
If all agree and approve this ticket I can implement." lenon
Future Releases 43023 Make Core Image Handling More Extensible Media 4.9.1 normal normal Awaiting Review enhancement new 2018-01-04T21:35:41Z 2020-08-21T03:34:07Z "As we are beginning to see many new and promising formats such as WebP (#35725), APNG, and HEIF/HEVC (#42775), it is probably time to revisit all of the image-related code in the Core, providing filters and hooks so that plugins and themes can choose to support them.
Based on the work in #35725, it is clear there are a number of areas with insufficient extensibility, making it impossible for such work to be done by third-party code.
[[BR]]
'''WRAPPERS'''
`getimagesize()`: Due to various bugs and inconsistencies within PHP, direct calls to this function should be replaced with a wrapper function capable of providing filtered responses. #35725 includes this in its patch.
[[BR]]
'''FILTERS'''
Many functions include hard-coded datasets or conditions. By wrapping those in filters, third-party code can alter behavior accordingly.
* `wp_stream_image()`
* `wp_save_image_file()`
* `wp_generate_attachment_metadata()` - The extensions-by-type need to be filterable.
* `load_image_to_edit()` - The $mime_type switch needs a filterable default.
* getid3.lib.php `ImageTypesLookup()` - Types need to be filterable.
* class-phpmailer.php `_mime_types()` - Types need to be filterable.
* image classes `supports_mime_type()`
* class-wp-theme `get_screenshot()` - Filterable types.
* `gd_edit_image_support()` - Filterable responses for both conditions.
* `translate_smiley()` - Needs filterable types.
* `wp_get_image_mime()`
* `wp_attachment_is()` - Filterable extensions.
* `wp_mime_type_icon()` - Filterable test for image files.
[[BR]]
'''OTHER'''
There are additional areas that require more complicated solutions.
* `file_is_displayable_image()` - Relies on constants which may not be defined, even in cases where an image type is actually supported. Haha.
* wp-admin/includes/schema.php - $misc_exts needs to be filterable.
* class-wp-image-editor-gd `load()` - Needs a filter around the resource creation. `imagecreatefromstring()` does not work consistently depending on the GD version installed.
* class-wp-image-editor-gd `_save()` - Needs a filter to handle alternative MIME types.
* class-wp-image-editor-gd `stream()` - Needs some means of specifying alternative headers and callbacks.
* class-wp-image-editor-imagick `thumbnail_image()` - Needs some means of specifying options for different image types.
* class-wp-image-editor-imagick `stream()` - Needs a shortcut filter to allow for completely different handling. (This is a quirk of the PHP extension not always properly communicating with the system binary, leading to segfaults, etc.)
* class-wp-customize-media-control `to_json()` - Needs some method of altering the $type matching.
[[BR]]
'''ROADBLOCKS'''
Additional requirements, such as defining missing PHP constants, might not be possible by the time plugin or theme code is executed. However by the time official PHP support lands, we can probably consider adding such values to the `compat.php` file (without necessarily providing a full blessing for the filetype within the Core)." blobfolio
Future Releases 32622 Make the text of the Image delete AYS dialog clearer Media 4.3 normal normal Awaiting Review enhancement new 2015-06-12T02:30:01Z 2017-06-15T09:53:56Z "When you delete Images from the Media Library, the warning dialog currently reads:
""You are about to permanently delete the selected items.""
This text could be a little clearer, and indicate that, once deleted:
- Attached Images will not be visible in any Posts or Pages they are attached to.
- Both Attached and Unattached Images will not be available online at all." lastnode
Future Releases 40120 Media on mobile action links missable Media normal normal Awaiting Review enhancement new 2017-03-12T12:19:47Z 2017-03-16T19:45:14Z "The following is how on an iPhone 7 Plus the media interaction links look:
[[Image(https://cldup.com/TLmN2U_8fW.PNG, 50%)]]
They are smaller than the body text and also very missable at the bottom.
Can we at least increase their size and see about moving to top?" karmatosed
Future Releases 40124 Media on uploading only gives me edit options Media normal normal Future Release enhancement new 2017-03-12T12:32:20Z 2023-09-05T15:07:41Z "This shows on mobile but is also desktop issue.
[[Image(https://cldup.com/_ZB6QmO5gZ.PNG, 50%)]]
Says 'edit' but doesn't give me option to view or delete." karmatosed
Future Releases 43227 Media uploaded to post should remove underscores and hyphens from text inserted into title attribute Media normal normal Future Release enhancement new 2018-02-05T11:04:43Z 2023-02-02T16:29:19Z "When adding a new image into a post my file name will typically be called something like:
descriptive-name-of-image.jpg
Once this image is uploaded wp will automatically set the title and will default to the name of the image ""descriptive-name-of-image"" if no title meta data is available in the image.
I think a better default action would be to replace the hyphens/underscores with spaces and possibly capitalising the first letter making the title ""Descriptive name of image""." mrmadhat
Future Releases 40403 Media: Allow disabling of auto-save for attachment changes in Media Library Media normal normal Awaiting Review enhancement new 2017-04-10T18:57:38Z 2017-10-16T06:45:09Z "When in the select frame of the media library and the user has selected an attachment, the fields for that attachment including the title, caption, and description can all be modified. The user may very well be expecting that the changes they are making to be ''localized'' to the current context for which they are inserting the image. For example, a user may want to provide a unique caption for an image when selecting it into one post vs the caption for the image when it is inserted into another post. Nevertheless, when the user does make a change to the caption, it will get written into the underlying `attachment` post and will thus change the caption on the `attachment` single template and any galleries in which the image appears.
These are the fields in question:
[[Image(attachment-fields-in-media-library-select-frame.png, width=400px)]]
All of this to say that the behavior to auto-save back changes to an attachment as changes are made in the media library should be able to be disabled, or should perhaps be disabled by default if not in a management context on the Media admin screen. Also, when the media library is opened in the customizer, a user should expect all changes to be previewable without impacting the site before hitting Save & Publish. The customizer is supposed to guard against the “save and surprise” experience. In the case of the Media Library, it can be even worse because it is “auto-save and surprise” and the auto-save behavior isn't even stated. So if auto-save isn't disabled by default in the media library across WordPress in a non-management context, then at least it seems it should be disabled in the context of the customizer.
The conversation for this started in the context of the image widget, and unexpected behavior for when modifying fields in the select frame versus modifying fields in the edit frame (which, as in the edit post screen, do not auto-save but are local to the post being edited). See https://wordpress.slack.com/archives/C0381N237/p1491845195064777
See also #37887, which would still allow for changes to be made in the media library, but for the changes to defer to being published until the user hits Save & Publish in the Customizer.
" westonruter
Future Releases 41409 No point in storing empty EXIF/IPTC data on post meta table Media 4.9 normal normal Awaiting Review enhancement new 2017-07-22T15:37:02Z 2019-01-31T21:49:00Z "- Post meta tables are bloated with often not used EXIF/IPTC data for each image attachments.
- `wp_read_image_metadata()` generates `aperture`, `credit`, `camera`, `caption`, `created_timestamp`, `copyright`, `focal_length`, `iso`, `shutter_speed`, `title`, `orientation`, `keywords`. and the data often stored as empty key/value pairs on each attachment metadata.
- I see no problem on filling default/empty values upon retrieving the data.
- and mentioning the core currently has no way of using ''stored'' `image_meta`." geminorum
Future Releases 30876 Paste an image into the Media Library Media normal normal Future Release enhancement new 2015-01-01T00:12:16Z 2018-03-30T22:44:19Z Github has some nice UX where you can paste an image into a comment. It would be nice if the Media Library supported something similar. danielbachhuber
Future Releases 22938 Presentation of hierarchical taxonomy in Media modal should be checkboxes rather than comma-separated tag list wonderboymusic Media 3.5 normal normal Future Release enhancement assigned 2012-12-14T14:10:16Z 2018-09-24T08:07:27Z Since 3.5, using register_taxonomy_for_object_type on attachments, if the taxonomy used is hierarchical, whereas in the edit attachment UI you see the normal list of checkboxes, in the corresponding modal it is presented as a comma-separated list of slugs, as if it were a non-hierarchical taxonomy (tags rather than categories). I'm sure this is not a bug / mistake / oversight, but at best it's a little unintuitive (you need to have memorised the category slugs to add new ones) and worst a bit dangerous (risk of adding unwanted categories), and it would be great if in future it was presented here too as a list of checkboxes. yeswework
Future Releases 41462 Promote media details admin page to full post page Media 4.9 normal normal Future Release enhancement new 2017-07-27T17:43:26Z 2023-10-18T16:01:34Z "Currently when editing media metadata, you either get the modern library modal with the image on the left and various fields on the right. When you click ""Edit more details"" you get a blast from the past with an old-school version of WordPress admin where everything looks uninspired and, for new users, broken.
Based on user feedback it turns out some site owners use the Attachment Page feature to provide contextual info, commenting, etc for media items. One example was a teacher who uploaded student images to a gallery, then had each image link to the attachment page where further information and images were provided in the ""description"" field (so the post content) and parents could leave comments.
Since media items in reality are full fledged posts with their own post content, the media details admin view should be upgraded to a full post page with proper WYSIWYG editing for the Description field, custom fields, and ability to control things like commenting.
This would also be an ideal place to visualize in what posts a media item is in use across the site." mor10
Future Releases 35094 Replace static with Dynamic Image Sizes for inserted images Media normal normal Awaiting Review enhancement new 2015-12-15T02:27:38Z 2018-08-16T20:36:21Z "== Proposal ==
Change the behavior of the add image size selector from hard-coding `width` and `height` attributes to adding size-based classes to the ` ` element to allow theme authors to define what Thumbnail, Small, Medium, and Large means. This creates Dynamic Image Sizes that change and adapt when a site owner switches from one theme to the next.
=== Practical Implementation ===
- Create new theme feature for dynamic-images
- When an image size is selected (eg. ""medium""), the a class formatted as `size-[selected-size]`, (eg. `size-medium`) is added to the ` ` tag.
- Theme developers add CSS rules for `.size-thumbnail`, `.size-small`, `.size-medium`, and `.size-large`. These rules can define whatever parameters the theme developer desires, but must include either `width`, `max-width` or both. Theme developers are also free to use media queries to change this behavior depending on viewport width.
- '''Ideal, optional:''' Remove the `width` and `height` attributes from ` ` markup as they serve no practical purpose once RICG and class-based sizing is implemented.
== Rationale ==
With Responsive Images in core, the modality of the image size selector no longer makes sense. The image size selector hard-codes pixel sizes to images added in posts and pages based on the physical width and height of the image file, but with the new srcset + sizes markup, these image sizes no longer have a real world rationale as the browser selects the image source dynamically.
I propose a change in what happens when an image size (thumbnail, small, medium, large, original) is selected from a pre-defined pixel size to a dynamic size defined by the current active theme.
This would allow theme designers and developers to add image sizes as part of their art direction and design, and displayed image sizes would change depending on the current active theme without the site owner having to make changes to individual images to make them fit.
In simple terms, move from this:
[[Image(http://mor10.com/wp-content/uploads/2015/06/Slide1-700x394.png)]]
to this:
[[Image(http://mor10.com/wp-content/uploads/2015/06/Slide2-700x394.png)]]
== Backwards Compatibility ==
This has the potential of being a breaking change. The most obvious solution would be to make dynamic image sizes a `theme feature` along the lines of html5 comments and title-tag:
{{{ add_theme_support( 'dynamic-images' ); }}}
== Practical Application ==
This change would work within the existing framework of how WordPress adds images because the only practical change in the actual post/page is the addition of a new class in the ` ` tag.
To apply to existing posts and pages, the classes could be added by piggybacking off the dynamic rewriting of the ` ` element done by Responsive Images.
== Challenges ==
- Some authors physically resize images to fit a specific display. This in itself is a problem because it counteracts the responsive nature of the web, but it is a fact that must be considered. An implementation of Dynamic Image Sizes could cause some authors to be frustrated that their carefully sized images suddenly change display. This would likely only happen on old static-width sites as properly built themes with RWD would already override such forced sizing except for the full-width versions of images.
- Currently an author can use click-and-drag behaviors to resize an image in the editor. This would be hard to replicate using the proposed CSS model, but is not impossible: One solution could be generating inline CSS for custom image sizes, and possibly adding a .size-custom class to the ` ` tag. Another clearner option could be to remove the click-and-drag resizing option and instead provide percentage-based options. When discussing this it is important to note that such forced click-and-drag resizing goes against the natural behavior of images in a mobile-first RWD environments." mor10
Future Releases 40869 Replacing an image in content editor Media 4.7.5 normal normal Awaiting Review enhancement new 2017-05-26T10:42:10Z 2017-05-26T13:36:33Z "Hello,
I noticed a strange behaviour in WordPress User Experience while dealing with images.
Let's say for example you want to replace an existing image in the content editor while creating or editing a post/page. Right now this is only possible when this 'existing' image is part of your Media Library and probably has an attachment post_id.
What about people that have added images from external urls or maybe even placeholder images that have been adding to their content via custom TinyMCE buttons. When you press Edit on those images you can't easily replace them for an image inside your Media Library.
I think this is a little odd and we should be able to replace any image in our editor for one inside our library so I made this little change what will make the 'Replace' button always show up in the Image Details modal.
/wp-includes/media-template.php :line: 885
{{{
}}}
**Todo.
While adding a new image to the editor we get a small JavaScript error.
" MacPresss
Future Releases 22966 Show admin-cropped thumbnails instead of WordPress-cropped thumbnails Media normal normal Awaiting Review enhancement new 2012-12-16T22:22:59Z 2023-08-29T15:35:39Z "Used to be able to see which images have been cropped (and which ones haven't) in image search results. Now have to click 'edit image' and check the image individually.
It's valuable for the publisher to see what his/her readers will see on the front end of the site when the 'thumbnail' function is called (either publisher's hard-cropped image or full un-cropped image). Useful especially for publishers that are pulling images from a time before 'thumbnails' existed in WP.
Main reason this is an issue is that when an un-cropped thumbnail is selected as the featured image, it will be stretched/distorted to dimensions of thumbnail settings in function.php." beerpulse
Future Releases 49830 Store rotation data for uploaded videos Media normal normal Future Release enhancement new 2020-04-06T17:44:17Z 2022-03-10T15:57:25Z If the video format supports and the data is found in the exif data, store the rotation angle in video metadata. spacedmonkey
Future Releases 46554 Uploaded images goes to wrong folder/date structure antpb Media 5.1 normal normal 6.6 enhancement assigned 2019-03-18T11:24:37Z 2024-02-12T09:21:41Z "Hello Team
All test are from fresh install, default theme, no settings change, no plugin…
""Organize my uploads into month- and year-based folders” option checked.
Images upload date: 17/03/2019
Single “Test Page” published date: 27/11/2018
In WordPress 4.7 – 4.7.13 – 4.8 – 4.8.9:
images uploaded from Media Library goes to …/2019/03 folder… RIGHT
images uploaded from single “Test Page” goes to …/2018/11 folder… RIGHT
In WordPress 4.9 – 4.9.10 – 5.0.4 – 5.1.1:
images uploaded from Media Library goes to …/2019/03 folder… RIGHT
images uploaded from single “Test Page” goes to …/2019/03 folder… WRONG!!!
From 4.9 version has anything changed in the way WordPress handles image uploads?
If YES, how to go back to the old way (thus images uploaded from single “Test Page” goes to “published date” folder… and not to “upload date” folder)?
Thanks!" kartiks16
Future Releases 39330 WP_Image_Editor_Imagick: get pdf from url Media 4.8 normal normal Awaiting Review enhancement new 2016-12-19T13:59:58Z 2024-01-16T13:00:28Z It is not possible to use the class, if an url is passed as filepath. With this little patch it is possible (I know it's not perfect. Maybe someone can make it better) wordpressrene
Future Releases 59421 "loading=""lazy"" attribute is not applied at all" Media 6.3.1 normal minor Awaiting Review enhancement new 2023-09-21T06:54:52Z 2023-09-27T13:46:58Z "Steps to reproduce:
Start new WordPress 6.3.1 instance. Use default twenty-twenty-three theme. Create new post. Insert some images. None of the images (including below the fold ones) get loading attribute.
It is expected that below the fold images get loading=""lazy"" attribute." lovor
Future Releases 39791 sanitize_file_name() optimizations Media 4.8 normal normal Awaiting Review enhancement new 2017-02-05T23:24:33Z 2018-01-20T13:49:47Z "This changeset: [29290]
added this line:
{{{#!php
$filename = str_replace( array( '%20', '+' ), '-', $filename );
}}}
But because of this changeset it can be removed as those chars aren't present anymore: [35122]
'''Additional proposals'''
1.) After many years new special characters are added step-by-step to sanitize_file_name(). Now almost all characters of the reserved file system, reserved URI and unsafe URL characters lists are part of it, except of:
reserved file system chars (https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words)
{{{
chr(0), ..., chr(32)
}}}
the reserved URI char (https://tools.ietf.org/html/rfc3986#section-2.2):
{{{
@
}}}
the unsafe URL char (https://www.ietf.org/rfc/rfc1738.txt):
{{{
^
}}}
non-printing DEL:
{{{
chr(127)
}}}
Finally you should add all these chars to avoid future bug reports:
{{{#!php
$special_chars = array(
// file system reserved https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words
'<', '>', ':', '""', '/', '\\', '|', '?', '*',
// control characters http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx
// note: \t, \n and \r are chr(9), chr(10) and chr(13)
chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), chr(6), chr(7), chr(8), chr(9), chr(10),
chr(11), chr(12), chr(13), chr(14), chr(15), chr(16), chr(17), chr(18), chr(19), chr(20),
chr(21), chr(22), chr(23), chr(24), chr(25), chr(26), chr(27), chr(28), chr(29), chr(30),
chr(31),
// non-printing character
chr(127),
// non-breaking space
chr(160),
// URI reserved https://tools.ietf.org/html/rfc3986#section-2.2
'#', '[', ']', '@', '!', '$', '&', ""'"", '(', ')', '+', ',', ';', '=',
// URL unsafe characters https://www.ietf.org/rfc/rfc1738.txt
'{', '}', '^', '~', '`'
);
}}}
If you do that, do not forget to change this line:
{{{#!php
$filename = preg_replace( '/[\r\n\t -]+/', '-', $filename );
}}}
to that (because we replaced the other chars already):
{{{#!php
$filename = preg_replace( '/[ -]+/', '-', $filename );
}}}
and remove this line because we cover it already through chr(160):
{{{#!php
$filename = preg_replace( ""#\x{00a0}#siu"", ' ', $filename );
}}}
Source: https://en.wikipedia.org/wiki/Whitespace_character#Unicode
2.) mb_strtolower() could be used to raise windows/unix interoperability (when downloading ftp backups or moving the host) because of their different behaviour in case-sensitivity.
" mgutt
Future Releases 40915 wordpress should issue a warning if no graphic library is installed Media 4.7.5 normal normal Awaiting Review enhancement new 2017-06-03T14:58:23Z 2017-06-10T07:07:59Z "Hi people! I've installed wordpress on my site, and I had no library for image manipulation installed. Iin that case, I got no thumbnails.
Due to css of my site, I was not initially aware of my site, cause the layout was right.
So, I think that a warning on admin to the ones that don't have GD or imagick installed could be a good thing. I know that this is a strange corner case :)" waltercruz
Future Releases 43263 wp_audio_shortcode() preload default: should it be metadata or none? Media 3.6 normal normal Awaiting Review enhancement new 2018-02-08T19:17:59Z 2018-02-08T19:45:50Z "Using this ticket to open a discussion about the `audio` tag’s `preload` attribute defaulting to
`none` in `wp_audio_shortcode()`.
`none` won’t display the audio’s total time in the player (until the user hits play). So the effect of this default is millions of sites’ players display total times of “00:00”. (You can specify preload as a shortcode attr, but most sites don’t. )
Setting the `preload` attribute to `metadata` does extract and display total time upon page-load. Also `metadata` is both the `wp_video_shortcode()` default and the HTML-spec suggested default (to browser makers):
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio#attr-preload
Bandwidth might be the valid concern, tho, as some browsers preload an excessive amount of metadata (I'm looking at you, Chrome) . See results of tests by @blobfolio:
https://wordpress.slack.com/archives/C02SX62S6/p1518116191000138
FYI, the default `'preload' => 'none'` is here:
https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/media.php#L2223
FYI-2, you can change that with the `wp_audio_shortcode` filter (via regex on the HTML output):
https://gist.github.com/hearvox/098774e9887442d39ddc6e34bedb10b1" hearvox
Future Releases 41895 wp_calculate_image_srcset filter: Improve the documentation for, or rename, this filter so it's clear it should work on an array. Media 4.9 normal normal Awaiting Review enhancement new 2017-09-16T18:29:18Z 2017-09-16T20:25:06Z "= The Problem =
Despite having the same name as the `wp_calculate_image_srcset()` function and being inside of that function the `wp_calculate_image_srcset` filter, [https://core.trac.wordpress.org/browser/tags/4.8.1/src/wp-includes/media.php#L1203 here in the current release], does not directly modify the output of the function as convention would dictate. This leads to confusion, so theme and plugin developers do things that lead to bugs.
The `wp_calculate_image_srcset` filter filters the `$sources` variable, which is an array of arrays, each containing information about one of the image sources that WP has decided to add to the srcset. However the `wp_calculate_image_srcset()` ''function'' returns either a string HTML [https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img srcset attribute for use on an img tag] or false if there's only one source or some other failure.
Because the `wp_calculate_image_srcset()` ''function'' can return false, developers assume that `wp_calculate_image_srcset` filters can return false as well, thus converting the `$sources` array into a boolean `false`. This causes a problem when a second plugin or theme also tries to filter `wp_calculate_image_srcset` and tries to loop over the values in `$sources`, (`foreach( false)` causes a PHP warning).
= Real-World Examples=
This is happening in the real world: If you're hosted on WPEngine, and use Themeco's X or Pro theme, the PHP warning pops up in some of your pages, (especially in WPEngine's staging environment). This is because X and Pro use `wp_calculate_image_srcset` to change `$sources` to false, then WPEngine's Must-Use plugin tries to iterate over `$sources`.
When contacted about the problem, (with the suggestion they return an empty array), Themeco's response was ""In looking over WordPress' official documentation for that function/hook, I believe that boolean false should be the correct value to return"" with a link to the documentation for the ''function''.
When the issue was raised in the the [https://www.facebook.com/groups/advancedwp/ Advanced WP Facebook Group] a prominent member of the WP community [https://www.facebook.com/groups/advancedwp/permalink/1624922314236643/?comment_id=1625126477549560&reply_comment_id=1625763707485837¬if_t=group_comment_reply¬if_id=1505579798429304 appears to have made the same logical jump], that the filter filters the output of the function, and wouldn't listen to any further discussion.
= Possible suggestions to improve the situation =
1. If we're ok with setting `$sources` to false, the docblock for the `wp_calculate_image_srcset` filter should be changed to indicate that the `$sources` variable being passed to a filter may not be a variable.
2. If we're not ok with setting `$sources` to false, maybe we should add a `_doing_it_wrong()` if `$sources` type is changed from an array.
3. Whatever we do, we should document an expected return type in the docblock for the filter.
3. Since the filter doesn't actually filter the output of the function, the filter name could be changed to something like `wp_calculate_image_srcset_sources`. I know this is a breaking change, which may never happen because it's a breaking change, but it would be the best fix, if breaking changes can be dealt with." johnnyb
Future Releases 30377 wp_check_filetype is broken when checking urls with parameters audrasjb Media 4.0 normal normal Future Release enhancement reopened 2014-11-18T05:05:03Z 2022-04-08T04:24:45Z "The function in ./wp-includes/media.php named wp_check_filetype has a bug.
It works properly when checking a url such as http://example.org/coolfile.mp4 but as soon as you add parameters to it (a common practice when attempting to embed un-cached or amazon pre-signed urls) like so: http://example.org/coolfile.mp4?extra=true¶ms=true ... it fails to return the extension / content type.
The fix for this should be *very* easy. The preg_match in this function that looks like this currently:
{{{
$ext_preg = '!\.(' . $ext_preg . ')$!i';
}}}
could be adjusted to ignore the query string (if there is one) and just return the true extension like so:
{{{
$ext_preg = '!\.(' . $ext_preg . ')(\?.*)?$!i';
}}}
I've tested this change in my local environment and it works great.
" supercleanse
Future Releases 30180 wp_get_attachment_image_src does not return alt or meta antpb Media normal normal Future Release enhancement assigned 2014-10-29T18:42:55Z 2023-07-21T15:37:32Z "In practical use,wp_get_attachment_image_src is very useful for displaying an attached image - but requires a separate call to get any other image meta or the alt attribute.
In addition to making any application that needs alt attr or meta data for display simpler, having the alt attribute present in this function increases the likelihood that developers will use the alt attribute in their ultimate output.
" joedolson
Future Releases 41279 Make PDF Thumbnail (WP 4.7 feature) accessible via the Media Manager Media normal normal Awaiting Review feature request new 2017-07-09T19:24:26Z 2020-10-21T12:55:14Z "When you upload a PDF file WordPress creates a ""preview image"" - This was added as of WP 4.7
This feature request to have that image also added into the database so that it is accessible via the Media Manager.
The use case for this feature is that I have a Monthly Newsletter and want to use the preview image (page 1 of the PDF) as the featured image for the post where I am putting the link to the PDF
Additionally some plugins (like visual composer) allow you to insert single images, however, you need to be able to select it from the media manager, not just put in a URL" sflwa
Future Releases 19834 More Robust Capabilities for Attachments Media normal normal Awaiting Review feature request new 2012-01-15T00:43:40Z 2020-09-10T14:05:33Z "Attachments/files should have their own set of capabilities mirroring those of posts, in addition to upload_files. Specifically:
- read_attachments
- edit_attachments
- edit_others_attachments
- delete_attachments
- delete_others_attachments
Currently, attachments rely on the edit_posts capability, which can create complications if you don't want your users to see the ""Posts"" sidebar item, or don't want them to be able to delete the attachments they upload. " walkinonwat3r
Future Releases 42633 Suggestion to provide Better Page and Image Management Media 4.9 normal normal Awaiting Review feature request new 2017-11-20T03:41:59Z 2017-11-20T05:24:14Z "**** This is not bug report but a suggestion ****
Not at all sure if this is the right place for this however, I've been using wordpress for about 12 months now and believe it lacks somewhat in the management of pages and media. I believe that it would help tremendously helpful if we could:
(1) organize pages into groups or folders as it can be overwhelming with the current long list of pages when we are working on large sites with a lot of pages, and
(2) similarly, organize media into folders so for example, we could keep site media separate from post media.
Thanks for listening" sixlinksrule
Future Releases 40140 upload_url_path doesn't seem to make any effect Media 4.7.3 normal normal Awaiting Review feature request new 2017-03-13T06:53:00Z 2018-12-27T21:15:21Z "An site of mine had '''http://site.com/articlefiles/''' as the place to receive uploads, equally it was '''/site/root/articlefiles''' on the filesystem, instead of '''/site/root/wp-content/uploads'''.
Now I migrated the site into a multisite installation as site 2 and uploads are going into /site/root/articlefiles/site/2/ and all previous uploads in old posts are linked as '''http://site.com/articlefiles/site/2/something.jpg''', causing broken images and links cause they originally don't have the ""site/2"" part. Editing the post, these links and images do not have the ""site/2"" part either. WordPress is rewriting the URL dynamically when reading the posts.
I want to keep compatibility with '''http://site.com/articlefiles/''' and '''/site/root/articlefiles''' without the ""site/2"" part. I was expecting '''upload_url_path''' on options table to be the solution but it doesn't work. I put there '''http://site.com/articlefiles/'''.
How can I keep URL and path compatibility when migrating a single site to a non-primary site of multi site installation ?
Thank you in advance" avibrazil
Future Releases 43494 Can't change/delete menu items in Customizer on mobile audrasjb* Menus normal normal Future Release defect (bug) accepted 2018-03-07T23:30:18Z 2023-01-06T12:25:28Z "On mobile/tablet browser (only Android, Chrome browser tested), menu items can be added and reorganized, but the drop-down toggle for further options doesn't work. As a result menu items cannot be removed.
To reproduce:
1. Log in to admin in mobile / tablet browser
2. Go to Customizer -> Menus
3. Add menu item to a menu
4. Attempt to edit / delete menu item
Originally reported by community user Sue Jenkins on Twitter: https://twitter.com/LuckychairNews/status/969682449176211456" mor10
Future Releases 53449 Child Walker classes change the $args parameter data type and default value signatures for start_el and end_el Menus normal normal Awaiting Review defect (bug) new 2021-06-18T15:54:35Z 2023-08-03T21:38:00Z "The following Walker classes have code smells for changing the data type of the `$args` parameter when extending from the `Walker::start_el` and `end_el`:
- `Walker_Nav_Menu`
- `Walker_Nav_Menu_Checklist`
- `Walker_Nav_Menu_Edit`
What is the code smell? The parent defines the `$args` parameter as an `array` data type with a default value of an empty array. The child classes change the parameter's data type to `stdClass` with a default value of `null`.
These changes need investigation to determine if these changes are needed and why." hellofromTonya
Future Releases 14142 Custom Walker class for navigation menus Menus 3.0 normal normal Future Release defect (bug) reopened 2010-06-29T14:16:18Z 2019-04-19T18:31:41Z "I have tried to extend the Walker_Nav_Menu class, I just needed to overwrite the start_el method. So i added ""walker""=>""My_Walker"" to wp_nav_menu, I've got an error message, that the method ""walk"" could not be accessed statically. After a short look at the code in ""nav-menu-template"", I realized that in the method ""walk_nav_menu_tree"" the object initializer ""new"" is missing.
My solution can be found in the attached file.
As you can see, I've just added a ""new"" in front of $r->walker
And it works" dennis.winter
Future Releases 58044 Issue with wp_setup_nav_menu_item Menus 6.2 normal normal Awaiting Review defect (bug) new 2023-04-01T16:20:53Z 2023-04-08T14:55:59Z "`/wp-includes/nav-menu.php` has an issue handling bad `$menu_item`.
The problem is with trying to call `get_post_status()`. If a post with type `nav_menu_item` has a problem (I think not having a correct parent or something), the call to `get_post($menu_item->object_id)` returns NULL which then causes an error message from `get_post_states()`.
I had to search the site database to find the offending menu item on my theme development site and deleted the bad menu. I think I likely deleted a page or post that had been include in a menu definition, or perhaps it was because I typically use the Parent Page to define the default menu, which is still supported but seldom used.
This error only seems to appear when using the Customizer, I'm guessing while it is generating the ''Menus'' option. Didn't get error from Dashboard Menu, nor have I tried this on a block theme.
The problem is found around line 833 in `nav-menu.php`.
Here's a possible fix which worked with my bad menu definition, but the problem might be deeper.
{{{#!php
type_label = $object->labels->singular_name;
// Denote post states for special pages (only in the admin).
if ( function_exists( 'get_post_states' ) ) {
$menu_post = get_post( $menu_item->object_id );
/*
* Suggested fix for bad nav_menu_item post - likely caused by now missing parent
* which can result in $menu_post being NULL at this point
*
*/
if ($menu_post != NULL) { //*** add a NULL check
$post_states = get_post_states($menu_post);
if ($post_states) {
$menu_item->type_label = wp_strip_all_tags(implode(', ', $post_states));
}
} // end of added NULL check
}
} else {
$menu_item->type_label = $menu_item->object;
$menu_item->_invalid = true;
}
}}}
" wpweaver
Future Releases 18271 Item hierarchy should be maintained when adding to menu Menus 3.2.1 normal minor Future Release defect (bug) new 2011-07-27T20:13:35Z 2023-11-17T10:54:16Z "Situation:
Create a hierarchy of categories or pages and go to create a custom menu. In the meta boxes on the left hand side, the categories and pages are shown in hierarchical arrangement. Select all categories (for example) and add to menu.
Expected behaviour:
All links are added to custom menu and the hierarchy is maintained appropriately
Actual behaviour:
Hierarchy is lost and all menu items are top-level
This was originally raised by Jane in #17029 however the changeset in the ticket only applies to showing hierarchy in the meta boxes and doesn't cover maintaining hierarchy when adding to menu." JohnONolan
Future Releases 47436 Menu depth doesn't affect menu-item-has-children Menus 5.2.1 normal trivial Awaiting Review defect (bug) new 2019-05-30T17:19:32Z 2021-08-21T22:47:18Z "Hi,
When you add a depth of 1 to wp_nav_menu it removes all the sub menus, but it leaves menu-item-has-children class on the original menu li tags, which means it is styled like it has a dropdown." mikeybinns
Future Releases 37971 Menus screen: improve the responsive view Menus normal normal Awaiting Review defect (bug) new 2016-09-07T17:30:27Z 2019-04-05T19:01:01Z "Noticed while working on #37969, the responsive view of the Menus screen needs some improvements. Not sure if there's already a specific ticket (haven't found one).
Some CSS rules used in this screen work just in the ""Desktop"" view: 100% widths+margins, some floats, the `13em` spacing between menu item titles and controls and probably more stuff need to be reset/adjusted.
Not sure it nesting the menu items can work on very small displays, probably needs a different approach. Any thoughts welcome!
[[Image(https://cldup.com/qvBPJULT7f.png)]]" afercia
Future Releases 41351 Searching for a category returns nothing if category is empty Menus normal normal Awaiting Review defect (bug) new 2017-07-17T21:53:56Z 2019-11-22T21:53:08Z "Hi,
In the navigation menu creation page, when you are trying to add a category to the menu, if the category is empty, it won't show up in the search results. However, if the category itself is empty but has a child that is not empty, it will still be shown.
I have a blog with over 500 categories, and I'm trying to add some of them to the menu but they have no posts yet. Navigating through category list is going to take time, and is also frustrating.
Now I've tracked down the issue to `/wp-admin/includes/nav-menu.php`, ( starting at line 588 ) but can't find a filter or hook to do so.
This line (109) seems to be responsible for doing the search:
{{{
$terms = get_terms( $matches[2], array(
'name__like' => $query,
'number' => 10,
));
}}}
According to the documentations, this function accepts an argument for showing empty terms 'hide_empty' => false, but I can't see such option in this part of core's code. I've added this option to the core (temporarily) to see if it solves the issue, and it does.
The other `get_term()` functions withing this template file mostly use `'hide_empty' => false` so I'm not sure either this one was overlooked or not, I tagged this as a bug though." jackjohansson
Future Releases 38801 Terms with the same name indistinguishable in Menu section Menus normal normal Future Release defect (bug) new 2016-11-15T19:10:08Z 2017-08-18T12:52:07Z "== Problem ==
Let's say we have a WooCommerce site (although likely all taxonomies/terms are liable to this problem) with the following categories: Men, Women. Each of the categories has a subcategory called Shoes.
When in Appearance -> Menu and trying to add a link to Shoes (whichever), there's no way to distinguish the 2 Shoes categories, as the parents are not displayed and no indenting is applied. No matter if we use the Latest, All or Search filter.
== Solution ==
Keep in mind that ""All"" uses pagination, so indenting might not be the best solution. An idea is a hover with the parents listed, but this would be tricky on mobile. Maybe just make a ""Show parents"" switch above the field (or in the Screen Options) and if it's checked, show the parents after the taxonomy/term's name? Like: Shoes (Women -> Shoes).
Just getting rid of pagination in the ""All"" view could cause problems with a lot of values and would not help the Search function within the menu creator." eclare
Future Releases 39056 Twenty Seventeen: No Default Menu option creates extra work Menus 4.7 normal normal Awaiting Review defect (bug) reopened 2016-12-04T17:28:41Z 2018-03-05T13:42:50Z "A new WordPress site is created with a sample post, and sample page. In previous themes, there was a menu with Home and Sample Page listed, which was nice to see where the menu lives, and preview what a page looks like.
On Twenty Seventeen there is no default menu. This prevents me from both identifying where those links would be, as well as not allowing me to view the Sample Page." ElfIRL
Future Releases 43033 User can not see updated Icon in editing Menu with live preview Menus 4.9.1 normal normal Awaiting Review defect (bug) new 2018-01-06T06:48:54Z 2018-02-05T14:06:38Z "Bug: User can not see updated Icon in editing Menu with live preview
Attachment for steps: https://www.screencast.com/t/jOBHlmVeUTdO
Steps:
1. Navigate to Appearance->Menus from left rail
2. Select ""Menu with Live preview""
3. Select Menu and click on 'Add Items""
4. Sect ""Pages"" and add some page, User can see that ""+"" icon is changed to Tickmark sign
5. User will remove it from menu,Now User can not see previous symbol again to add
Thanks" nilamacharya
Future Releases 42288 Validation of custom menu link Menus 4.8.2 normal normal Awaiting Review defect (bug) new 2017-10-20T05:38:04Z 2018-06-14T13:40:20Z "1. go to menus page
2. try to add custom menu link with label only. without a URL.
expected and actual result: validation failed and link cannot be added.
1. go to menus page
2. add custom menu link with label and URL: '#'
3. save menu
4. edit the custom link from the menu and remove the URL.
5. click save
expected result: validation failed and menu won't be saved.
actual result: menu saved. no validation." dvirhazout
Future Releases 40090 Walker::display_element does not populate $args[0]->has_children when it is cast as an Object Menus 4.7.3 normal normal Awaiting Review defect (bug) new 2017-03-09T23:39:09Z 2017-03-10T00:38:08Z "When using the various hooks in {{{Walker_Nav_Menu}}}, the {{{$args}}} argument is expected to have a {{{has_children}}} object property.
Walker::display_element only creates and populates this property if {{{$args[0]}}} exists and is an array.
{{{#!php
has_children = ! empty( $children_elements[ $id ] );
if ( isset( $args[0] ) && is_array( $args[0] ) ) {
$args[0]['has_children'] = $this->has_children; // Back-compat.
}
}}}
But {{{wp_nav_menu()}}} casts $args as an object ensuring that this assignment will always fail.
= Suggested Fix =
Add an additional check for object type and assign appropriately.
{{{#!php
has_children = ! empty( $children_elements[ $id ] );
if ( isset( $args[0] ) && is_array( $args[0] ) ) {
$args[0]['has_children'] = $this->has_children; // Back-compat.
} else if ( isset( $args[0] ) && is_object( $args[0] ) ) {
$args[0]->has_children = $this->has_children;
}
}}}
" JoelStransky
Future Releases 42566 When I use wp_nav_menu I get a huge update_meta_cache query regardless of theme Menus 4.8.3 normal normal Awaiting Review defect (bug) reopened 2017-11-15T23:53:36Z 2021-01-26T02:32:23Z "Hi there,
I've got a wordpress site that's been up and running for a couple of years now. I always keep core+plugins up to date, and although I use a custom theme, I'm pretty happy with how it's working.
Recently however it started to crash regularly - and the server guys notified me that it was mysql that was causing it. So I installed Query Monitor and took a look - there was a massive query which looked like this:
{{{
SELECT post_id, meta_key, meta_value
FROM ajs_postmeta
WHERE post_id IN (11178,9677,9060,7417,7354, )
ORDER BY meta_id ASC
}}}
This was returning 20,000 rows each time the page was loading. This obviously overloaded the server during peak times and it needed rebooting.
This is the code that was causing the problem (I know this because I replaced it and the offending query disappeared)
{{{#!php
'header-menu',
'container' => 'nav',
'container_class' => 'nav-menu-holder nav-menu-landing nav-new',
'menu_class' => 'nav-menu',
'walker' => new themeslug_walker_nav_menu));
}}}
So I replaced wp_nav_menu with static HTML and the query size reduced as it was no longer calling wp_nav_menu. I thought it might have been something I'd done in my theme - so I removed the custom walker, which didn't have any effect, and played about with some settings. I tried using the recommendation here: [https://hitchhackerguide.com/2011/11/01/reducing-postmeta-queries-with-update_meta_cache]/ but that had no effect.
So the next step was to try a different menu. So I deleted my menu (which had 70/80 items in it) and added 5 new items to a new menu. That then gave the following query:
{{{
SELECT post_id, meta_key, meta_value
FROM ajs_postmeta
WHERE post_id IN (11178,9677,9060,7417,7354)
ORDER BY meta_id ASC
}}}
which is the same query as above but without the lots of additional ids - as this menu only had 5 items. This returned around 450 rows - so it's not hard to see that a menu with 70/80 items would get up to 20,000.
The last thing I tried was to change to the default theme and disable all plugins (bar Query Monitor) and tried again. I associated my test menu (with the 5 items) with the 2017 theme top menu and checked query monitor - it still showed this query:
{{{
SELECT post_id, meta_key, meta_value
FROM ajs_postmeta
WHERE post_id IN (11178,9677,9060,7417,7354)
ORDER BY meta_id ASC
}}}
with the same number of rows.
So my question is this - is this something that is a problem in core wordpress, seeing as this update_meta_cache() method seems to be creating massive queries if you have a larger than average menu - even 15/20 items would create a fairly large result set each time.
I've been googling like crazy as I really want to get this sorted - but I can't seem to find a solution, and I'm wondering if it's something in the latest release. There's no difference between browser or OS that I can see - its just something wrong (I think) with the update_meta_cache method as it relates to the wp_nav_menu function.
Anyway, happy for you to take a look at my config etc - let me know what you need. Best email to get me on is andy@weboptimize.co.uk or you can call my UK mobile on 07791-107755
Thanks
Andy" andyseaton83
Future Releases 44329 current-menu-item class not applied to home link with starter content audrasjb Menus low normal Future Release defect (bug) reviewing 2018-06-08T03:12:20Z 2019-07-09T05:43:31Z "When viewing starter content in the customizer the home link does not get the current-menu-item class applied when you view the home page. The menu-item-object-{$type} class is also missing $type, so it just has the class menu-item-object- applied.
When viewing a customizer changeset of the starter content before actually publishing - the home link is not given the current-menu-item class as well. The menu-item-object-{$type} class is still missing $type in this class too.
After publishing the starter content the front end appears to have .current-menu-item correctly applied to the menu when navigating. However, when viewing the site in the customizer - the home link now always has the current-menu-item class applied regardless of which page you visit. This results in two links having current-menu-item applied ( the home link and the currently viewed link ). At this point the menu-item-object-{$type} class now has $type === 'custom', so the class menu-item-object-custom is properly applied.
Additional notes:
- I was only testing with fresh wp installs.
- I was using default permalink structure.
- I noticed this issue with other themes that provide starter content, but it also happens with twentyseventeen
- #43401 does not seem to fix the issues outlined in the steps below.
Expected results:
I expected for menu items to have the current-menu-item classes properly applied when viewing changesets, the customizer preview would accurately reflect the frontend display, and that current-menu-item would not be applied to two different links when previewing pages in the customizer.
Steps to replicate:
1. Use latest trunk (this does also occur on 4.9.6).
2. Have fresh_site option set to 1 to get starter_content.
3. Activate twentyseventeen theme.
4. Go to customizer.
5. Starter content should be populated - inspect the ""Home"" link which doesn't appear to have current-menu-item added, and has the incomplete class menu-item-object- as well.
6. Click on one of the other pages - the link properly reflects the current-menu-item class.
7. Save draft and open the changeset url provided.
8. Click on one of the other pages other than home, and the same issue occurs.
9. Go back into customizer, publish the changeset, and view the site now on the frontend. The home page link is now properly given current-menu-item, and menu-item-object-custom is correct.
10. Click on one of the other links, and the home link no longer has current-menu-item applied, and is applied correctly to the new page you're on.
11. Click on customize - once the customizer loads, the home link AND the link your were looking at both have current-menu-item applied, only the previewed page should have this class." timph
Future Releases 40649 parent_file filter seems to be overwritten by get_admin_page_parent call Menus 4.7.4 normal normal Awaiting Review defect (bug) new 2017-05-03T13:37:51Z 2019-06-10T22:21:53Z "In wp-admin/menu-header.php the filter `parent_file` seems to have little to no impact most of the time.
This is because the global `$parent_file` variable often gets immediately overwritten by the `get_admin_page_parent` function call.
{{{#!php
}}}
'''Menu with a location'''
{{{
}}}" benoitchantre
Future Releases 41800 Ability to collapse multi-level menus in the Menu editor Menus 4.9 normal normal Awaiting Review enhancement new 2017-09-05T14:04:37Z 2017-09-07T15:59:19Z "When creating large menu structures in the Appearance > Menu editor, it can be very overwhelming when there's a number of top-level items with child items... almost becoming an eyesore and confusingly difficult to navigate.
Could we work to make any menu item within the editor have the ability to be collapsed? Along with the default state upon loading the editor to have them collapsed, with an icon to expand it." atomicjack
Future Releases 13273 "Allow ""'non-clickable"" menu items" Menus 3.0 normal normal Future Release enhancement new 2010-05-06T10:58:50Z 2023-11-10T16:19:53Z "In the new menu generator I'm missing the option to create ""non-clickable"" menu items.
What I'm after is that I want to create for example a main menu item with the title ""Links"" which is non-clickable (no url attached to it) and basically only acts as an umbrella item for the actual links I want to locate as subitems of the item ""Links"".
- Home
- Something else
- Links (this one should be non-clickable)
- external link 1
- external link 2
- etc
I think that an optional tickbox in the add link section will do the trick. Basically, all it has to do is to ""disable"" the check whether or not a valid URL format has been submitted and, of course, it has to trigger some modified html output.
Hope you guys can add this in the 3.0 release because this would basically complete the menu generator :)
Keep up the good work and I'm really looking forward to the 3.0 release!" stgoos
Future Releases 35127 Allow wp_nav_menu() function to add container attributes, including Schema.org structured data Menus 4.4 normal normal Awaiting Review enhancement new 2015-12-17T00:06:34Z 2017-03-07T15:29:38Z "I'd like to propose an enhancement that would improve the flexibility of the `wp_nav_menu()` function to allow additional attributes to be added to the `` container of menus. The main purpose of this proposal is to enable the ability to add schema.org structured data attributes to the menu, but this could be extended to other purposes as well given its flexibility.
Currently, `wp_nav_menu()` offers 3 container-related arguments: `$container`, `$container_id`, and `$container_class`. Using these arguments, we can create container elements such as
{{{
}}}
However, it is not possible to create elements with Structured Data such as the [https://schema.org/SiteNavigationElement SiteNavigationElement] as [https://developers.google.com/structured-data/schema-org recommended by Google], which would look like this
{{{
}}}
Adding the `role`, `itemscope`, and `itemtype` attributes is currently impossible with `wp_nav_menu()` (without resorting to error-prone string replacement), so theme authors and end users need to resort to hard-coding the menu wrapper in order to add such attributes.
My proposal is to add a new `container_atts` argument to `wp_nav_menu()`, which will allow arbitrary attributes to be added to the container when the `$container` argument is defined.
The changes required are very minimal and only apply to the `wp_nav_menu()` function in `wp-includes/nav-menu-template.php`
1. First, we just need to register `container_atts` as a valid argument in line 257 by adding it to the `$defaults` array
{{{
$defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '',
'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '',
'depth' => 0, 'walker' => '', 'theme_location' => '' , 'container_atts' => array() );
}}}
2. Next, we process and concatenate the attributes and add them to the container via the `$nav_menu` string on line 355
{{{
$atts = ''; //initialize string to concatenate attributes
foreach( $args->container_atts as $att => $att_val ){ //iterate over each attribute
$atts.= ' '.$att; //add attribute name, spaced out
//Add attribute value, if it exists. This logic allows for attributes without values
if( ! empty( $att_val ) ) $atts.= '=""'.esc_attr( $att_val ).'""';
}
$nav_menu .= '<'. $args->container . $id . $class . $atts . '>'; //add the string of attributes to the nav/div container
}}}
That's all the code that would be required to enable this capability. This then allows for function calls such as this:
{{{#!php
'primary',
'container' => 'nav',
'container_class' => 'my-menu',
'container_atts' => array(
'role' => 'navigation',
'itemscope' => 'itemscope',
'itemtype' => 'http://schema.org/SiteNavigationElement',
)
));
}}}
Which would produce this output for the container element:
{{{
}}}
(The other thing I might consider is calling `unset()` on the `id` and `class` keys in the `$container_atts` array, to prevent users from adding those attributes, since there are already dedicated arguments for them. But that is likely adding more restriction than necessary.)
I think this would be a really simple change, and add a lot of flexibility to the `wp_nav_menu()` function. Beyond just adding valuable attributes like structured data, adding data-attributes could be useful for javascript-driven applications, and I'm sure there are plenty of other possibilities I haven't thought of.
Thanks for your consideration!" sevenspark
Future Releases 46208 Improve Menu experience by making it easier to delete multiple menus at once audrasjb Menus 5.0.3 normal normal Future Release enhancement reviewing 2019-02-07T21:35:19Z 2019-05-03T22:03:30Z "If possible, please make it easier to delete multiple menus with a one click button (same as the plugin interface).
For example add an extra tab next to ""Manage Locations"".
- Right now, we've to select a menu (to edit) then remove it. If you have like 10 menus... then this task simply takes too much time.
The menus are saved all over different tables wp_terms, wp_posts, etc. inside the database. Wouldn't it be better to simple create a seperate db table for menus instead and have all data placed in there (with object cache)?
Mireille" mireillesan
Future Releases 48655 "Improve the ""Add-item"" function in menus (esp. for pages)" audrasjb Menus normal major Future Release enhancement assigned 2019-11-15T15:30:28Z 2020-12-16T23:58:43Z "When the number of pages is getting higher and higher (~30+) it is really hard to find pages when adding them to a menu.
Suggestion:
- Make the #pagechecklist bigger (or adjustable) for more overview
I have to say, that sometimes i don't get the search.
2. suggestion:
- limit the search to the title
Thank you so much!
" diebombe
Future Releases 40024 Include CPT archives in the menu cutomizer Menus normal normal Future Release enhancement new 2017-03-03T15:35:25Z 2019-11-07T16:57:39Z "If we create a new Custom Post Type and go to the menu customizer, we can insert links to particular posts of that type.
What we can't easily do is insert a link to the Custom Post Type archive page.
Example: we create a Movies CPT. We want to add a link to the list (archive) of all Movies to the menu. We can't do that unless we use the custom URL field (and the URL is not provided anywhere in the admin panel, only in the CPT registering code itself).
Enhancement needed: add a section which lets you link to archive pages for CPTs.
Suggested name for the box: ""Content archives"" or ""Custom content archives""." eclare
Future Releases 60673 Indicate submenu item level in admin nav menu editor and customizer nav menu editor rcreators Menus normal normal 6.6 enhancement assigned 2024-03-02T03:31:57Z 2024-03-05T15:23:23Z "Follow up to #32728
Following the closure of #32728, both navigation menu interfaces indicate whether an item is in a submenu. It would improve the experience for screen reader users to indicate what level an item is at." joedolson
Future Releases 43176 Nav Menu Search - add filters for query args Menus normal normal Awaiting Review enhancement new 2018-01-29T16:01:00Z 2019-01-16T06:50:09Z "On sites that have lots of content with similar names, it can be almost impossible to find the correct page using the search tab. One way to fix this is described in #38224 (changing the number of posts returned, or providing a filter so developers can change it).
Another option would be to check if the search query is_numeric(), and if so, search for a page with that ID. This could either be implemented in core directly, or appropriate filters could be provided so a plugin could implement this functionality." billerickson
Future Releases 58473 The menu messages rework Menus normal minor Awaiting Review enhancement new 2023-06-07T06:49:51Z 2023-06-27T11:41:41Z "Compared to the page message after a page has been created or updated, the menu messages can be reworked
1. When a menu has been created, there is no message shown.[https://imgur.com/iBoAUDB]
2. When the menu has been saved, the message can be reworked. [https://imgur.com/4Dz1oDE]
This can be similar to the Pages created, updated message" 254volkan
Future Releases 14331 Tweaks to menu setup page Menus 3.0 normal normal Future Release enhancement new 2010-07-16T21:30:45Z 2020-05-29T19:39:57Z "It would be great if you could select a parent Page and ""Automatically add children"" to the menu.
In a similar fashion, it would be great if the Menu could then automatically add any new children Pages created under that Parent." mrmist
Future Releases 44803 Add a page to a menu by its ID or slug Menus 4.9.8 normal normal Awaiting Review feature request new 2018-08-15T15:07:48Z 2019-01-30T05:38:39Z "I'm ""porting"" a college's website from Joomla to WordPress.
Said website has +2000 pages, which span from ~2013 onwards. It's the biggest mess you can imagine. There are many repeated pages, repeated categories, empty categories and so on.
Building the main menu for this website has been a pain in the ass, too, because the ""adding pages to a menu"" in WordPress is meant for small websites:
For example, I was trying to add a page named ""Evaluación docente"". There are several pages called exactly the same, but typing ""Evaluación docente"", or ""Evaluacion docente"" (without accents), ""evaluacion docente"" or even """"Evaluación docente"""" (with the quotes, hoping them would help to do a exact match search) returned other pages that weren't the one I was looking for - nor even the other ""Evaluación docente"" pages! Seems like a very fuzzy search. Sometimes you're lucky and you get the page you're looking for, but sometimes you don't.
So I think it would be wonderful if there were some sort of way to add a page to a menu by typing its id or its slug." milerm
Future Releases 51964 Add bulk moving to items in the menu screen azhiyadev Menus normal normal Future Release feature request assigned 2020-12-08T07:02:07Z 2021-01-24T09:43:14Z "Hello
I am blind and I use WordPress with screen reader software (JAWS and NVDA).
Using WordPress menu editor is too tedious and time-consuming for a blind user, although other features are quite accessible.
When I go to Appearance > Menus and I add many items to the menu, I cannot rearrange the menu items by drag&drop. I can use Move up / Move down / Move under options for moving the menu items, but this is too time-consuming. I need to press Move Up button 20 times if I want to move an item up to 20 steps higher. If I want to move 5 items up by 20 steps, I need to press ""Move up"" 100 times, over and over. If I want to create a hierarchical menu with an average of 30 menu items, I need to take about 3 hours on rearranging the items.
Bulk Action Feature Request:
I want to have checkboxes beside menu items, so I can select several menu items simultaneously and apply a bulk move / reposition action on all of them simultaneously. For example, I select 6 menu items at a time and I have two comboboxes: parent item, position. I select ""About Us"" as the parent item, and ""3"" as their position. This way, all 6 items go to position 3 under ""About Us"". This is much faster than pressing ""Move Up"" 120 times for reordering those 6 items.
Bulk actions are available in all WordPress taxonomies (Pages, posts, plugins, themes, etc.). I wonder why bulk actions are not available for menu items.
Thank you
" javad2000
Future Releases 43383 Allow menu items to be inserted in place Menus 4.9.4 normal normal Awaiting Review feature request new 2018-02-21T23:47:20Z 2019-02-11T22:01:04Z "When adding menu items to a menu, they default to the bottom of the menu and then need to be dragged into the desired position. This can be time consuming when adding a lot of menu items and can also result in inadvertent changes to the position of existing menu items.
My proposal is that you can select a menu item or sub-item already in the menu before adding new items to the menu and when you add the new item, it inserts itself directly under the selected item." aaronpwd
Future Releases 27832 All sites automatically marked as archived after upgrade Networks and Sites 3.7 normal normal Awaiting Review defect (bug) new 2014-04-16T10:47:37Z 2018-12-08T15:08:06Z "Strange thing, all sites were automatically marked as archived after automatic upgrade to 3.8.3. Maybe it is not related, but it was the last thing which is time-related to this problem.
I checked database tables and all sites had archived = 1 in wp_blogs, but last_update column was not changed. So, it suggests, that it was not done by administrator. Administrator can archive primary site? Then it is not possible to access administration...
I repaired it by setting 0 for all sites, but I am not sure, how could it happen? Do you have any ideas? There are no plugins which could cause it. I searched code and did not find any clue. Also hosting company is used for many other Multisite installations without problems.
There are also some posts from different forums (usually somehow related to WordPress upgrade), but they are only talking about fixing problem and not about finding why...
http://wordpress.org/support/topic/site-automagically-archived-or-suspended-on-multisite
http://wordpress.org/support/topic/after-install-site-has-been-suspended-or-archived
http://wpgarage.com/tips/unarchive-archived-suspended-site-wordpress-multisite/
Not sure, if it is some kind of bug, incompatibility or security hole..." pavelevap
Future Releases 43653 Allow to filter the final message of signup user notification email Networks and Sites 4.9.5 normal normal Awaiting Review defect (bug) new 2018-03-28T14:18:11Z 2023-06-08T08:56:08Z "When a signup user notification is sent, we cannot filter the final message contained in $message.
We can only filter one part of the message.
This prevent us to send nice formatted emails using HTML (to send a formatted email, we need add include the message inside an HTML template)." benoitchantre
Future Releases 39495 Can't navigate to subsite without logging in again. Networks and Sites 4.7 normal normal Awaiting Review defect (bug) new 2017-01-05T23:50:39Z 2017-05-02T04:05:13Z "In a multi-site configuration, as a Super Admin user, log in to the root site. Then navigate to the dashboard of a subsite.
Expected result: navigate to the subsite unhindered.
Actual result: prompted to log in before navigating to the subsite.
Problem occurs when we use WP Core 4.7. Problem does not occur on WP Core 4.6.
Problem occurs when all plugins are deactivated and uninstalled.
Problem occurs on more than one theme." davidmlentz
Future Releases 42187 Multisite - Wordpress Importer Unavailable Networks and Sites 4.8.2 normal normal Awaiting Review defect (bug) new 2017-10-11T18:57:31Z 2017-10-11T18:57:31Z "I have a multisite installation for wordpress, and I have two users:
* admin - Multisite Administrator
* commonAdm - An administrator of only one of the sites in the network.
Steps to reproduce:
1. When the commonAdm tries to access the Wordpress Importer via Tools -> Importer, no options are shown to him.
2. Then I, as ""admin"", open the same page, click on Wordpress Importer (just opening the url ""/wp-admin/import.php?import=wordpress""
3. After the ""admin"" access this page, the commonAdm can see and use the Wordpress importer.
It seems that it requires this first access on EVERY single site for it to work, somehow it must be setting a flag, but I couldn't find any documentations regarding this behaviour.
Other information:
* I'm running a Bitnami Wordpress Multisite on AWS EC2, up to date to 4.8.2;
* I'm not sure if the bug is related to Network and Sites or the Importer itself (so I chose the first one)" dtiziani
Future Releases 40465 Multisite fails to rewrite upload path on main site Networks and Sites 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-16T13:33:33Z 2017-04-17T18:12:13Z "This is a follow-up to #12002.
After removing the /blog/ slug On options-permalink.php, the media filed display the wordpress subdirectory on the urls.
'''Steps''':
Install wordpress in its own directory
Activate multisite with subsites
Switch one of thd subsite into becoming main site
Everything works smoothly including images
However, image urls contain wordpress directory.
{{{
Domain.com/wordpress/wp-content/uploads/image-title.jpg
}}}
Instead of
{{{
Domain.com/wp-content/uploads/image-title.jpg
}}}
Is this the way it is designed to work? Or a bug?
Thanks." daniel berhane
Future Releases 39808 My Sites broken in 4.7.2 Networks and Sites 4.7.2 normal normal Awaiting Review defect (bug) new 2017-02-07T21:56:33Z 2017-11-14T18:24:33Z "After upgrading to 4.7.2, My Sites shows an error:
You must be a member of at least one site to use this page.
This happens for both regular users and administrators.
I've fixed it for now by changing one line of code:
diff wp-admin/my-sites.php.orig wp-admin/my-sites.php
20c20
< $blogs = get_blogs_of_user( $current_user->ID );
---
> $blogs = get_blogs_of_user( $current_user->ID, 1 );
" earl.fogel
Future Releases 42284 Stop invalid query generation in WP_Site_Query Networks and Sites 4.6 normal normal Awaiting Review defect (bug) new 2017-10-19T20:09:44Z 2019-02-05T17:20:30Z "In WP_Site_Query, developers have the ability to query by a single value or by multiple using a `__in` param. An example of which is which is `domain` and `domain__in`. Take for example the following query.
`
get_sites(['domain' => 'test.local', 'domain__in' => ['lebowski.local', 'start.test.local']]);
`
This query will only results for test.local, completely ignoring the `domain__in`. This is because of the query it generates. That looks like this
` domain = 'test.local' AND domain IN ('lebowski.local', 'start.test.local')`
Improved error checking must be implemented on this code to stop invalid queries.
" spacedmonkey
Future Releases 37822 Text area misaligned on network setting.php Networks and Sites 4.6 normal normal Future Release defect (bug) new 2016-08-25T10:46:27Z 2018-03-05T16:42:51Z "On Network setting page, all text area looks misaligned. Looks zig zag
Refer attached screenshots for better view.
" Ankit K Gupta
Future Releases 59556 WordPress Multisite issue - Media files presenting on Google with wrong domain Networks and Sites 6.3.1 normal normal Awaiting Review defect (bug) new 2023-10-06T07:32:22Z 2023-10-09T07:52:26Z "Hi WordPress Team,
I have a WordPress Multisite set up with 6 sites. Each site has its own domain name.
I discovered on a google search, that an uploaded media file is incorrectly referenced and basically ""shared"" between domains.
I have google showing a link to a file on site ''#''17, but it is referencing the domain name for site ''#''20.
Google shows:
{{{
https://site20domain/wp-content/uploads/sites/17/filename.pdf
}}}
But it should be showing:
{{{
https://site17domain/wp-content/uploads/sites/17/filename.pdf
}}}
See also attached screenshots.
Thanks
Kind regards,
Regine
" nutsonshells
Future Releases 42557 Wrong Behaviour on get_site_url for multiple sites with different protocol Networks and Sites 4.9 normal normal Awaiting Review defect (bug) new 2017-11-15T14:41:28Z 2017-12-21T23:18:17Z "Hi guys,
i think i found something that imho isn't working at all as expected.
Let's go with some explaination:
* I have a multisite network which has 4 sites
* 1 site, the main one, is under HTTPS protocol, the rest are under normal HTTP
* I've made a unique theme, customized for all 4 sites
* '''I don't want to pass the scheme to get_site_url()''' , this should be created dinamically
In theme footer, i'm calling the function {{{ get_site_url() }}} for pointing each site to other ones.
Something really bad happens here:
* The first site (the https:// one) show all the links with https on top, and it's totally wrong as the remaining sites are all under http
* Instead, the remaining sites show all the link with http on top, included the first https one
So, after inspecting a while, it seems you're doing something i cannot really explain...
* function get_site_url (link-template.php, row 3063) get the siteurl option from database using get_option('siteurl') and then you call set_url_scheme
* function set_url_scheme will be blocked from first condition check {{{ if(! $scheme) }}}, so we're going to is_ssl()
* and here we are with something misunderstood... function is_ssl() checks if $_SERVER[ 'HTTPS' ] global var is set and return true or false for the current server configuration, not bothering of other sites configuration (!?!?!?!?!?)
* so when i interrogate a HTTPS site, all links will be ssl, when i interrogate a HTTP site, all links won't have ahead that protocol.
I don't think this is an optimal way to check this thing honestly...
Could we discuss about it?" matteowebsolution
Future Releases 43251 editable_roles filter doesn't exclude role on multisite Networks and Sites 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-07T19:15:54Z 2019-12-06T16:48:21Z "On a multisite installation I am trying to exclude a role using editable_roles filter.
The role is removed from the dropdown but if I change the role value in the DOM using the inspector I can successfully add the excluded role.
This happens only on multisite installations. On single installations if I try to add an excluded role I get the message “Sorry, you are not allowed to give users that role.”
'''How to reproduce the issue:'''
1. Unset a role using editable_roles filter.
2. Login with any role that has the capability create_user.
3. Add a new user changing any role value with the excluded role (using inspector)." eArtboard
Future Releases 40682 get_current_blog_id() and get_current_network_id() are loaded before absint() Networks and Sites 3.5 normal normal Awaiting Review defect (bug) new 2017-05-06T06:41:04Z 2019-02-23T15:35:39Z In r21484, these functions were moved to `wp-includes/load.php`. Regardless of when they are *supposed* to be called, they are available to be called by cache plugins before `absint()` exists in the ether. If caching plugins are indeed accessing `global $blog_id` this early, seems like a race condition somewhere. wonderboymusic
Future Releases 43130 Add New Site: admin autocomplete search all users Networks and Sites 4.9.2 normal normal Awaiting Review enhancement new 2018-01-19T09:01:27Z 2021-04-06T17:02:11Z "When adding a new site on multisite WordPress, the ""Admin Email"" field's autocomplete will find only users attached to the first ""site"". If the user is in WordPress network user list but not in first site, it'll not be found." julienlusson
Future Releases 55488 Add a filter to array of allow ported number in multisite. Networks and Sites normal normal Awaiting Review enhancement new 2022-03-30T13:39:42Z 2022-03-30T13:39:42Z "The allowed port numbers to setup a multisite are fixed. See this line.
{{{#!php
if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443' ), true ) ) ) {
}}}
However, a site maintainer may want to change these values to help enable serving their multisite from a custom port.
This ticket is a breakout from #21077" spacedmonkey
Future Releases 40821 Add filter to `wpmu_delete_blog()` to overwrite ability to drop tables Networks and Sites 4.8 normal normal Future Release enhancement new 2017-05-19T16:53:57Z 2017-05-19T20:45:23Z "The function `wpmu_delete_blog( $blog_id, $drop = false )` includes a flag to add the ability to drop tables. There are some cases where we may want to prevent accidental deletion of tables, even when that flag is set to true.
Adding a filter like: `$drop = apply_filters( 'wpmu_allow_drop_tables', $drop );` will allow manual overwriting of the passed value.
" mermel
Future Releases 29411 Add multi-network helper functionality Networks and Sites normal normal Future Release enhancement new 2014-08-28T06:32:46Z 2017-08-16T09:51:56Z "While WP core supports multi-network, there are some pieces of critical functionality missing. Currently, I'm using JJJ's [http://wordpress.org/plugins/wp-multi-network/ WP Multi Network] plugin to provide this, but the utility functions should probably be included with core.
These are:
* `network_exists`
* `switch_to_network`
* `restore_current_network`
* `add_network`
* `update_network`
* `delete_network`
* `move_site`
* `user_has_networks`
Personally, I'd be in favour of integrating the entirety of [https://plugins.trac.wordpress.org/browser/wp-multi-network/trunk/wpmn-functions.php wpmn-functions.php] verbatim." rmccue
Future Releases 36940 Break `manage_sites` capability up into more targeted caps johnjamesjacoby Networks and Sites 3.0 normal normal Future Release enhancement assigned 2016-05-25T12:56:16Z 2017-07-17T20:36:26Z "The `manage_sites` capability is currently used as a blanket, to cover all needs when it comes to editing a site in a multisite installation.
Started in #15800 (and having chatted with @jeremyfelt at length) we'd like to break `manage_sites` up into new capabilities that more acutely convey what part of a site someone is allowed to edit.
The goal is to allow users with `/network` admin access to have more fine-grained control over what parts of a site they can edit. For example: `manage_site_settings = false` so a user can modify site themes & users, but not have access to the raw option data.
We are imagining they would look something like:
* `manage_site_info` (`site-info.php`)
* `manage_site_settings` (`site-settings.php`)
* `manage_site_themes` (`site-themes.php`)
* `manage_site_users` (`site-users.php`)
In addition:
* We would pass the site ID through `current_user_can()` to provide additional context
* Switch to using `create_sites` in `site-new.php` (vs. `manage_sites` which was likely a copy-paste assumption that the capabilities across these similar files should match)
----
More paraphrasing of our past 4 months of chat in #core-multisite:
* Because only WordPress Super Admins can access any of these by default, renaming these capabilities should be considered a backwards compatible change
* We /could/ go as far as mapping all of these new caps to `manage_sites` to maintain compatibility, but for plugin authors wishing to take advantage of this, it would require an additional `map_meta_cap` override that we would like to try and avoid
* This should not result in much code churn, and will only change multisite files, and a handful of functions that special-case multisite using the `manage_sites` capability check
* We would still keep `manage_sites` in a few higher-level places (as a site equivalent to `edit_posts`) to ensure that a user has access to certain UI elements that allow them entry to more detailed site editing" johnjamesjacoby
Future Releases 37297 Deprecate get_blogaddress_by_id function spacedmonkey Networks and Sites 3.0 normal normal Future Release enhancement reviewing 2016-07-06T21:06:18Z 2023-03-06T14:30:02Z The get_blogaddress_by_id function is pretty old and should be replaced with get_home_url, as this is filtered. spacedmonkey
Future Releases 40554 Hide /wp-admin/network/site-settings.php Networks and Sites normal normal Awaiting Review enhancement new 2017-04-24T18:14:25Z 2017-04-25T16:26:43Z "WordPress developers have decided that `/wp-admin/options.php` is inappropriate to be shown to users and so there are no links to it. You can't click on a menu item and stumble across it. The only way to find it is to manually type in the URL. This is great because it prevents inexperienced users from making potentially disastrous changes, or at the very least being a bit confused.
`/wp-admin/network/site-settings.php` is pretty much the same as `/wp-admin/options.php` except it hides options beginning with `_` and munges the option names to be slightly more human-readable. As such, I think it should be given the same treatment as `/wp-admin/options.php` - hide it completely so that nobody stumbles across it." tomdxw
Future Releases 37958 Improve looping through sites and restoring Networks and Sites normal normal Awaiting Review enhancement new 2016-09-06T17:58:26Z 2017-01-27T08:31:29Z "[https://wordpress.slack.com/archives/core-multisite/p1473179575000111 As discussed] in the recent multisite ~~hours~~ minutes, I would like to propose (and discuss) a better means to looping through a number of (or even all) sites and finally restoring to the state before the loop.
The naive approach looks like the following:
{{{#!php
site_id = get_current_blog_id();
$this->stack = $_wp_switched_stack;
$this->switched = $switched;
}
/**
* Returns a new instance representing the current network state.
*
* @return static Network state object.
*/
public static function create() {
return new static();
}
/**
* Restores the saved network state.
*
* @return void
*/
public function restore() {
switch_to_blog( $this->site_id );
$GLOBALS['_wp_switched_stack'] = $this->stack;
$GLOBALS['switched'] = $this->switched;
}
}
}}}
With this class, the `foreach`-loop code from before can become this:
{{{#!php
restore();
}}}
No matter what happens in the loop (and thus in any called function or method), we restore to the exact same state the network was in before the loop.
The above implementation works with the (currently available and used) globals. As soon as there is some other way (see #37699), this can easily be adapted as it's internals only.
The naming is just a suggestion, and we can, of course, baptize all the things differently.
Core could make use of it, too. For example in the [https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/ms.php?rev=38334#L221 `wpmu_delete_user()] function, during [https://core.trac.wordpress.org/browser/trunk/src/wp-admin/network/upgrade.php?rev=38229#L64 Network upgrade], or in the [https://core.trac.wordpress.org/browser/trunk/src/wp-includes/admin-bar.php?rev=38470#L461 wp_admin_bar_my_sites_menu()] function (!), which means: On. Every. Single. Page. Load.
I'd be happy to provide a full patch against trunk. I just wanted to propose this first and give opportunity to discuss this." tfrommen
Future Releases 17164 More elegant handling of site 'archive' options for MultiSite Networks and Sites 3.1 normal normal Future Release enhancement new 2011-04-18T15:08:50Z 2023-03-22T14:32:22Z "Right now you have a few options with MultiSite blogs
1) Spam
2) Deactivate
3) Archive
4) Delete
Spam is easy to understand, and should be marking the admin and site as spam. Delete ditto, hi.
Deactivate and Archive are weird though and almost seem backwards. Deactivate means to turn OFF (like deactivating a plugin). Archive implies that you're making a site read-only.
Right now, if you change a site to 'deactivated' it actually shows up as DELETED and the front end has the message ""This user has elected to delete their account and the content is no longer available."" Clearly the verbage on the network/sites.php page needs to be updated (and perhaps the front end to 'This site has been deactivated.' to be consistant).
If you 'Archive' a site it kicks it to a paler pink in the sites.php page (though the 'Archived' text is white and nigh impossible for me to read) and the front end says ""This site has been archived or suspended.""
It's rather illogical there. Archive SOUNDS like it should be making things read-only (and turning off commenting and posting if possible). Otherwise it should just be 'Suspend', and at that point, why have two options that pretty much do the same thing from the front-end perspective?" Ipstenu
Future Releases 37687 Multisite - Enormous number of update queries during site creation (user roles) Networks and Sites normal normal Awaiting Review enhancement new 2016-08-17T10:33:27Z 2019-01-23T22:45:54Z "This is mostly because the wp_roles+caps are added one by one causing a very nice overhead.
{{{
query: INSERT INTO `wp_86_options` (`option_name`, `option_value`, `autoload`) VALUES ('wp_86_user_roles', 'a:1:{s:13:\""administrator\"";a:2:{s:4:\""name\"";s:13:\""Administrator\"";s:12:\""capabilities\"";a:0:{}}}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
query: UPDATE `wp_86_options` SET `option_value` = 'a:2:{s:13:\""administrator\"";a:2:{s:4:\""name\"";s:13:\""Administrator\"";s:12:\""capabilities\"";a:0:{}}s:6:\""editor\"";a:2:{s:4:\""name\"";s:6:\""Editor\"";s:12:\""capabilities\"";a:0:{}}}' WHERE `option_name` = 'wp_86_user_roles'
query: UPDATE `wp_86_options` SET `option_value` = 'a:3:{s:13:\""administrator\"";a:2:{s:4:\""name\"";s:13:\""Administrator\"";s:12:\""capabilities\"";a:0:{}}s:6:\""editor\"";a:2:{s:4:\""name\"";s:6:\""Editor\"";s:12:\""capabilities\"";a:0:{}}s:6:\""author\"";a:2:{s:4:\""name\"";s:6:\""Author\"";s:12:\""capabilities\"";a:0:{}}}' WHERE `option_name` = 'wp_86_user_roles'
query: UPDATE `wp_86_options` SET `option_value` = 'a:5:{s:13:\""administrator\"";a:2:{s:4:\""name\"";s:13:\""Administrator\"";s:12:\""capabilities\"";a:3:{s:13:\""switch_themes\"";b:1;s:11:\""edit_themes\"";b:1;s:16:\""activate_plugins\"";b:1;}}s:6:\""editor\"";a:2:{s:4:\""name\"";s:6:\""Editor\"";s:12:\""capabilities\"";a:0:{}}s:6:\""author\"";a:2:{s:4:\""name\"";s:6:\""Author\"";s:12:\""capabilities\"";a:0:{}}s:11:\""contributor\"";a:2:{s:4:\""name\"";s:11:\""Contributor\"";s:12:\""capabilities\"";a:0:{}}s:10:\""subscriber\"";a:2:{s:4:\""name\"";s:10:\""Subscriber\"";s:12:\""capabilities\"";a:0:{}}}' WHERE `option_name` = 'wp_86_user_roles'
[...] One hunder queries later:
UPDATE `wp_86_options` SET `option_value` = 'a:5:{s:13:\""administrator\"";a:2:{s:4:\""name\"";s:13:\""Administrator\"";s:12:\""capabilities\"";a:61:{s:13:\""switch_themes\"";b:1;s:11:\""edit_themes\"";b:1;s:16:\""activate_plugins\"";b:1;s:12:\""edit_plugins\"";b:1;s:10:\""edit_users\"";b:1;s:10:\""edit_files\"";b:1;s:14:\""manage_options\"";b:1;s:17:\""moderate_comments\"";b:1;s:17:\""manage_categories\"";b:1;s:12:\""manage_links\"";b:1;s:12:\""upload_files\"";b:1;s:6:\""import\"";b:1;s:15:\""unfiltered_html\"";b:1;s:10:\""edit_posts\"";b:1;s:17:\""edit_others_posts\"";b:1;s:20:\""edit_published_posts\"";b:1;s:13:\""publish_posts\"";b:1;s:10:\""edit_pages\"";b:1;s:4:\""read\"";b:1;s:8:\""level_10\"";b:1;s:7:\""level_9\"";b:1;s:7:\""level_8\"";b:1;s:7:\""level_7\"";b:1;s:7:\""level_6\"";b:1;s:7:\""level_5\"";b:1;s:7:\""level_4\"";b:1;s:7:\""level_3\"";b:1;s:7:\""level_2\"";b:1;s:7:\""level_1\"";b:1;s:7:\""level_0\"";b:1;s:17:\""edit_others_pages\"";b:1;s:20:\""edit_published_pages\"";b:1;s:13:\""publish_pages\"";b:1;s:12:\""delete_pages\"";b:1;s:19:\""delete_others_pages\"";b:1;s:22:\""delete_published_pages\"";b:1;s:12:\""delete_posts\"";b:1;s:19:\""delete_others_posts\"";b:1;s:22:\""delete_published_posts\"";b:1;s:20:\""delete_private_posts\"";b:1;s:18:\""edit_private_posts\"";b:1;s:18:\""read_private_posts\"";b:1;s:20:\""delete_private_pages\"";b:1;s:18:\""edit_private_pages\"";b:1;s:18:\""read_private_pages\"";b:1;s:12:\""delete_users\"";b:1;s:12:\""create_users\"";b:1;s:17:\""unfiltered_upload\"";b:1;s:14:\""edit_dashboard\"";b:1;s:14:\""update_plugins\"";b:1;s:14:\""delete_plugins\"";b:1;s:15:\""install_plugins\"";b:1;s:13:\""update_themes\"";b:1;s:14:\""install_themes\"";b:1;s:11:\""update_core\"";b:1;s:10:\""list_users\"";b:1;s:12:\""remove_users\"";b:1;s:13:\""promote_users\"";b:1;s:18:\""edit_theme_options\"";b:1;s:13:\""delete_themes\"";b:1;s:6:\""export\"";b:1;}}s:6:\""editor\"";a:2:{s:4:\""name\"";s:6:\""Editor\"";s:12:\""capabilities\"";a:34:{s:17:\""moderate_comments\"";b:1;s:17:\""manage_categories\"";b:1;s:12:\""manage_links\"";b:1;s:12:\""upload_files\"";b:1;s:15:\""unfiltered_html\"";b:1;s:10:\""edit_posts\"";b:1;s:17:\""edit_others_posts\"";b:1;s:20:\""edit_published_posts\"";b:1;s:13:\""publish_posts\"";b:1;s:10:\""edit_pages\"";b:1;s:4:\""read\"";b:1;s:7:\""level_7\"";b:1;s:7:\""level_6\"";b:1;s:7:\""level_5\"";b:1;s:7:\""level_4\"";b:1;s:7:\""level_3\"";b:1;s:7:\""level_2\"";b:1;s:7:\""level_1\"";b:1;s:7:\""level_0\"";b:1;s:17:\""edit_others_pages\"";b:1;s:20:\""edit_published_pages\"";b:1;s:13:\""publish_pages\"";b:1;s:12:\""delete_pages\"";b:1;s:19:\""delete_others_pages\"";b:1;s:22:\""delete_published_pages\"";b:1;s:12:\""delete_posts\"";b:1;s:19:\""delete_others_posts\"";b:1;s:22:\""delete_published_posts\"";b:1;s:20:\""delete_private_posts\"";b:1;s:18:\""edit_private_posts\"";b:1;s:18:\""read_private_posts\"";b:1;s:20:\""delete_private_pages\"";b:1;s:18:\""edit_private_pages\"";b:1;s:18:\""read_private_pages\"";b:1;}}s:6:\""author\"";a:2:{s:4:\""name\"";s:6:\""Author\"";s:12:\""capabilities\"";a:10:{s:12:\""upload_files\"";b:1;s:10:\""edit_posts\"";b:1;s:20:\""edit_published_posts\"";b:1;s:13:\""publish_posts\"";b:1;s:4:\""read\"";b:1;s:7:\""level_2\"";b:1;s:7:\""level_1\"";b:1;s:7:\""level_0\"";b:1;s:12:\""delete_posts\"";b:1;s:22:\""delete_published_posts\"";b:1;}}s:11:\""contributor\"";a:2:{s:4:\""name\"";s:11:\""Contributor\"";s:12:\""capabilities\"";a:5:{s:10:\""edit_posts\"";b:1;s:4:\""read\"";b:1;s:7:\""level_1\"";b:1;s:7:\""level_0\"";b:1;s:12:\""delete_posts\"";b:1;}}s:10:\""subscriber\"";a:2:{s:4:\""name\"";s:10:\""Subscriber\"";s:12:\""capabilities\"";a:2:{s:4:\""read\"";b:1;s:7:\""level_0\"";b:1;}}}' WHERE `option_name` = 'wp_86_user_roles'
}}}
Possible idea: instantiate `wp_roles` with `use_db` false during blog creation and force saving roles data into database after `populate_roles();` function." fliespl
Future Releases 41443 Update /wp-admin/network/site-new.php to use wpmu_validate_blog_signup() Networks and Sites 4.8 normal normal Awaiting Review enhancement new 2017-07-25T21:29:37Z 2017-09-27T06:04:28Z Is there a good reason that /wp-admin/network/site-new.php uses it's own hard-coded blogname validation rules? Shouldn't it just call wpmu_validate_blog_signup() for DRY as well as a consistent / universal application of filters across all new site names? It seems crazy to have two different sets of validation for the same thing. And as multisite plugin developers we see network admins confused by the different behavior of site-new.php and sites created through plugins which use wpmu_validate_blog_signup(). neversettle
Future Releases 37181 Use metadata api in *_network_options spacedmonkey Networks and Sites 4.4 normal normal Future Release enhancement reopened 2016-06-26T12:44:04Z 2022-12-07T16:46:35Z "The network (site) options are stored in the database as sitemeta. The table is formatted as a meta table. However the CRUD of this data in get_network_option, update_network_option, add_network_option and delete_network_option doesn't use the metadata api. Using the metadata api has many advantages, such as filters and a more consistent caching api.
" spacedmonkey
Future Releases 40511 get_blogs_of_user should return an array of WP_Site objects Networks and Sites normal normal Awaiting Review enhancement new 2017-04-21T10:24:55Z 2017-04-24T17:09:38Z Currently the get_blogs_of_user uses get_sites to get list of sites. The code loops through the list and creates std objects. However, this is now needed. It is much better to return a list of WP_Sites. spacedmonkey
Future Releases 31573 wp_admin_bar_my_sites_menu should check for super admin capabilities Networks and Sites 4.1.1 normal normal Future Release enhancement new 2015-03-09T15:36:35Z 2017-02-02T15:29:57Z "Currently the ""Network Admin"" segment of the admin bar is only added for super admins. This could be done in a more granular way by using the corresponding super admin capabilities.
I am currently adding this myself with code similar to this:
{{{
if ( current_user_can( 'manage_network_users' ) ) {
$groups[] = array(
'parent' => 'network-admin',
'id' => 'network-admin-u',
'title' => __( 'Users' ),
'href' => network_admin_url( 'users.php' ),
);
}
}}}
To make this useful the suggestions in #16860 would also have to be implemented.
With BuddyPress now also using more granular checks for super admin capabilities this would allow for a much more refined access control to the network admin area. In my case I need the possibility to allow individual users the activate and edit user accounts, but have no access to other areas of the network admin in a multisite installation.
" thomaslhotta
Future Releases 14215 MultiSite: Add new > different username from blog title Networks and Sites 3.0 normal normal Future Release feature request new 2010-07-06T18:09:37Z 2018-05-07T16:58:46Z "I would like to request that the current system for adding a new blog site be expanded so that as admins, we can specify a different username that's unrelated to the blog title. That is, in '''Site Admin -> Add New''', at the bottom of the page, add a new field specifically for the username. For that matter, it would be useful to also have a field to be able to specify the password, and perhaps a little checkbox that allows you to optionally prevent an email from being sent. These features are really useful when you're manually adding sites for employees, students, and the such.
I had provided a fix for wpmu 2.8.4 at one point (with a better explanation and details), you can see the thread here: http://mu.wordpress.org/forums/topic/12945
An example of the final result: http://img696.imageshack.us/img696/2551/addblogwordpress.png" Person
Future Releases 59871 Prime further options in `wp_load_core_site_options()` Options, Meta APIs normal normal Future Release defect (bug) new 2023-11-10T02:00:57Z 2024-01-11T17:43:33Z "In Multisite, individual database queries are made to query a number of commonly used options.
On each request:
* WPLANG
* nonce_key
* nonce_salt
On each authenticated request:
* auth_key
* auth_salt
The *_(salt|key) requests are only made if the constant is not defined or uses the default phrase `put your unique phrase here`.
Follow up to #56913." peterwilsoncc
Future Releases 41604 REST API: Attempting to create or update a non-existent setting doesn't return an error response Options, Meta APIs normal normal Awaiting Review defect (bug) new 2017-08-10T16:35:44Z 2017-08-10T16:37:07Z "Attempting to create a new setting via a POST request to `/wp/v2/settings` returns a 200 response, despite the request having been invalid. The same goes for attempting to update a non-existent setting with a PUT request.
I would have expected maybe a 400 from such requests.
The internal logic in `WP_REST_Settings_Controller` routes the request through the `update_item()` method, treats it as a setting update, and silently ignores the problem.
" johnbillion
Future Releases 44977 Transient fill fail delete to itself if it's timeout option is missing Options, Meta APIs normal normal Awaiting Review defect (bug) new 2018-09-21T11:25:44Z 2018-09-23T12:47:02Z "Just faced this issue - for some reason, the transient was not deleting itself. While checking the DB, the option with the transient was there, while the timeout option was missing (probably a glitch while saving to DB).
Now, if you check get_transient() in option.php (quick link https://core.trac.wordpress.org/browser/tags/4.9.8/src/wp-includes/option.php#L0 ) you can see that these are deleted only if both exist and both pass the test:
{{{
[...]
if ( false !== $timeout && $timeout < time() ) { DELETING TRANSIENT}
[...]
}}}
Otherwise transient will hang... forever. This should be tuned up so it also checks that these options exist, and delete transient if timeout is absolete." nlozovan
Future Releases 54805 When on the /wp-admin/network/site-settings.php network settings page, calling the update_option() always add the setting Options, Meta APIs 5.8.3 normal minor Awaiting Review defect (bug) new 2022-01-13T00:03:48Z 2022-01-13T00:03:48Z "When on the network settings (/wp-admin/network/site-settings.php), the udpate_option() used to update the changed settings always adds the settings whenever the form is submitted. So instead of firing the ""update_option"" action hook after the settings are updated, it still fires the **add_option** action hook every time!
Obviously, this should give an error but because there's a bailer when adding option using **ON DUPLICATE KEY UPDATE**, no error is shown." zenithcity
Future Releases 45505 get_post_custom() doesn't pull values Options, Meta APIs 5.0 normal normal Awaiting Review defect (bug) new 2018-12-06T21:37:29Z 2018-12-06T22:07:14Z "When you are on a post or page and change the content and reload, so that the autosave post pops up at the top, the get_post_custom() values in custom metaboxes aren't being pulled in.
get_post_meta() values however still works in that scenario." dryane
Future Releases 43704 pre_option_{$option} filter is case sensitive although options are not. Options, Meta APIs 4.9.5 normal normal Awaiting Review defect (bug) new 2018-04-05T18:38:44Z 2018-04-08T01:53:12Z "I noticed the filter ""pre_option_{$option}"" for myOption wouldn't filter get_option('MYOption') for example, yet get_option(name) and MySql in general does not seem to care what case the option is. Perhaps it should also do pre_option_(strtolower($option)) when necessary?
Was there a reason this particular filter is case-sensitive?" programmin
Future Releases 34322 set_transient and get_transient don't seem to be working for some users since WP 4.3 Options, Meta APIs 4.3 normal normal Awaiting Review defect (bug) new 2015-10-16T04:07:34Z 2017-04-06T17:08:22Z "I'm the developer of a social media plugin which relies on the WordPress set_transient and get_transient functions to temporarily cache data in the user's database. Since the WordPress 4.3 update, we've had reports of the cache not clearing automatically as it should, meaning that the transients aren't expiring correctly in the database. This seems to only be happening on some servers as I haven't been able to replicate the issue on my own test site, but have confirmed it on user sites, and looks like it could be related to [https://make.wordpress.org/core/2015/07/30/get_transient-is-now-more-strict-in-4-3/ this thread]. The same problem seems to be happening to other developers of similar plugins, and I've had some users report that other unrelated WordPress plugins they're using are also not automatically updating either any more, which I'm assuming is caused by the same issue. I've been able to confirm the problem on user sites by using a page template containing the following basic code. I've commented it to explain what it does and can provide a Facebook Access Token privately if needed, although I included a link on how to obtain your own. The transient set using the script below should expire every 30 minutes and then the script should check the URL again for new data, but it doesn't unless I delete the transient manually.
{{{
';
//Show the date the data was last updated from Facebook
echo 'Last updated: ' . json_decode( json_encode($transient) )->headers->date;
} else {
//No transient in the database - get the data from Facebook
$facebook_data = wp_remote_get( $url );
//Cache the data in the database
set_transient( 'test_transient_expiration', $facebook_data, 1800 );
echo 'Got the data from the URL ';
//Show the date the data was last updated from Facebook
echo 'Last updated: ' . json_decode( json_encode($facebook_data) )->headers->date;
}
?>
}}}
I was in two minds whether to report this as a bug as I've never reported one before, however it definitely seems like this could be a bug as the above code should work, but doesn't on some user's sites. I use code very similar to the above in my plugin and nothing has been changed in that code, but users started reporting an issue shortly after the WordPress 4.3 update was released. Through reading the change logs for the 4.3 update I know some changes were made to transients and so I'm wondering if that's what caused this problem.
Sorry for the long post!
John" smashballoon
Future Releases 39706 Add $unique param to add_{$meta_type}_meta actions Options, Meta APIs normal normal Awaiting Review enhancement new 2017-01-26T17:11:05Z 2017-01-26T17:16:36Z "The hooks `add_{$meta_type}_meta` and similar provide context about `$object_id`, `$meta_key`, `$_meta_value` and such, but do not tell whether the meta data added or updated is supposed to be `$unique`.
Adding this information could be helpful. My use case for instance is propagating meta data across posts." barryceelen
Future Releases 48478 Allow omitting meta keys from the REST API response if they do not exist Options, Meta APIs 4.7 normal normal Awaiting Review enhancement new 2019-10-31T22:54:18Z 2019-10-31T22:54:18Z "Currently, the REST API will include all `show_in_rest` registered meta keys in a response, even if that meta key has no value. When the meta key has no value, either the empty value or a custom default in `show_in_rest.schema.default` is used.
If an API client PUTs back this response, the meta key will be created with this default value. This may be undesirable if a user hasn't actually interacted with that meta key.
This could be addressed by allowing the user to specify that the meta key should not be included in the REST API if it does not exist. For instance, `show_in_rest.omit_if_not_exists`.
Related Gutenberg ticket: https://github.com/WordPress/gutenberg/issues/17864" TimothyBlynJacobs
Future Releases 38734 Dogfood the Settings API Options, Meta APIs 2.7 normal normal Future Release enhancement assigned 2016-11-09T16:56:42Z 2022-03-21T22:34:05Z "WordPress has had a [https://codex.wordpress.org/Settings_API Settings API] for eight years, but the core settings screens in WordPress don't use it. Instead, these screens use hardcoded sections and fields, which means it's impossible for a plugin to remove sections or fields without removing the entire screen.
There's a new [https://make.wordpress.org/core/tag/fields-api/ Fields API] in development but this doesn't mean the core settings screens shouldn't be improved in the meantime by switching to the Settings API.
I think the best approach for this is to address one screen at a time, starting with General Settings, and go from there.
If anyone thinks this change should not be made, speak now or forever hold your peace.
Related: #9296, #15691, #18801, #32396" johnbillion
Future Releases 55969 The function set_transient should have the autoload argument Options, Meta APIs 6.0 normal normal Awaiting Review enhancement new 2022-06-12T14:28:53Z 2023-11-26T23:10:03Z "The function set_transient should have an argument to decide if a specific transient should be autoloaded or not so.
At the moment every transient that is set with the function set_transient is autoloaded.
Not all the transients have the need to be autoloaded. For example, many times transients that are used only in the backend don't need the autoload, but they slow down the frontend in some cases." giuse
Future Releases 56821 meta_query late row lookup for performance improvement Options, Meta APIs normal normal Awaiting Review enhancement new 2022-10-13T20:46:34Z 2022-10-14T11:59:24Z "Is it possible to do a late row lookup for meta_query to make large postmeta sets run much faster?
In some benchmarking I've done with load testing, queries that would take 8s to load with the current meta_query ended up loading in 500ms after implementing late row lookup.
My suggestion would be to modify the get_posts function in the WP_Query class to have a flag pass through to use late lookup, like passing through `""meta_late_lookup""=>true`:
{{{#!php
meta_query->queries ) ) {
$clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this );
if(isset($q['meta_query_late_lookup']) && $q['meta_query_late_lookup']){
// perform a late lookup instead of a join
$clauses['where'] = ' AND ID in (SELECT post_id FROM '.$wpdb->postmeta.' WHERE 1=1 '.$clauses['where'].')';
} else {
$join .= $clauses['join'];
}
$where .= $clauses['where'];
}
}}}
At the moment, this can be accomplished with a filter like so:
{{{#!php
' AND ID in (SELECT post_id FROM '.$meta_table.' WHERE 1=1 '.$sql['where'].')');
return $sql;
}
}}}
" brmoore252
Future Releases 41099 update_option return value ambiguous Options, Meta APIs 4.8 normal normal Awaiting Review enhancement new 2017-06-19T20:58:45Z 2019-04-15T16:37:15Z "WordPress 4.8
The return value 'false' does not allow for differentiating if there was an error saving or if the option value already exists and is the same as the new value.
Consider this scenario: a plugin sends option values via AJAX to be updated. The AJAX function returns the return value of 'update_option' which determines the feedback provided to the user, such as a 'success' or 'failure' message.
Rather than returning 'false' if an option already exists and is the same as the new option, I suggest returning NULL. In this way the return value of 'update_option' can be checked as follows:
{{{#!php
if ( is_null( update_option( $option, $value, $autoload) ) ) { ... } // option exists and value is the same as existing option value
if ( false === update_option( $option, $value, $autoload) ) { ... } // an error occured when saving the option
if ( update_option( $option, $value, $autoload) ) { ... } // option updated successfully
}}}
The 'update_option' function would need line 308 changed from:
{{{#!php
return false;
}}}
to:
{{{#!php
return NULL;
}}}
" cloughit
Future Releases 41769 Custom function to display all values of a custom field (meta_key) Options, Meta APIs normal normal Awaiting Review feature request new 2017-08-31T13:25:35Z 2017-09-01T16:06:45Z "If possible, add an extra function where we can list all values of a certain custom field (meta_key).
All functions I've found so far is only post id related (e.g get_post_custom_values, etc).
While any developer can build this themselves, I do think other wp users could benefit from it as well if it's simly part of the core.
Thanks." mireillesan
Future Releases 43451 Disallow objects as meta values Options, Meta APIs 4.9.2 normal normal Awaiting Review feature request new 2018-03-01T13:01:21Z 2018-03-01T14:13:31Z "OK, I know this is probably going to be closed before anyone even reads it, but I recon it's worth to at least try and spark a discussion.
As probably many people know at this point meta functions do not like backslashes. For some reason (probably db related) meta and option add / update functions run all values through `stripslashes_deep`, which means they expect the input values to be slashed. Actually this ""requirement"" seems to be undocumented even though it's here since version 3.something, why, that's beyond me.
So, imagine you're a noobie WordPress developer and for some reason you have a backslash in a string you want to persist (happens more often than one might think), so you go ahead and run the following code:
{{{#!php
$value = 'hello \world';
update_user_meta(get_current_user_id(), '_test', $value);
$meta = get_user_meta(get_current_user_id(), '_test', true);
var_dump($value, $meta);
}}}
You save `hello \world` and expect to get `hello \world` back, but surprise surprise, the backslash is gone.
So you start scratching your head, dig through stackoverflow or the source and you discover `$meta_value = wp_unslash($meta_value);`.
You think this isn't right, but who are you to argue with software that's here for more than 10 years already. So, now, you are a bit more ""experienced"" and know you need to run all your values through `wp_slash` **before** you pass it to the meta functions.
Then one day you need to save an array, you read through the docs which doesn't seem to forbid it, so you glance at the source and see `$meta_value = maybe_serialize( $meta_value );` - YES! - you say, you can pass basically anything and WordPress will take care of the serialization, awesome!
So, now you run:
{{{#!php
$value = [
'hello' => 'again \world'
];
update_user_meta(get_current_user_id(), '_test', wp_slash($value));
$meta = get_user_meta(get_current_user_id(), '_test', true);
var_dump($value, $meta);
}}}
Which results in the same input you gave it, now that you know you need to slash everything. You weren't sure `wp_slash` could actually handle arrays, but it does, so life's good!
Later on you mature even more and decide you want to save whole objects now. You know about serialization, so no worries here, right?
You adapt your previous code and try to run the following:
{{{#!php
$value = new \stdClass();
$value->hello = 'world \again';
update_user_meta(get_current_user_id(), '_test', wp_slash($value));
$meta = get_user_meta(get_current_user_id(), '_test', true);
var_dump($value, $meta);
}}}
...and you get `Warning: addslashes() expects parameter 1 to be string, object given in`. Turns out `wp_slash` can't handle objects :|
Alright, maybe you don't need it, so you remove it aaand the slash is gone.
Then you look at the code and realize now the slash is gone even from your original object! What the...
So trying to store an object as a meta value is not only not gonna work properly, but it's also going to mess with your original object!
So, what then?
Serialize it into a string before and after?
OK, you serialize the object so it's just a string now, then run it through `wp_slash` to fix the slashes issue and then give it to the meta function:
{{{#!php
$value = new \stdClass();
$value->hello = 'world \again';
update_user_meta(get_current_user_id(), '_test', wp_slash(serialize($value)));
$meta = unserialize(get_user_meta(get_current_user_id(), '_test', true));
var_dump($value, $meta);
}}}
Whew, finally everything works just fine, even though you're not absolutely sure you've covered all possible cases making sure nothing can ever go wrong again.
----
So, can anyone elaborate on this a bit more?
Why are slashes such a big problem when it comes to options and meta, shouldn't the value just be converted to a string and then treated as a black box all the way up to when it needs to go in the database?
Why does object serialization cause so much trouble?
You can't seriously expect users to be aware that their objects are going to be deepslashed to death, values of properties modified to god-knows how deep, and be okay with it.
If meta functions can't handle objects, just don't allow objects, shift the responsibility to the user, but be blunt about it. Don't say, //it's okay, we're gonna take care of serialization for you//, then strip the slashes off of properties of deep objects which might not even be part of WordPress whatsoever. This is a debugging nightmare.
Lastly I would like to apologize for my tone, but I've dealt with this issue for years now. There are bug reports opened 7 years ago that still haven't been resolved properly.
If nothing else it's really surprising to me that we're at 4.9.4 and such a mundane activity (persisting objects in meta) can cause so much trouble. Is it just me having these issues? Does no one else serialize stuff?" tonybogdanov
Future Releases 18523 Can't change page permalink if slug metabox is removed helen Permalinks 3.0 normal normal Future Release defect (bug) assigned 2011-08-26T14:42:56Z 2021-01-07T17:19:03Z "If the slug metabox is removed from the ""Edit Page"" page, it is not possible to change permalinks, using the edit permalink function at the top of the page.
Slug and other metaboxes are removed by the karma theme, in its admin/theme-functions.php (but only if 'ka_hidemetabox' in the wp_options table is 'true'):
{{{
remove_meta_box('slugdiv','page','normal');
}}}
Technically, without the slug box, the ""post_name"" field containing the new slug is not sent with the form data when you click the ""Update"" button.
I believe this is bug was introduced after version 3.1.3. " dankod
Future Releases 8905 Category pagination broken with certain permalink structures Permalinks 2.7 normal normal Future Release defect (bug) assigned 2009-01-21T07:26:31Z 2021-01-27T10:17:49Z "If one uses a permalink structure with %category% followed by %postname%, accessing pagination can cause a 404, as WordPress attempts to look for a post called ""page"".
As per http://barefootdevelopment.blogspot.com/2007/11/fix-for-wordpress-paging-problem.html
Presumably can occur with other permalink structures too." rmccue
Future Releases 48365 No 301 redirection for Numeric style permalink structure Permalinks normal normal Awaiting Review defect (bug) new 2019-10-18T02:43:11Z 2019-11-11T22:34:52Z "
Hi :)
If permalink structure is **Post name** style and I changed it to **Numeric**.
the post get a 301 redirect from
http://newwp.local/hello-world/ to http://newwp.local/archives/1
but not so happen with permalink structure **Numeric**.
when the current permalink structure is **Numeric** and I changed it to **Post name** or anything else.
ideally, the post should get 301 redirection from
http://newwp.local/archives/1 to http://newwp.local/hello-world/ but this is not happening.
post giving 404 error instead of 301 redirecting to the correct URL format. when I try to access the post with http://newwp.local/archives/1
Thanks
Naveen Giri
" 1naveengiri
Future Releases 50439 Post name permalinks htaccess directives do not consider subdirectory installation Permalinks 5.4.2 normal normal Awaiting Review defect (bug) assigned 2020-06-20T12:40:36Z 2020-06-20T12:40:36Z "Having wordpress installed in /wordpress/ subdirectory, and site address as root (following [https://wordpress.org/support/article/giving-wordpress-its-own-directory/#method-i-without-url-change method I in guide]), enabling post name permalinks gives 500 error on any page other than homepage or admin panel pages. This seems to be due to wordpress adding rewrite driectives to root .htaccess file, that seem to override the rewrite rules from method I. Changing permalinks to plain, making root .htaccess read-only (with no wp directives), or disabling them by putting an ifmodule with false condition around them fixes this.
I think that wordpress should consider subdirectory installation when writing htaccess directives." filatovdanyl
Future Releases 9296 Settings API & Permalink Settings Page Bug jfarthing84 Permalinks 2.7.1 normal major Future Release defect (bug) reopened 2009-03-07T05:33:55Z 2020-09-25T23:12:01Z Although there is a hook in the options-permalink.php to insert custom settings, it does not actually save any custom setting which is added to that page. Instead of posting to options.php like all the other options pages, it posts to itself and only handles the form data which is built into the wordpress core. It should be implemented on that page to also store custom settings that may be hooked onto that page. jfarthing84
Future Releases 30784 Subsites won't show 404 with default permalink structure Permalinks normal normal Future Release defect (bug) new 2014-12-19T17:10:49Z 2020-07-02T14:20:26Z "On my Multisite (subfolder) installation, I have every site set to use the default (ugly) permalinks. If I go to a subsite and add extra invalid characters after the site name, it displays the site, not a 404 error page.
Example: If I type in domain.tld/sitename/EXTRACHARS it displays the content from domain.tld/sitename, yet keeps the /EXTRACHARS in all the links.
I spoke with Andrea Rennick and she said that this happens because WordPress ignores anything after the sitename because pretty permalinks are not enabled.
This all came up because our Google appliances were crawling millions of invalid URLs because .tld/sitename/EXTRACHARS returns a 200, instead of a 404.
Would it be possible to make it so that an invalid URL would return a 404 instead of ignoring characters beyond the sitename when permalinks are set to default?" danhgilmore
Future Releases 38595 Unable to access wp-admin/options-permalink.php when .htaccess file is on NFS Permalinks 4.4 normal normal Awaiting Review defect (bug) new 2016-10-31T19:03:14Z 2017-05-03T05:59:25Z "After nearly a week of troubleshooting, we have identified an issue with wordpress which is preventing us from storing our .htaccess file on an NFS mount.
This issue exists as far back as 4.4
In order to reproduce:
install wordpress in a directory where .htaccess is located on a mounted nfs share. Once wordpress is installed, navigate to yoursite.com/wp-admin/options-permalink.php - the page should fail to load.
This issue appears to be caused by the function ""flock();"" in the function ""insert_with_markers();"" in wp-admin/includes/misc.php
Per PHPs documentation, flock(); is only acceptable for use on local filesystems.
I found an existing ticket regarding this function - #31767 - if I understand correctly, flock(); was added to the ""insert_with_markers(); function to resolve a concurrent write issue on shared filesystems.
Disclaimer: I am not a PHP developer, and only understand the basic concepts. The testing for the above bug consisted of commenting out functions till I could find the source of the issue. Commenting out the ""flock();"" function in the ""insert_with_markers();"" function resolved the issue in our environment." kicwordpress
Future Releases 41272 Unattached media URLs broken for anything over 1000 Permalinks normal normal Awaiting Review defect (bug) new 2017-07-07T23:09:21Z 2017-07-08T16:26:17Z "'''Steps to reproduce'''
1. On your local computer, rename a file to {{{1180.jpg}}}
2. Upload the file to the Media Library
3. Visit {{{example.com/1180}}}
You will get a 404 broken link.
If you do the same for a 1, 2 or 3 digit filename, you won't see the issue.
{{{
example.com/31.jpg // Works
example.com/872.jpg // Works
}}}
The problem isn't just related to images.
{{{
example.com/1871.mp3 // 404
}}}
" henry.wright
Future Releases 32048 Uploaded file reserves a name, page can't be named it. Permalinks 4.1.1 normal normal Awaiting Review defect (bug) new 2015-04-22T03:51:57Z 2017-03-09T01:04:29Z "1) Upload a file-name.png file to media library.
2) Publish a page named ""file-name"".
3) Note that (if site is set to post-name permalink) the page is now file-name-2
4) Try to rename the attachment and then give the page the natural name, and it still doesn't work.
This might have a similar root cause as bug #13459." programmin
Future Releases 41008 WP_Error wrote instead of category name in wp_options table, category_base field Permalinks 4.8 normal normal Awaiting Review defect (bug) new 2017-06-12T12:31:13Z 2020-09-08T21:18:17Z "I just installed WordPress 4.8, yet I'm not sure it's a bug specific of this version or not.
The issue is documented in the following post:
http://www.ryadel.com/en/catchable-fatal-error-object-of-class-wp_error-could-not-be-converted-to-string-wordpress-fix/
Long story short, it seems that sometimes (when some errors occurs, in my scenario was a I/O error) the category_base value of the wp_options table gets filled with a WP_Error json object instead of a category name. This raises an exception in the rewrite.php script (line 326) when the function tries to use that value against a regex, expecting a string.
Sadly enough, it doesn't seem easy to reproduce.
" Neilgaiman
Future Releases 55597 WordPress 6.0-beta2-53224 not creating .htaccess Permalinks 6.0 normal critical Awaiting Review defect (bug) assigned 2022-04-21T10:58:53Z 2022-05-24T18:46:49Z "on my development site (Plesk Obsidian, Centos 7.9) a fresh installed latest WP 6.0 beta2 does not create an .htaccess file at all.
Steps:
- wordpress-6.0-beta2.zip does not contain .htaccess
- unzipped and uploaded to site
- domain opened in browser
- run set up process until login
- no .htaccess created
- table wp_options 'permalink_structure' contains ""/index.php/%year%/%monthnum%/%day%/%postname%/""
- login as admin
- selecting a permalink structure and saving on /wp-admin/options-permalink.php
- table wp_options 'permalink_structure' contains ""/%postname%/"" as expected
- no .htaccess created
- repeated saving of permalink structure does not help to create .htaccess
- no entry in debug.log
- as to be expected: permalinks not working in front end
- only solution: create a basic .htaccess manually
To me this seems a severe bug.
Found this while testing one of my plugins on WP 6.0 before updating it to plugin repository
Chris
PS: no answer required
" campation
Future Releases 58125 WordPress post-name permalink is not compatible with Nginx server, working fine with Apache. Permalinks 6.2 normal normal Awaiting Review defect (bug) new 2023-04-13T10:33:44Z 2023-05-04T14:36:56Z "While I am setting up WordPress in my local environment, after setting up my WordPress I clicked on the sample page link from my home it redirected me to the sample page, and then I changed the permalink to the post-name nav link is not working properly and giving a 404 error.
I have provided an image link here.
[[Image(https://ibb.co/k84qkBV)]]" lovesoni1999
Future Releases 41132 permalinks are broken when using PHP7.0-fpm with nginx Permalinks 4.8 normal normal Awaiting Review defect (bug) new 2017-06-22T21:34:07Z 2020-05-29T05:43:02Z "Setting permalinks to anything but plain causes a white screen of death with the nginx error message:
the error is ""2017/06/22 19:55:49 [error] 20482#20482: *28040 FastCGI sent in stderr: ""Primary script unknown"" while reading response header from upstream, client: MYIPHERE, server: MYSERVER, request: ""GET /apps/my-secret-drinks-android/ HTTP/1.1"", upstream: ""fastcgi://unix:/var/run/php/php7.0-fpm.sock:"", host: ""MYHOST"", referrer: ""https://MYDOMAIN/apps/""
This is my Nginx site configuration: https://paste.ngx.cc/7e
It was working when I was using php5-fpm and only started after upgrading php5-fpm to php7.0-fpm" Towlieban
Future Releases 18672 "Implement rel=""prev"" and rel=""next"" for archives" joostdevalk Permalinks 3.3 normal normal Future Release enhancement new 2011-09-15T12:37:23Z 2020-02-29T17:21:40Z "As can be seen here:
http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html
Google now uses rel=""prev"" and rel=""next"" to navigate paginated archives. As we already do a lot of these types of links (rel=""index"", rel=""start"" etc.) I think we should add these. I'll come up with a first version of a patch." joostdevalk
Future Releases 43722 On changing of permalinks ask a confirm before to save Permalinks normal normal Awaiting Review enhancement new 2018-04-09T13:10:16Z 2018-04-09T13:10:16Z "Discussing with the support Italian team seems that one of the most common issue is that there is people that change permalinks and not remember that.
After save see that website is not working anymore and complain about the issue and the support team has to ask what is happened.
The ideal process can be like for changing the password where you have to check a field that confirm to change the password so that situation can be avoided." Mte90
Future Releases 34542 Permalink settings page should offer a filesystem API based way to save .htaccess Permalinks normal normal Future Release enhancement new 2015-11-01T10:06:30Z 2020-07-02T17:50:02Z Right now if .htaccess is not writable from PHP, the user is presented with the rules he should manually copy&paste into the file. There is no real reason to sent the user at that point to launch his FTP software to do something that in most cases can be done via the filesystem API. The filesystem API is both faster and most likely less prone to user mistakes. mark-k
Future Releases 29669 Static base in permalink_structure unexpectedly sets $wp_rewrite->front value Permalinks normal normal Future Release enhancement new 2014-09-14T17:44:11Z 2020-07-02T17:46:14Z "When I use a permalink structure like `/story/%post_id%/%postname%/`, the author and date URLs inherit the same `/story/` base (e.g. `/story/author/danielbachhuber/`). I'd expect my author and date URLs to remain unchanged, unless I explicitly specify a base.
There appears to be some crude `%post_id%` conflict resolution for date which forces this. It's not clear why the `front` value is applied to `author_structure`.
This code is 9 years young (#2433), so probably too late to make a breaking change. It would be nice to have a filter around `$wp_rewrite->front` in `$wp_rewrite->init()` so I don't have filter both rewrite rules and links." danielbachhuber
Future Releases 42702 "Most common issue inside post edit - ""Links Live search""." Permalinks 4.9 normal normal Awaiting Review feature request new 2017-11-26T09:59:46Z 2017-11-26T09:59:46Z "'''Most common issue in WP Back End Search''':
My original parmalink is not matching with Search URL and for that way i have trouble in interlinking of blog articles to 1 post to another one because of wrong category URL.
I have set Primary category (Messaging).
But in Search you will see wrong category (Linux).
For more details please view below 2 attach files carefully…
https://drive.google.com/file/d/1XoDVa_zMygIWs8bFfgaSag4-iou7BCl3/view?usp=sharing
https://drive.google.com/file/d/1u5ZlOXAA_5q30qo-HLnO8Qtz75tJkj3Q/view?usp=sharing
For more details:
This above issue is in 2-fold i will try to explane you below…
Our website permalinks are configured like so: /%category%/%postname%/
The first issue is that although a '''primary category is set for all of my posts''', when using the WordPress Link button, WordPress does not always insert the link using the primary category in the URL. I read that other people were having a similar issue where the categories where being inserted in alphabetical order. This does not seem to be the case for me as for the most part the permalink is working correctly, but not accross every post.
The second issue is that the post is not redirecting to the url which contains the primary category eg.
example.com/secondary/test-post
is not being redirected to the correct permalink as shown below
example.com/primary/test-post
Instead, the post is visable on both URL’s.
And for that way we have trouble in interlinking of blog articles to one post to another one because of wrong category URL
But if any fix in functions.php can help to resolved above issue and for that we need your help.
Your help would be appreciated.
Thank you." Softfully
Future Releases 56380 The pingback function does not work on internal or external links Pings/Trackbacks 6.0 normal normal Awaiting Review defect (bug) assigned 2022-08-15T15:21:44Z 2022-08-15T15:35:18Z "Whenever I publish an article, I add some internal and external links, but there is no pingback for internal and external links.
I have published an article [https://freetestpractices.com/2022/08/15/short-essay-on-wordpress/] and added some external and internal links, but no pingback received (Internal link). I have also changed themes (Generatepress) and deactivated all the plugins. Unfortunately, it's still not working. How to get help in this matter, please help me.
" awdhesh19
Future Releases 57363 WP <= 6.1.1 - Unauthenticated Blind SSRF via DNS Rebinding Pings/Trackbacks 6.1.1 normal normal Awaiting Review defect (bug) new 2022-12-20T23:25:00Z 2023-05-05T14:17:38Z "Hi,
Is this issue going to be fixed? No one has really answered this in the forums." edavis711
Future Releases 43505 Display of html encoded text in dashboard. Plugins normal normal Awaiting Review defect (bug) new 2018-03-08T21:59:56Z 2018-03-08T22:57:45Z "I have discussed the issue in this thread https://make.wordpress.org/polyglots/2018/02/26/hello-18/, I report here the issue of the display of the text in UI, not the editorial choice of the translation itself.
In fr_FR and fr_CA, there where changes done (last year?) to accomodate french ponctuation typographic rules but also, I guess, make sure the text doesnt fall on two line inadvertantly (ex. ""text !"", so a non-breaking space is inserted instead of a space).
This non-breaking space is inserted as html encoded entity and it looks like it is displayed as is, without decoding like it is visible in this exemple screenshot : https://imgur.com/a/iVy9h
" anonym999999
Future Releases 60491 Fix handling of plugins with unmet requirements Plugins 5.1 normal normal Future Release defect (bug) new 2024-02-10T01:03:03Z 2024-02-20T07:25:40Z "There are several bugs/inconsistencies when WordPress handles plugins with unmet requirements.
- A plugin with unmet requirements cannot be installed or updated when using the UI, but this is possible to do/there are no checks when a plugin is installed or updated directly (with FTP, SSH, or git/svn).
- A plugin with unmet requirements cannot be activated if already installed (happens only when a plugins is installed/updated from FTP, SSH, or git/svn). But if the plugin is already activated, it is not deactivated and continues to load.
- The UX can be better. The warnings in wp-admin when a plugin has unmet requirements are somewhat inconsistent, and there are no email notifications if any of these errors occur automatically (for example a script is running on the server that uses svn or git to update plugins).
" azaozz
Future Releases 53168 Ghost pages from Plugin Plugins 5.7.1 normal normal Awaiting Review defect (bug) new 2021-05-06T17:50:18Z 2021-05-06T17:50:18Z "Opening a ticket here for potential security vuln caused by plugin that has since been disabled. I was unable to get an answer to the problem from the plugin sub-forum.
**PROBLEM:** Elementor Plugin creates ""preview"" pages that remain in service even after disabling the plugin.
**SPECIFICS:** Ghost Elementor pages most likely left over from drafting the page.
**EXAMPLE:** https://www.example.com/?elementor-preview=7&ver=1618188909
**LINK WP SUPPORT:** https://wordpress.org/support/topic/ghost-pages-elementor-preview/#post-14346655
**VERSION:** WordPress 5.7.1 running Zita theme
Please advise where/how to resolve this issue if bug ticket is not the correct path for the problem.
Thank You." Beeblebrox-BSD
Future Releases 40795 If plugin zip file has very long name, windows systems can fail to upgrade Plugins 4.7.5 normal normal Awaiting Review defect (bug) new 2017-05-17T23:17:52Z 2018-09-17T17:01:06Z "If a plugin upgrade zip file has an extremely long name and the plugin a deep directory structure, windows can fail to create directories and therefore the plugin upgrade will fail.
I suggest WordPress have an upper limit on the working directory name that is well-shy of that limit--and realistically, even 32 characters might be plenty, as the upgrader only needs to avoid other plugins being upgraded at the same time.
Windows has a 247-character limit to the total ''path'' name for directories, as said directory needs to be able to hold, at a minimum, an ""8+3"" file, and allow for a null byte or similar at the end of path + file (260 total characters).
As an example, SearchWP fails to upgrade on my local system (WAMP running on top of Windows 10) because the downloaded zip filename is 142 characters long ''sans'' extension (redacted in case this is a license key):
{{{
XXX0XXX0XxxxXXxxXXX0XxXxXxX0XXXxXxXxXXXxXxXxXXX0XXx
0X0XxXXx0XxX0XXxxXXX0XXx0X0XxXXX0Xxx0XxX0XXXxXXX0XX
XxXxx0xXXXXx0xXXXxxxxxXxxxX0XxXxX-0xxXXx.zip
}}}
Combine that with my wordpress location on disk:
{{{
C:/wamp/www/example/wp-content/upgrade/
}}}
And this directory cannot be created because the total path is 254 characters long (including the hidden null):
{{{
C:/wamp/www/example/wp-content/upgrade/XXX0XXX0Xxxx
XXxxXXX0XxXxXxX0XXXxXxXxXXXxXxXxXXX0XXx0X0XxXXx0XxX
0XXxxXXX0XXx0X0XxXXX0Xxx0XxX0XXXxXXX0XXXxXxx0xXXXXx
0xXXXxxxxxXxxxX0XxXxX-0xxXXx/searchwp/vendor/
pdfparser/vendor/smalot/pdfparser/src/Smalot/PdfParser
}}}
I think that while this may be an outlier, it's a hard bug to chase for a vendor who may not have windows systems available...and even they do have such an environment available, the results returned by Apache when running WAMP (or in similar environments) does not reflect the actual cause of the error.
Looking at the structure above as pretty much as edge-case as you are likely to get, even a truncate at 64 characters would have been more than adequate, while 32 characters would give quite a bit of room for flexibility.
I believe that this could be affected by altering `wp_tempnam()` in `file.php`:
{{{
/**
* Returns a filename of a Temporary unique file.
* Please note that the calling function must unlink() this itself.
*
* The filename is based off the passed parameter or defaults to the current unix timestamp,
* while the directory can either be passed as well, or by leaving it blank, default to a writable temporary directory.
*
* @since 2.6.0
*
* @param string $filename Optional. Filename to base the Unique file off. Default empty.
* @param string $dir Optional. Directory to store the file in. Default empty.
* @return string a writable filename
*
* @since x.x.x
* @param int|string $maxlen Optional. Maximum length (excluding extension) of returned filename
*/
function wp_tempnam( $filename = '', $dir = '', $maxlen = 32 ) {
if ( empty( $dir ) ) {
$dir = get_temp_dir();
}
if ( empty( $filename ) || '.' == $filename || '/' == $filename || '\\' == $filename ) {
$filename = time();
}
// Use the basename of the given file without the extension as the name for the temporary directory
$temp_filename = basename( $filename );
$temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename );
// new: truncate the filename if longer than specified
$max = intval( $maxlen ) > 0 ? intval( $maxlen ) - 6 : 32;
$temp_filename = strlen( $temp_filename ) > $max ?
substr( $temp_filename, 0, $max ) : $temp_filename;
// ... remainder omitted for clarity
return $temp_filename;
}
}}}
An alternative would be to require plugin upgrade files to have filenames shorter than [insert recommendation here], though actually checking that would mean a similar chunk of code would need to be added elsewhere in WP.
(Not sure exactly where the best place to document this for plugin authors, which could be done immediately.)" rogerlos
Future Releases 43077 Misleading error when updating plugins Plugins 4.9.1 normal normal Awaiting Review defect (bug) new 2018-01-12T10:22:04Z 2018-09-16T03:45:16Z "Hi,
I am in /wp-admin/plugins.php
A plugin has a new update and I click ""Update now"". After a few seconds I get ""'''Update Failed: Could not copy file.'''""
However, when I refresh the page and I see that the plugin was updated.
After a few tests I realise that if there are Core Translation Updates and they fail(for example due to bad filesystem permissions), you will get the error mentioned above even though the plugin was successfully updated.
I would like to comment on two things:
a) The translations shouldn't get updated with any plugin update. I might NOT want to update the translations. By doing it in the background without asking me that's bad.
b) The error message shown is irrelevant to the plugin update and might cause confusion to some admins who might try to reinstall manually a plugin or do any other changes which might eventually end up breaking a site for nothing.
Thanks in advance for your time." SGURYGF
Future Releases 42656 Multisite Global $pagenow variable Plugins 5.1 normal normal Awaiting Review defect (bug) reopened 2017-11-22T03:58:15Z 2019-03-22T13:35:45Z "When the site is configured as multisite, plugins are loaded before ""vars.php"", causing plugin getting null value when trying to access the $pagenow variable.
Sample Plugin : Brightcove Video Connect
Defect : Setting page is empty
Caused by : In the setting page logic, it will check whether $pagenow is in the array of 'admin-ajax.php', 'admin.php', 'post-new.php', 'edit.php', 'post.php'. And since the $pagenow is not initialized yet, it will just display an empty page." thorthecoder
Future Releases 41141 Plugin edit: Missed message about making file writeable Plugins normal normal Awaiting Review defect (bug) new 2017-06-23T18:09:08Z 2017-06-23T18:25:28Z "Again, the messages are easy to miss. This may get scooped up in one improving ticket, but worth reporting.
[[Image(https://cldup.com/zzF9FEjMvT.png)]]
" karmatosed
Future Releases 41139 Plugin editing: Should the 'browsing' stand out more? Plugins normal normal Awaiting Review defect (bug) new 2017-06-23T17:56:50Z 2017-06-23T18:25:28Z "This message seems to get lost on the page:
[[Image(https://cldup.com/ZKUO4NfdPq.png)]]
While we are reviewing this making it not just say 'active' and making the message a bit more relatable could be good.
" karmatosed
Future Releases 57606 Recently Active instead of Recently Deactivated Plugins 6.1.1 normal major Awaiting Review defect (bug) new 2023-02-02T10:42:48Z 2023-07-09T15:35:23Z "Hello team,
Hopefully, you are doing well.
I am Afzaal Shamraiz a WordPress developer and a learner.
I found on the 6.1.1 version that when I deactivate any plugin, the new filter comes up in the plugin filter menu ""**Recently Active**"", but when I click on it, it displays the list of the recently deactivated plugins, please make this correction.
I think it should be ""**Recently Deactivated**""
[[Image(https://ataatravels.com/wp-content/uploads/2023/02/wordpress-bug.png)]]" afzaalshamraiz
Future Releases 40252 Redirection during activation Plugins normal normal Future Release defect (bug) new 2017-03-24T19:33:28Z 2024-02-29T10:56:50Z "for example, i select several plugins (which are deactivated) at once and click BULK ACTIVATE...
if any of plugin has custom filter `add_action( 'activated_plugin', ...` (inside where it redirect to plugins settings page after activation), then those plugins are not activated in bulk, instead while that plugin's turn comes, it is activated and the page is redirected to that plugin's url..
i think there is no easy solution... you should create a new hook, that will be named i.e. `redirect_to_after_activation` which will be solely dedicated and used for redirection, while that plugin is activated individually.
" tazotodua
Future Releases 41140 Theme/plugin editing: Long file list goes off page Plugins normal normal Awaiting Review defect (bug) new 2017-06-23T18:01:40Z 2017-06-23T18:25:28Z "If you have a long list of files, the list goes a long way down. Could we paginate? Have a 'scrollbox' (probably bad idea)? Have some better way of showing these?
[[Image(https://cldup.com/91gj2sr2jz.png)]]
" karmatosed
Future Releases 45853 Videos embedded in a plugins readme.txt does not load while searching for a plugin in an actual WP install (not wp.org) Plugins 5.0.2 normal normal Awaiting Review defect (bug) new 2019-01-07T16:06:38Z 2022-03-07T15:37:45Z "If you embed a video within your plugins readme.txt file it only shows the video on the wp.org website, videos do not load when you're searching for a plugin via an actual WordPress install. In addition, if you install a plugin and click on ""View Details"" to learn more about the plugin, the video also does not load here either. Inspect element shows an empty span tag:
{{{
}}}
This should either embed the video or at the least display a link to the video.
Here's an example plugin for reference: https://wordpress.org/plugins/simple-icons/" thememason
Future Releases 48656 Views details blocked by SAMEORIGIN Plugins 5.3 normal major Awaiting Review defect (bug) new 2019-11-15T19:43:41Z 2019-11-17T17:19:12Z "Hello,
On multisite, the ""view detail"" link on this page /wp-admin/plugins.php (in each plugin) is bloked by an error
{{{
Chargement refusé par X-Frame-Options : « SAMEORIGIN » à l’adresse « https://example.com/wp-admin/network/plugin-install.php?tab=plugin-information&plugin=loco-translate& », le site ne permet pas l’utilisation de cadres multiorigines depuis « https://example.com/wp-admin/plugins.php ».
}}}
" sebastienserre
Future Releases 50850 When the deactivate_plugins() function is called in the ABSPATH/wp-admin/includes/plugin.php file, the is_plugin_active_for_network() conditional tag always returns true when the active_sitewide_plugins sitemeta option is set to 1 Plugins 5.4.2 normal normal Awaiting Review defect (bug) new 2020-08-05T01:28:10Z 2020-09-08T21:11:46Z "On multisite during the process of activating a plugin across the network (sitewide plugin activation), I noticed that if the activation process is not successful or if errors are triggered, the `active_sitewide_plugins' sitemeta option will be set to 1 and this causes the **is_plugin_active_for_network()** conditional tag to return true when called within the **deactivate_plugins** function, which is so untrue.
Also, when on the admin or network `plugins.php` screen, the **deactivate_plugins()** function triggers the following error becuase the **$plugins = get_site_option( 'active_sitewide_plugins' )** code doesn't return the correct type (array):
{{{
Fatal error: Uncaught Error: Cannot unset string offsets in ABSPATH\wp-admin\includes\plugin.php on line 779
}}}
Futhermore, after exploring the error, I found that since the **active_sitewide_plugins** sitemeta option is set to 1 and the **array_keys()** function is used to extract the plugin basenames into a new array and merged with non-sitewide activated plugins, then when used in the **foreach()** loop, this will always return true.
{{{#!php
upload plugin and you try to insall a .php file instead of a zip file you get this error message: Abort class-pclzip.php : Missing zlib extensions.
This error message is bad, zlib extensions are not missing, the file type is wrong.
Also this message is missing translation support (I might be wrong on this)." jnhghy
Future Releases 60783 plugins_api() and parameters audrasjb* Plugins normal normal 6.6 defect (bug) accepted 2024-03-15T13:57:13Z 2024-03-18T04:04:23Z "Hello there, (running WP6.5+, might be useless to say)
By reading the doc for `plugins_api()` you can read that some fields are included or not in the response, the doc says ''""$fields: Array of fields which should or should not be returned.""'' and then you have a list of fields, some true some false by default.
Let's try it, this is my simple request on my plugin on repo:
{{{#!php
'secupress',
'fields' => []
)
);
}}}
Since the doc says ''""@type bool $contributors Whether to return the list of contributors. **Default false**.""'' I should not receive this field.
Let see the response:
{{{#!php
string(37) ""SecuPress Free — WordPress Security""
[""slug""]=>
string(9) ""secupress""
[""version""]=>
string(7) ""2.2.5.1""
[""author""]=>
string(44) ""SecuPress""
[""author_profile""]=>
string(41) ""https://profiles.wordpress.org/secupress/""
[""contributors""]=>
array(4) {
...
}}}
There is. Same for those params that are ""false"" by default but still included: ""sections"", ""versions"", ""reviews"", ""banners"", ""active_installs"" (I don't know for ""group"", can't get the thing).
Also there is one param that is not affected by the arguments passed and always returned: ""num_ratings"".
Finally there is some fields that are always returned where the doc can't help, I tried to use they array keys to cancel them, no chance, this is : ""author', ""author_profile"" (those 2 may be forced, that's ok), ""support_threads"", ""support_threads_resolved"", ""upgrade_notice"", and ""requires_plugin"" (I know it's new, but don't forget it)
The patch may have to be done on w.org since this is the site that add too much data and to not respect the passed parameters.
Thanks for your time" juliobox
Future Releases 55101 pre_set_site_transient_update_plugins was called from deactivated plugin while uninstall. Plugins 5.9 normal normal Awaiting Review defect (bug) new 2022-02-07T08:59:01Z 2022-02-13T12:45:42Z "I have this sample plugin.
{{{#!php
hooks();
}
static public function uninstall()
{
error_log('uninstall method was called on ' . date('Y-m-d H:i:s'));
}
}
$ATest = new \ATest();
$ATest->run();
}}}
When I click on delete plugin (the plugin is already deactivated), the `pre_set_site_transient_update_plugins` hook was called.
To reproduce.
1. Copy and paste the sample code above to new plugin file. For example test.php
2. Go to your WordPress > admin > plugins.
3. Activate this plugin.
4. Go to your DB, delete `_site_transient_update_plugins` option name in `options` table to make sure that this hook will be call next time.
5. Reload admin plugins page. This hook will be called as normal process because plugin is activated. The error log will be write to **wp-contents/debug.log** file.
6. Deactive this plugin.
7. Maybe try to reload plugins admin page again. The hook will not called from this plugin, no error log were write. This is correct.
8. Click on delete this plugin.
9. The error log were write because this hook is called while it is on uninstall process. This is incorrect!! It should not be called.
WordPress 6.0-alpha-52682" okvee
Future Releases 39474 """Update plugins"" button also updates pending translations without express consent, while there's a specific button for that (Update translations)." Plugins 4.7 normal normal Awaiting Review enhancement new 2017-01-04T22:04:19Z 2023-07-09T16:12:47Z "Usability problem in wp-admin/update-core.php
If there are at least one pending plugin update AND one pending translation update, the label of the button ""Update Plugins"" should be ""Update Plugins AND Translations"", because that's exactly what it does: it updates BOTH the plugins AND the translations.
Otherwise, if the label ""Update plugins"" is to remain as it is now, then it should ONLY update the plugins (and not also the translations, because there's already a specific button for that action).
(Windows 7 Pro 64bit + Firefox 50.1.0 64bit + WordPress 4.7.0)
" Carlos ASR Dias
Future Releases 43671 'Search installed plugins' on plugins page unneccesary and possibly misleading, possibly replace it for 'search new plugins' Plugins 4.9 normal normal Awaiting Review enhancement new 2018-04-01T11:46:07Z 2019-05-07T22:12:30Z "Hello!
I consider 'Search installed plugins' input on plugins page unneccesary and possibly misleading. Very often I use this input to search for plugin that I want to install.
Also I don't know whether there is any reason at all to have search for installed plugins, because usually user just scrolls window to check this and rarely can remember name of the plugin etc.
It would be cool to replace this input with input for searching for new plugins (or totally remove it).
Thanks!" Vishnja1
Future Releases 58370 Add 'Activate' button to View details modal Plugins 6.3 normal normal Future Release enhancement new 2023-05-21T19:46:26Z 2024-01-29T20:19:05Z In [https://wordpress.slack.com/archives/CULBN711P/p1684696308556829?thread_ts=1684691032.713709&cid=CULBN711P| discussions] with @azaozz regarding the Plugin Dependencies feature, it was thought that a button in the View details modal would provide for a smoother UX. This way the user wouldn't need to go to a different page to activate an installed plugin. afragen
Future Releases 45439 Add a link to plugins/themes details in dashboard to translation page Plugins normal normal Awaiting Review enhancement new 2018-11-28T06:48:19Z 2019-01-16T06:50:09Z "Currently locale translators don't get credit for their contributions, I know there are pages in translate.wp.org, But WordPress users usually can't reach those pages easily, because they install plugins directly via dashboard
I think we can add a link in dashboard plugin details, a link to current language translators page,
For example: if our current language is Persian, for woocommerce plugin, we can add a link (Translation Team, Help us!) to related Persian translators page:
https://translate.wordpress.org/locale/fa/default/wp-plugins/woocommerce
And the link can be auto generate for any other active language in dashboard
This help users to find that area easily and encourage them to participate in those translations, And also help plugin/themes developers to get more translation for their product, And will give a credit to that translators
I think the dashboard credit would make more sense
So we can have more plugin translation updates and more contributors
This can be also for Themes
" parsmizban
Future Releases 54778 Adding Filters in UI (Plugins) Plugins 5.8.3 normal normal Awaiting Review enhancement new 2022-01-10T10:50:03Z 2023-05-20T06:47:16Z "**Problem:**
Searching for any particular plugins shows the related plugins based on the keywords, out of which some old and unmaintained plugins also appear in the results which might be a vulnerability issue for their users.
**Possible Solution:**
Adding Filters to categorize the results for searchers query:
1. Latest to Oldest
2. Oldest to Latest
3. Most Downloads
4. Least Downloads
5. Highest Rated
6. Lowest Rated
**Exception:**
Adding the filters, rather than completely changing the way the results appear (such as: showing the most updated results first, etc) would be more useful, and it would be more fair for all publishers/plugin-maintainers.
**Possible Improvements:**
Reducing the risk of downloading incompatible old, untrusted, unmaintained plugins leading to vulnerability or other risks in website (business :D)." ritvikux
Future Releases 40475 Additional way to add plugin by indicating URL|slug of plugin page Plugins normal normal Awaiting Review enhancement new 2017-04-18T18:28:43Z 2021-07-28T21:38:15Z "Today, when using the UI to add a new plugin, I only have two basic options.
• I may either upload the plugin as a zip-file, which somehow hasn't got into my behavior yet. (But soon may, if the issue described here doesn't get a nice solutuion.)
• Or I can search for Keyword|Author|Tag
I'd like to have a third way of finding the plugin. Reason is I may already know the exact plugin slug (or plugin URL).
One way might be to add one more option in the drop-down, to make it Keyword|Author|Tag|Plugin URL
And if the user selects the option Plugin URL, then we should disregard anything up to last occurrence of ""/"" and then use that last part as the plugin slug." tobifjellner
Future Releases 20578 Allow users to delete a plugin without uninstalling Plugins normal normal Future Release enhancement reviewing 2012-05-01T01:18:35Z 2021-08-27T15:40:46Z Sometimes, a user may need to delete plugin files without deleting all the plugin data. scribu
Future Releases 40971 Clicking More Details in Add Plugins page shows old version of Plugin Directory page Plugins 4.8 normal normal Awaiting Review enhancement new 2017-06-09T11:09:29Z 2017-06-12T13:26:05Z "If you click the More Details link below the Install/Activate button of any plugin listed on the Add Plugins page, it opens a modal with the corresponding page in the plugin directory. However, in 4.8 this still uses the old styling, not the new plugin directory theme that was launched recently.
If this was only a visual thing it wouldn't be much of an issue, but the old style also displays different statistics than the new design. It would be nice to bring this in line with what it looks like on wordpress.org/plugins." hedgefield
Future Releases 40804 Display important informations in plugins list Plugins 4.7.5 normal normal Awaiting Review enhancement new 2017-05-18T17:27:03Z 2017-05-18T17:37:33Z Showing last plugin update date in plugins list and compatibility with current wordpress version may quickly give a look if any plugins are no more up to date by his creator. xsweb
Future Releases 31192 "Enable sorting of search results on ""Add Plugins"" admin page" Plugins 4.1 normal normal Awaiting Review enhancement new 2015-01-31T20:59:57Z 2021-07-30T12:19:08Z "Searches on the ""Add Plugins"" page often return thousands of results in no particular order, making it very hard to find high-quality plugins (I generally end up having to use Google to hunt down plugins).
Often, plugins that are used by hundreds of thousands or millions of users are placed far below obscure, outdated, unmaintained plugins that are used by a few thousand people. It would be very helpful if there was a dropdown menu that enabled you to sort the search results by things like ""Most Downloads"", ""Highest Rated"", ""Last updated"", etc. This way, I could make sure that widely used, actively maintained plugins were at the top of my list, and quickly find what I need.
A great example search if you wish to see the type of problem I'm addressing is ""Content Slider"". The first page of results is populated by many unmaintained/low-quality slider plugins, and then when you get to the second page of results you find several actively maintained high-quality plugins with hundreds of thousands of users (Easing Slider, Meta Slider, etc).
Thanks!" tayjes16
Future Releases 16838 Excluding Akismet from Future WordPress Releases / Plugin Directory Plugins 3.1 normal normal Awaiting Review enhancement reopened 2011-03-12T02:49:31Z 2024-03-02T21:23:45Z "This issue was more mute prior to the shift in Akismet's 'keying', which previously just required you to have a free WP.com account to hook up to the API. Since Akismet now charges for access, or solicits fees by default for Personal website activations (when you go through the sign up process, it defaults at something like $5 with a slider that lets the person choose how much they want to pay). It's not immediately apparent that 'free' is an option within the slider, but that's not the primary issue here - I digress :)
The issue is that Akismet is no longer free for EVERYONE. It's only an option for Personal sites, and in certain cases. What if someone has multiple personal sites? They click that option and they are categorized into a Professional plan, which has a fee associated to it.
Since the plugin directory itself has officially been described (and in practice) to have a restriction that explicitly prohibits functionality be disabled from a plugin behind a Paywall, why wouldn't that apply in this case?
I certainly don't mean to rock the boat, but this brings up a number of important questions.
The plugin has a potentially confusing signup process that does lead people otherwise categorized as Personal site owners, to pay for the service while it's advertised under the plugin description that it's 'free' for Personal use. This produces a grey area of sorts, which puts this plugin under a sort of Paywall, which could be alleviated in a minor way by modifying the signup process. It still doesn't clear the air on how the Paywall for professional sites can be officially allowed versus a full Paywall. Perhaps someone who officially represents the WP.org Plugin Directory or WP.org can clarify the undocumented (not shown at http://wordpress.org/extend/plugins/about/) Paywall restriction for future reference.
Besides the plugin itself now finding itself in this grey area, it's bundled with WordPress by default and presents what could be described as an unfair market advantage for Automattic's product offering, sort of like anti-competitive business practices. I feel weird saying that, but I'm not throwing stones here. Just saying what it feels like, even if the core developers say it should be included, I'd say it now doesn't cover the 70/30 rule (or whatever the amount is).
If Akismet is allowed to remain in the plugin directory as is, and within WP core, then would other plugins be allowed to be included in the plugin directory that follow the same Paywall model and signup process?" sc0ttkclark
Future Releases 60495 "Following ""plugins_list"": Add a filter in get_views() in class-wp-plugins-list-table" Plugins 6.3 normal normal 6.6 enhancement new 2024-02-11T23:21:34Z 2024-02-13T12:55:21Z "Since WP 6.3 there is a new filter named ""**plugins_list**"" added in #57278
Using this filter, we can now add a new array key like ""''my_plugins''"" and set some plugins in here.
""''my_plugins''"" is now considered as a ""''status''"" by the WP behavior, like ""''all''"", ""''recently_activated''"", etc, the whole list is here : https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-plugins-list-table.php#L49
We can also delete (unset()) one of them if we want too, (like hide the must-use plugins or the ""''upgraded''"" tab)
So now WordPress will go through each iteration of the array keys (aka statuses) and create a tab link to get a new view, here : https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-plugins-list-table.php#L495
**What's the issue here.**
WP will try to display a ""text"" for each iteration, if there is no case in the switch, it will still display the $text var, and indeed the last used value, aka incorrect value.
But remember line 49, WP sets a list of allowed statuses, this shouldn't be there anymore since the new filter '''plugins_list''' allow us to add ANY status using an array key. We have to remove line 49 and modify line 52 to remove the in_array() stuff.
Still need a check to keep the same behavior when a wrong status is loaded? it's already done line 315: https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-plugins-list-table.php#L315
Now to get the correct translated label in get_views() we need a hook line 586 like:
{{{#!php
(%s) ';
break;
}
}}}
Now please test in WP 6.3.x, using this:
{{{#!php
if this is high, it must be a quite good plugin, otherwise not so many websites would use it
- in plugin repository since -> plugin can be fairly new and therefore not yet have a high number of active installs
- last updated -> to filter out plugins that are not regularly updated
- rating
I also would like to see that 'last updated' would be added to the info for a single plugin search result (where now only the number of active installs, developer and 'tested with' is displayed), so you can see right away if a plugin is well maintained or not.
I would also suggest that plugins which have not been updated or maintained at all for over a year will be marked; for example with a traffic light: orange for 'updated more than a year ago', red for 'updated more than two years ago' (and off course green for 'updated less than a year ago').
I think the least plugin writers can do is test their plugin for compatibility with each new WP version and update this information if the plugin still works fine. Maybe make this mandatory if you want your plugin to be included in the plugin reporitory?
I hope this will also encourage all plugin writers to maintain their plugins better. My goal is to separate the plugins of good quality and high developer dedication from the plugins that are less well maintained. And make this visible to users.
I'm looking forward to a response from the core developers community. Thanks!" prodefu
Future Releases 38743 Introduce add_action_once() Plugins normal normal Awaiting Review feature request new 2016-11-10T10:26:25Z 2018-03-23T20:04:13Z "Hi there.
I was wondering if noone ever needed to add a callback to some action or filter hook only if it hasn't been added (potentially by someone else) before.
Possible use cases are:
* only add `my_callback` if it hasn't been added before, no matter with what priority;
* only add `my_callback` if it hasn't been added before with a specific priority.
Naming-wise, I'd suggest `add_action_once()` and `add_filter_once()`, respetively, although one could be more verbose (e.g., `add_action_if_not_exists()` etc.).
Here is a possible implementation of this:
{{{#!php
posts as $post ) {
$id = get_post_thumbnail_id( $post->ID );
if ( $id ) {
$thumb_ids[] = $id;
}
}
}}}
To this
{{{#!php
posts as $post ) {
if (is_object($post)) {
$post = $post->ID;
}
$id = get_post_thumbnail_id( $post );
if ( $id ) {
$thumb_ids[] = $id;
}
}
}}}
in /wp-includes/post-thumbnail-template.php line 101
" tomcent
Future Releases 28461 Add a fallback parameter to get_the_post_thumbnail() to find images Post Thumbnails 3.9 normal normal Awaiting Review enhancement new 2014-06-05T06:55:46Z 2017-02-06T12:42:44Z "In the 3.6 cycle, there was a lot of talk about grabbing various media types from the content for post format handling. #22960 is basically the end of that conversation, and includes a lot more stuff. #23593 is also related, but ended up getting closed in favor of #22960, which died with the post format UI.
Within that realm, the `get_the_image()` function from Justin Tadlock's Get The Image (https://github.com/justintadlock/get-the-image) plugin came up a bit. It's a super handy function. Although, it was mostly discussed as a piece of post formats. You can see it's got a whole bunch of functionality, but I'm mostly interested in its ability to find a fallback image in the content.
I'd like to see something like `get_the_image()` be able to be called via some kind of parameter within `get_the_post_thumbnail()` and therefore `the_post_thumbnail()`.
Justification: There are times in building out a theme where you'd want the **exact** featured image or none at all (like a big wide header banner or something), but other times it's great to have any 'ole fallback, like a more traditional square thumbnail on blog archives.
In these situations, often which are theme driven, and not custom site driven, it'd be great for the theme developer to be able to assign fallback rules when they call `the_post_thumbnail` itself. Whether that's through a new parameter, or maybe just an additional key / value for 'fallback' to the `attr` parameter... I don't know. But for a theme (where most image sizes are registered anyway) to be able to define fallback behavior for those same image sizes would be powerful." krogsgard
Future Releases 40469 How to remove full size image path from srcset and more intelligent choices in srcset candidate list Post Thumbnails 4.7.3 normal normal Awaiting Review enhancement new 2017-04-16T22:41:15Z 2017-06-28T12:38:06Z "On our site, we have a number of image sizes registered in WP, in addition to the default ones, for a variety of purposes. A large one to fill the width of our column, smaller ones for some custom image output, etc.
The result of this is a sloppy srcset candidate list filled with URLs that may make no logical sense in a particular location in the markup. WP does have an upper size limit to prevent giant images from being in srcset, and also matches aspect ratio, but nothing else.
I have been able to hack together a filter using `wp_calculate_image_srcset_meta` to unset various sizes in the `sizes` array. But if the full size of the image is smaller than the `max_srcset_width` parameter, it still gets included, and there should be some way to remove it. The full size of the image is not part of the `sizes` array in image_meta.
It actually points to a larger issue with WP srcset implementation, which is that is mindlessly fills the HTML with srcset candidates that in many instances would never be used, adding lots of excess markup that a developer wouldn't add.
For example, we have a 300px wide sidebar where we output an image. The sidebar is never larger than 300px, and even is that size in our responsive site on mobile. The srcset outputs a 150px, 200px, 300px, 600px, 768px and 1240px, based on the sizes registered in our installation and the built-in ones. Logisitically, all that is really needed for this layout is 300px and probably the 600px version. We have all sorts of examples like this where the srcset includes either smaller or larger sizes than are physically possible in a given layout.
Obviously WordPress cannot know how a site is styled, but it feels like there needs to be a more robust way of dealing with this. It is not a great feature to load up on unneeded markup.
As a theme developer, I would like the ability to constrain the srcset candidate list in an intelligent way each time I output img tags into the markup. It is easy for me to say ""at this location, this image will never be smaller than 300px, so don't give me anything smaller, and will also never be bigger than 300px, so only go up to a 2x version and skip anything larger.
I'm guessing this is exacerbated by a variety of themes and pluging that may load up on extra registered image sizes as well." lisota
Future Releases 56056 Specify a Custom Array of $sizes for `wp_get_attachment_image` to Reduce HTML Bloat Post Thumbnails normal normal Awaiting Review enhancement new 2022-06-23T15:44:50Z 2022-10-12T18:04:54Z "Plugins and the theme can specify multiple thumbnail sizes. Using `wp_get_attachment_image` provides a modern solution to responsive image sizes, however, it does not currently account for reducing the bloat to all the registered thumbnail sizes that are added by plugins / theme.
Therefore a proposal is to allow a custom list of thumbnails to use, this can, for example, be specified as:
{{{#!php
' in the extended content, which prevents 'the_content' filter from working correctly.
Steps to replicate:
{{{#!php
', '', $post);
}}}
" joewebber
Future Releases 41128 404 Page not found after using same URL in post / page Posts, Post Types 4.8 normal normal Awaiting Review defect (bug) new 2017-06-22T15:40:28Z 2017-06-22T17:13:21Z "Starting from a clean Wordpress 4.8 installation.
1. Configure permalinks to: http://domain.com/post-title/
2. Create a post with title 'new'
3. Remove the post with title 'new' to trash
4. Create a new page with title 'new'
5. Remove post 'new' from trash (not necessarily, both cases result in 404)
6. The page you created trows a 404 due to a database error since it has two different objects with the same URL, though different objects.
" jpgos
Future Releases 41324 Action of password-protect form. Posts, Post Types normal normal Awaiting Review defect (bug) new 2017-07-14T12:38:49Z 2017-07-14T12:43:17Z "The default form action too-easily (I think just two submissions of a blank or incorrect password) loads wp-login.php?action=postpass with a 'service unavailable' message').
Simple validation to ensure correct password can prevent this.
" gulliver
Future Releases 53195 Add $post or $post_id to the quick_edit_custom_box hook Posts, Post Types normal normal Awaiting Review defect (bug) new 2021-05-12T11:17:34Z 2021-05-12T11:17:34Z "Right now when you're adding a custom box to quick edit, you can't set an existing value without using JavaScript, cause you don't have acces to the post. For a more elaborate explanation, see the User Contributed Notes, top one by stevenlinx: https://developer.wordpress.org/reference/hooks/quick_edit_custom_box/
It would be more elegant if we could just use the post within the hook I think." tomjdevisser
Future Releases 40500 Adding custom capabilities to a custom post type seems to break permalink link on post edit screen Posts, Post Types 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-20T16:28:46Z 2019-11-27T20:38:26Z "Added custom capabilities to a wordpress custom post type to be used in conjunction with a role scoper plugin ....
see: https://www.dropbox.com/s/7gzvma9t3lm028j/Screenshot%202017-04-20%2010.27.15.png?dl=0)
... seems to make the permalink link that shows up on the post edit screen, beneath the title, non-functional (ie, no URL is actually outputted). Also does not have the ""view [custom post type]"" link that typically appears in the black wordpress admin toolbar.
Otherwise, everything works as designed.
Confirmed on two separate hosts with plugins disabled and default theme.
Confirmed that removing custom capabilities fixes the issue.
Confirmed that adding capability using alternative method of simply
'capability_type' => array('print', 'prints'), also has the same result. " finitejest
Future Releases 35538 "AllPosts page UI: link ""All"" has incorrect color" Posts, Post Types 4.4.1 normal trivial Awaiting Review defect (bug) new 2016-01-19T23:15:48Z 2023-07-09T20:45:45Z "STEPS TO REPRODUCE:
1) Log in (administrator), remove all posts.
2) Create new post. Go to AllPosts page.
3) Remove post to trash by clicking ""Trash"" menu item.
EXPECTED RESULT: ""All (0)"" link color #000
ACTUAL RESULT: ""All (0)"" link color #0073aa" antonrinas
Future Releases 31416 An accessibility issue with the Publish metabox Posts, Post Types 4.1.1 normal normal Awaiting Review defect (bug) new 2015-02-22T22:03:33Z 2018-12-09T20:28:05Z "Taking a closer look at the Publish metabox for posts I realise that it has what I would call a bug. Take a look at the image attached. It tells me a post is published, while it's still asking for confirmation to be published. This screen shows up when first a post is set to private -and so gets published privately- and next is set to public, without hitting the 'Publish' button.
The post is actually published privately, which should show up as it's status, as it normally does. It tells me though it's published (which impies it should be published publicly).
I stumbled upon this, while I was searching for a more intiutive solution for inexperienced posters on one of my sites to post privately. I found two threads in forums which adress this issue:
https://wordpress.org/support/topic/how-to-set-new-post-visibility-to-private-by-default?replies=14
http://wordpress.stackexchange.com/questions/118970/set-posts-of-a-custom-post-type-to-be-private-by-default
Neither of threads mention (or seem to be aware?) of this shortcoming, while both try to solve the same issue I'm having. I question whether this problem can be solved, while the Publish metabox has such shortcomings.
I hope that by fixing this little bug, it might actually be possible to create a more accessisble Publish metabox for guests on a site, maybe by a hack or plugin, but preferably within the WP core files.
[[Image(http://www.basbva.nl/wp-content/uploads/2015/02/publish-metabox-bug.jpg)]]" basbva
Future Releases 56728 Can we fix featured image view issue when allowed SVG image type? Posts, Post Types 6.0.2 normal normal Awaiting Review defect (bug) new 2022-10-04T09:17:51Z 2022-10-04T09:17:51Z "Hi,
I am facing issue when allowing to upload SVG image on wordpress media.
You can see mentioned SS.
Thank you " sumitsingh
Future Releases 52389 Consistently check for non-empty post ID in attachment functions SergeyBiryukov* Posts, Post Types normal normal Future Release defect (bug) accepted 2021-01-28T10:53:31Z 2021-02-17T23:54:41Z "Background: #50679, #52196.
As a result of the changes in [49084] and [50039], `wp_get_attachment_metadata()` conditionally calls `get_post()` if the attachment ID is not passed:
{{{
$attachment_id = (int) $attachment_id;
if ( ! $attachment_id ) {
$post = get_post();
if ( ! $post ) {
return false;
}
$attachment_id = $post->ID;
}
}}}
This is not really consistent with other attachment functions, which just always call `get_post()` unconditionally:
{{{
$attachment_id = (int) $attachment_id;
$post = get_post( $attachment_id );
}}}
Let's bring some consistency here, there is no reason for these minor differences.
This applies at least to:
* `wp_get_attachment_metadata()`
* `wp_get_attachment_url()`
* `wp_get_attachment_caption()`
* `wp_get_attachment_thumb_file()`
* `wp_get_attachment_thumb_url()`" SergeyBiryukov
Future Releases 40079 Content of static pages does not show when you have a count_post in the theme Posts, Post Types 4.7.3 normal normal Awaiting Review defect (bug) new 2017-03-09T14:08:13Z 2017-03-09T14:14:38Z "in page.php when you have elsewhere:
{{{#!php
publish;
$numberofcats = wp_count_terms('category');
echo "" "".$posts."" articles in "".$numberofcats. "" categories:
"";
?>
}}}
then the content inside the loop of a static page will display the content of an article. well for me i fixed it with:
{{{#!php
"".$count_posts->publish."" articles in "".$numberofcats. "" categories: "";
?>
}}}
I am testing it on a custom theme but with plain code you will see this too.
tested it on a plain installation with custom theme in page.php:
{{{
Categories:
publish;
$numberofcats = wp_count_terms('category');
echo """".$posts."" articles in "".$numberofcats. "" categories:
"";
?>
}}}
" devlink1337
Future Releases 20438 Custom Post Types with Post Format support aren't registered against post_format taxonomy Posts, Post Types normal normal Awaiting Review defect (bug) reopened 2012-04-13T16:56:40Z 2022-05-13T22:06:11Z "When a custom post type adds support for {{{post-formats}}}, this doesn't actually register the {{{post_format}}} taxonomy for the post_type.
Here's a quick test:
{{{
add_action( 'init', function() {
register_post_type( 'not-post', array( 'supports' => 'post-formats' ) );
global $wp_taxonomies;
var_dump( 'post supports post_format:', in_array( 'post', $wp_taxonomies[ 'post_format' ]->object_type ) );
var_dump( 'not-post supports post_format:', in_array( 'not-post', $wp_taxonomies[ 'post_format' ]->object_type ) );
} );
}}}
The {{{post_format}}} taxonomy doesn't get returned when {{{get_object_taxonomies}}} is called for the custom post type and one side-effect of this is that the {{{post_format_relationships}}} cache does not get flushed by {{{clean_object_term_cache}}} leading to stale values when a post format is changed.
(The {{{post}}} post_type is immune to this because core registers the {{{post_format}}} taxonomy with it.)
When a post_type adds support for post-formats, an explicit association should be made between the post_type and the {{{post_format}}} taxonomy." batmoo
Future Releases 41573 Editor and Quick Edit display the slug of a page selected as static front page Posts, Post Types 4.8.1 normal normal Awaiting Review defect (bug) new 2017-08-06T16:52:02Z 2017-08-06T17:22:26Z "Dear Happy Engineers of WP!
I'm writing about a possible WP BUG after consulting the issue with 'AThemes Support' that tells me there is this possibility... The issue is about a SLUG that can not be cancelled in a ""Homepage"" (it has been a normal page before choosing it as Static Frontpage...)
But please, in order to don't repeat the conversation of the issue, I beg you to read it in the following link where is more clear...
https://wordpress.org/support/topic/slug-homepage-static-page-seo-front-page-wp/
Thank you a lot!
" cekar
Future Releases 47637 Enhance excerpt_remove_blocks to handle more types of group blocks Posts, Post Types 5.2.2 normal normal Future Release defect (bug) reopened 2019-07-02T11:29:15Z 2021-11-22T07:21:00Z "The function excerpt_remove_blocks only considers top-level Blocks in an allowed list for the autogeneration of excerpts. However, since there is now a Group Block in Core (and a lot of self-developed Grouping Blocks out there), this can lead to autogenerated Excerpts being empty although there is plenty of content within the Post.
I propose to add a new filterable ""group blocks"" array, which adds another level to be included in the autogeneration. Additionally, there should be a possibility to register a callback which can be used to generate a custom excerpt dynamically if needed for custom blocks.
Change function excerpt_remove_blocks to this:
{{{
function excerpt_remove_blocks($content){
$allowed_inner_blocks = array(
// Classic blocks have their blockName set to null.
null,
'core/freeform',
'core/heading',
'core/html',
'core/list',
'core/media-text',
'core/paragraph',
'core/preformatted',
'core/pullquote',
'core/quote',
'core/table',
'core/verse',
);
$group_block_excerpt_functions = array(
'core/group' => 'parse_group_block_excerpt',
);
$allowed_blocks = array_merge( $allowed_inner_blocks, array( 'core/columns' ) );
/**
* Filters the list of blocks that can contribute to the excerpt.
*
* If a dynamic block is added to this list, it must not generate another
* excerpt, as this will cause an infinite loop to occur.
*
* @since 4.4.0
*
* @param array $allowed_blocks The list of allowed blocks.
*/
$allowed_blocks = apply_filters( 'excerpt_allowed_blocks', $allowed_blocks );
$group_blocks = apply_filters('excerpt_allowed_group_blocks',$group_block_excerpt_functions);
$blocks = parse_blocks( $content );
$output = '';
foreach ( $blocks as $block ) {
if(in_array($block['blockName'],$group_blocks,true)){
//We have a group Block with no extra excerpt function
$output.= parse_group_block_excerpt($block,$allowed_inner_blocks);
} elseif(in_array($block['blockName'],array_keys($group_blocks),true)){
//The Block registered a custom callback for autogenerating an Excerpt
$output.=call_user_func($group_blocks[$block['blockName']],$block,$allowed_inner_blocks);
} elseif( in_array( $block['blockName'], $allowed_blocks, true ) ) {
if ( ! empty( $block['innerBlocks'] ) ) {
if ( 'core/columns' === $block['blockName'] ) {
$output .= _excerpt_render_inner_columns_blocks( $block, $allowed_inner_blocks );
continue;
}
// Skip the block if it has disallowed or nested inner blocks.
foreach ( $block['innerBlocks'] as $inner_block ) {
if (
! in_array( $inner_block['blockName'], $allowed_inner_blocks, true ) ||
! empty( $inner_block['innerBlocks'] )
) {
continue 2;
}
}
}
$output .= render_block( $block );
}
}
return $output;
}
}}}
Add a function parse_group_block_excerpt
{{{
function parse_group_block_excerpt($block,$allowed_blocks){
$output = """";
if(!empty($block['innerBlocks'])) {
foreach($block['innerBlocks'] as $inner_block){
if('core/columns' === $inner_block['blockName']){
$output .= _excerpt_render_inner_columns_blocks( $inner_block, $allowed_inner_blocks );
continue;
}
// Skip the block if it has disallowed or nested inner blocks.
foreach($inner_block['innerBlocks'] as $inner_inner_block){
if (
! in_array( $inner_inner_block['blockName'], $allowed_inner_blocks, true ) ||
! empty( $inner_inner_block['innerBlocks'] )
){
continue 2;
}
}
}
}
return $output;
}
}}}
After that, a custom block can register itself as an group block just by using
{{{
add_filter('excerpt_allowed_group_blocks','add_my_awesome_group_block_to_excerpt');
function add_my_awesome_group_block_to_excerpt($allowed_blocks=array()){
$allowed_blocks[] = 'my-awesome/groupblock';
return $allowed_blocks;
}
}}}
or even by using a custom excerpt function for dynamic blocks by using
{{{
add_filter('excerpt_allowed_group_blocks','add_my_awesome_group_block_to_excerpt');
function add_my_awesome_group_block_to_excerpt($allowed_blocks=array()){
$allowed_blocks['my-awesome/groupblock'] = 'my_awesome_group_block_custom_excerpt';
return $allowed_blocks;
}
}}}
(I hope i did this right as this is my first ticket)" kuchenundkakao
Future Releases 39651 Find Posts modal does not show post-type labels correctly Posts, Post Types 4.7.1 normal normal Future Release defect (bug) new 2017-01-20T11:59:21Z 2017-01-21T02:22:58Z "The screenshot shows the output of four different posts in the '''Find Posts Modal'''. The last two post are correct, at the first and second post the post-type-label (e.g. cpt_example) is missing. The problem is the post-type parameter ""''public''"", if it is set to ""''false''"" the label will not be shown AND you will get the following PHP-Notice (if DEBUG is true):
{{{
Undefined index: cpt_example in ... /wp-admin/includes/ajax-actions.php on line 1803
Trying to get property of non-object in ... /wp-admin/includes/ajax-actions.php on line 1803
}}}
At the following code (1745 ff.) you will notice the reason of this issue: '''$post_types''' only includes '''public posts'''
{{{#!php
true ), 'objects' );
^^^^^^^^^^^^^^^^
}}}
The output of this modal shows all posts (public and unpublic), so i don't think that this ""filter"" was set for security reasons. In my opinion it must either show all posts correctly with their labels (which would be great) or it must suppress all ""unpublic"" posts completely. " arkonisus
Future Releases 18264 Future private posts listed as already published with future date specified Posts, Post Types normal normal Awaiting Review defect (bug) new 2011-07-27T00:05:27Z 2019-05-23T19:33:38Z "Setting a post to private, and scheduling it for some future date or time, results in the stamp that the post was ""Published on (future date)"" in the publish module.
The discussion on tickets #5608 and #9136 suggests that all private posts are published immediately (and privately), and that this is intentional. So, it's misleading and confusing to report that it already was published on some future date.
In source:trunk/wp-admin/includes/meta-boxes.php#L163, I suggest we replace:
{{{
else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published
$stamp = __('Published on: %1$s '); }
}}}
with:
{{{
else if ( 'publish' == $post->post_status ) { // already publicly published
$stamp = __('Published on: %1$s ');
} else if ( 'private' == $post->post_status ) { // published privately
$stamp = __('Published privately'); }
}}}" chrisrudzki
Future Releases 47072 Hierarchical post types missing attributes meta box if post type doesn't support 'page-attributes' or have templates Posts, Post Types 5.1.1 normal minor Awaiting Review defect (bug) new 2019-04-29T17:11:09Z 2019-04-29T17:11:09Z Setting the hierarchical argument to true in the register post type function doesn't enable the post parent automatically. In order for this meta box to show up you must also enable post type support for page-attributes or the post type must have templates. I would think the post parent dropdown should be visible by default if the post type is hierarchical. This applies to both the Classic and Gutenberg editor. natereist
Future Releases 59664 I have tested beta 6.4 version and some issue on mobile device Posts, Post Types normal normal Awaiting Review defect (bug) new 2023-10-17T20:08:04Z 2023-10-27T20:57:00Z "I have tested WordPress Beta 6.4 RC1 version and some issue.
https://wordpress.slack.com/archives/C02RW657Q/p1697563998445079
Post listing page arrows is not doing anything. For more information see mentioned screenshots and recording.
Also credit page on text color issue.
" sumitsingh
Future Releases 53044 Issue on mobile device when try to post QUICK EDIT. Posts, Post Types 5.7.1 normal normal Awaiting Review defect (bug) new 2021-04-15T18:24:10Z 2021-05-13T16:00:24Z "Hi,
I have setup updated WP latest version 5.7.1. and some UI issue on mobile device when i am trying to quick edit Post on mobile. More information you can see mentioned screenshot.
Thank you" sumitsingh
Future Releases 40786 Leading spaces are added to custom textarea metabox Posts, Post Types 4.7.5 normal normal Awaiting Review defect (bug) reopened 2017-05-17T14:22:55Z 2017-05-17T17:48:51Z "I am using `esc_atr(ltrim(rtrim(br2nl($meta_value))))` to place the value of post meta in textarea metabox I have created in my custom post type.
{{{#!php
""
name=""""
rows=""7"" cols=""80""
style=""width:100%"" maxlength=""""
placeholder=""""
required>
}}}
But whenever I go to edit the post, inside all textarea metaboxes values are pre-loaded with leading spaces (exactly 10 spaces) and additional line breaks!
Also tried `esc_atr(trim(br2nl($meta_value)))` with no avail." subrataemfluence
Future Releases 39624 Misleading warning when editing the page_for_posts page Posts, Post Types normal normal Awaiting Review defect (bug) new 2017-01-18T14:58:00Z 2018-01-15T17:44:25Z "Whilst I was using Twenty Seventeen, I discovered some unusual page locking. It seemed the blog page was locked and I was unable to edit it, despite it being apparently not locked. I've not experienced this before and whilst it feels like a rare experience, I wanted to bring it to attention incase there was something deeper wrong.
[https://cldup.com/qn5iA2HXBR.mp4 Here is the video.]
Along with this, I experienced a further issue that I almost feel needs another ticket but going to throw it in together. I found I could upload and change featured images, despite a page lock. This felt weird and something I'd expect to not be able to happen.
Note: I can't see a pages component so putting under posts but unsure if correct placement." karmatosed
Future Releases 59014 PHP Fatal error in post-template.php Posts, Post Types 6.3 normal minor Awaiting Review defect (bug) new 2023-08-09T03:40:21Z 2023-10-31T00:34:33Z "Hi there,
I hope this email finds you well. Unfortunately, we've recently encountered a critical error that requires immediate attention. This issue pertains to the single page templates, specifically an example like this: https://volunteeringqld.org.au/governance/before-you-join/. The error was not present a week ago, and we're currently grappling to determine its cause. This problem was initially observed on both WP6.22 and WP6.3.
The post https://volunteeringqld.org.au/governance/before-you-join/ connected to a single template php `mytemplate/single-governance-before-you-join.php`, what calls `` what throws error ""There has been a critical error in this website"" and output steam finishes. Log error gives this line:
{{{
""PHP message: PHP Fatal error: Uncaught TypeError: Unsupported operand types: WP_Post - int in /.../wp-includes/post-template.php:330
Stack trace:
#0 /.../wp-includes/post-template.php(247): get_the_content()
#1 /.../wp-content/themes/volunteeringAU/single-governance-before-you-join.php(411): the_content()
#2 /.../wp-includes/template-loader.php(106): include('...')
#3 /.../wp-blog-header.php(19): require_once('...')
#4 /.../index.php(17): require('...')
#5 {main} thrown in /.../wp-includes/post-template.php on line 330', referer: https://volunteeringqld.org.au/governance/""
}}}
To address this, we have applied the following code snippet in `post-template.php` line 330:
{{{
if( ! is_int($page_no)) {
$page_no = 1; // Igor
//echo '';
}
}}}
When echo ancommented it gives
{{{
Array
(
[page] => WP_Post Object
(
[ID] => 5
[post_author] => 7
[post_date] => 2021-10-21 04:24:08
[post_date_gmt] => 2021-10-21 04:24:08
[post_content] =>
[post_title] => Home
[post_excerpt] =>
[post_status] => publish
[comment_status] => closed
[ping_status] => closed
[post_password] =>
[post_name] => home
[to_ping] =>
[pinged] =>
[post_modified] => 2023-05-26 13:50:03
[post_modified_gmt] => 2023-05-26 03:50:03
[post_content_filtered] =>
[post_parent] => 0
[guid] => https://volunteeringqld.org.au/?page_id=5
[menu_order] => 0
[post_type] => page
[post_mime_type] =>
[comment_count] => 0
[filter] => raw
)
[more] => 1
[preview] =>
[pages] => Array
(
[0] =>
Achieving a good transition to the next volunteer who will take over from you has benefits for you, the organisation, and the incoming governance member. Let’s explore things you can do to ensure a good handover.
In this stage of your Governance journey we explore:
)
[multipage] => 0
)
}}}
As you can see, instead of having 1 in `$elements['page']`, it contains a `WP_Post` object of the very first post from the database, even not the one that is displayed.
We are hopeful that this information helps you in resolving the issue and that a solution will be included in an upcoming patch. Please don't hesitate to reach out if you require more details or assistance.
Best regards,
Igor
" volqld
Future Releases 58062 Positioning of custom post type submenu Posts, Post Types 3.1 normal normal Awaiting Review defect (bug) new 2023-04-02T22:48:57Z 2023-04-12T19:21:47Z "''Current Functionality (since 3.1.0):'' One can add a CPT as a submenu of another CPT by setting the `show_in_menu` argument of the `register_post_type()` function as `edit.php?post_type=CUSTOM_CPT_SLUG`. The submenu is then added into the administration menu by way of the `_add_post_type_submenus()` function. When this occurs, the submenu CPT's are displayed in the order the CPTs were registered.
''Problem:'' The current coding prohibits the ordering of CPT submenu items per the programmer's desires in the event CPT registration is unable to be controlled or in the event other submenu pages are added via the `add_submenu_page()` method. This occurs because the call to [https://developer.wordpress.org/reference/functions/add_submenu_page/#source add_submenu_page()] by [https://developer.wordpress.org/reference/functions/_add_post_type_submenus/#source _add_post_type_submenus()] only passes 5 arguments. (The sixth omitted argument is what handles menu positioning.)
''Solution:'' The `menu_position` argument passed to the `register_post_type()` function already exists, and defines a CPT's positioning within a menu. The solution is to incorporate this argument into the core by modifying line 2079 of [https://core.trac.wordpress.org/browser/tags/6.2/src/wp-includes/post.php#L2079 wp-includes/post.php] as follows:
{{{
add_submenu_page(
$ptype_obj->show_in_menu,
$ptype_obj->labels->name,
$ptype_obj->labels->all_items,
$ptype_obj->cap->edit_posts,
""edit.php?post_type=$ptype"",
isset($ptype_obj->menu_position) ? $ptype_obj->menu_position : NULL
);
}}}
" mort1305
Future Releases 31254 Post errors show success borders Posts, Post Types 3.7 normal normal Awaiting Review defect (bug) new 2015-02-06T22:38:59Z 2021-01-18T13:47:57Z Similar to #31241 if a post delete/update action fails a green border shows instead of red. I'm not sure what action should be taken here since failures and successes seem to be able to be displayed in the same message box. ninnypants
Future Releases 43569 Post not updated in backend Posts, Post Types 4.9.4 normal normal Awaiting Review defect (bug) new 2018-03-16T17:18:47Z 2018-03-24T16:45:37Z "Hi, posts are not updated in backend panel.
After edited the post's contend anche clicked the ""Update"", the older version of the post is reloaded." emmeci
Future Releases 46423 Posts on wp-admin page should be ordered by date_gmt and not date Posts, Post Types normal trivial Awaiting Review defect (bug) new 2019-03-05T19:28:23Z 2021-02-08T16:37:24Z "I believe the dates should be ordered by the absolute value of time (ie, UTC time) instead of by timezone.
To illustrate,
Current post sequence
> Two [@ UTC 1900 (my timezone is set to New York UTC-5 1300)]
> One [@ UTC 1800 (my timezone is set to UTC 1800)]
Since 1300 is before 1800. Ordered by my `date`
----
Proposed post sequence
> One [@ UTC 1800 (my timezone is set to UTC 1800)]
> Two [@ UTC 1900 (my timezone is set to New York UTC-5 1300)]
Since 1800 is before 1900. Ordered by absolute `date_gmt`." nickylimjj
Future Releases 49969 "Previewing the page designated as ""latest posts"" shows the frontpage" Posts, Post Types normal normal Future Release defect (bug) new 2020-04-21T11:32:13Z 2024-02-21T18:00:31Z "This continues the discussion from https://github.com/WordPress/gutenberg/issues/2409
**The issue**
* Create two pages (let's call them ""My home"" and ""My posts"")
* Go to customizer and set Homepage to be ""My home"" and Posts page to ""My posts""
* Edit ""My posts"" in editor mode
* Press preview
* Confirm you got ""My home"" instead of ""My posts""
**The root cause**
When you click ""Open preview in new tab"" while editing ""My posts"", Gutenberg redirects to a preview URL like this one:
https://mywpsite.com/?page_id=5&preview_id=5&preview_nonce=12bd60d6f4&preview=true
When you visit that URL, WordPress will load the front page instead of the posts page. This is because class-wp-query.php assumes that posts page is also the front page:
https://github.com/WordPress/WordPress/blob/b4373fafe9b87f75bf9d65e808be8049510dff8b/wp-includes/class-wp-query.php#L1032
Then, when rendering a preview, it substitutes the page_id that was requested with the value of get_option( 'page_on_front' ):
https://github.com/WordPress/WordPress/blob/b4373fafe9b87f75bf9d65e808be8049510dff8b/wp-includes/class-wp-query.php#L1904
If I remove the preview parameters and leave only ?page_id=5, it displays the correct page." zieladam
Future Releases 39942 Restored Post may steal slug to published Post Posts, Post Types 4.7.2 normal normal Awaiting Review defect (bug) new 2017-02-22T15:37:10Z 2017-02-22T15:49:15Z "Steps to reproduce:
1. Create a Post 1 with title ""Post"",
2. Assign the slug 'post' to Post 1,
3. Publish Post 1,
4. Unpublish Post 1 by setting it as 'Draft', then Update,
5. After Update, Trash Post 1,
6. Repeat 1-5 for Post 2,
7. Create a Post 3 with title ""Post"",
8. Assign the slug 'post' to Post 3,
9. Publish Post 3,
10. Now restore Post 2,
11. Open/Reload the edit screen for Post 3,
12. It'll show 'post-2' as slug,
13. Saving/Updating Post 3 will change the slug from 'post' to 'post-2'.
Probably the following functions participate in the issue:
* `wp_add_trashed_suffix_to_post_name_for_post`, which is checking for
{{{
if ( '__trashed' === substr( $post->post_name, -9 ) ) {
}}}
while Post 2 has `post__trashed-2` as post name
* `wp_unique_post_slug`, which is not checking the uniqueness of the slug if the post is `draft`." ziodave
Future Releases 51374 The initial revision of an imported post goes missing Posts, Post Types normal normal Awaiting Review defect (bug) new 2020-09-22T09:58:24Z 2020-09-22T09:58:24Z "There are two problems relating to revisions when making a change to an imported post.
1. The first change does not cause the Revisions meta box to appear. A second change is required.
2. The first change gets ""lost"" and appears as if it was part of the first version of the post.
Steps to reproduce:
* Import a published post
* Make a change to it
* Observe that the ""Revisions"" meta box does not show up even after reloading the editing screen
* Make a second change to the post
* Click the ""2 Revisions"" link and observe that the second revision is recorded correctly, but that the first revision shows the entire contents of the post being added. The first change made ""disappears"" as it's incorrectly included in the entire contents of the first revision.
I think the root cause here is that imported posts do not create an initial revision.
A possible solution might be to create an initial revision at the point where a user makes a change to a post and there isn't an existing revision.
I assume this can also be reproduced by deleting all the revisions from your database and then making changes to a post." johnbillion
Future Releases 58134 Use correct plural of status Posts, Post Types normal normal Awaiting Review defect (bug) new 2023-04-15T06:58:24Z 2023-08-18T23:37:30Z "Core uses a variable named **$stati** (10 times to be found, in 3 files), but that's not the correct plural form of '**status**', neither in english, nor in latin or elsewhere. So I plead to change it to **$statuses**. While there seems to be no decent rule for variable names, so technically the variable could be named $stsii or whatever, still we are called to not
{{{
""abbreviate variable names unnecessarily; let the code be unambiguous and self-documenting.""
}}}
see https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/
Also, as we all know, ""**Code is Poetry**"", isn't it? Now you could argue poetry has some freedoms, but I strongly believe it should use correct grammar, at least in this case.
So I may have convinced you finally of that one, but there's one more issue:
There's also a function
{{{
get_post_stati()
}}}
see https://developer.wordpress.org/reference/functions/get_post_stati/
c'mon, let's rename it to **get_post_statuses**, while we're on it.
You may think this is petty, but it gave me some confusion and after all it's just wrong. Let's get rid of an usage of a plural form which doesn't exist.
" Presskopp
Future Releases 40521 Using a custom query var on a static front page results in wrong $post Posts, Post Types 4.7.4 normal normal Awaiting Review defect (bug) new 2017-04-21T20:52:36Z 2017-04-22T09:15:03Z "'''Steps to reproduce:'''
* Create a page and make it the static front page
* Add a new query var via filter in theme's functions.php: `add_filter( 'query_vars', function( $vars ) { array_push( $vars, 'buggy' ); return $vars; } );`
* Open the front page setting the newly added query var (e.g. ""https://example.com/?buggy=yep"")
'''Result:''' displays the latest blog post
'''Expected result:''' displays front page" mechter
Future Releases 58714 View post link issue in post/article listing screen Posts, Post Types normal normal Awaiting Review defect (bug) new 2023-07-05T10:04:19Z 2023-07-05T10:04:19Z "Hello,
View post or permalink not generated when ""public"" argument is ""false"" in custom post type but ""View"" link show in post/article listing screen if ""public"" argument is ""false"" so It should be not shown in listing screen" hiren1094
Future Releases 41857 Walker_PageDropdown doesn't set correct selected value when using value_field Posts, Post Types 4.8.1 normal normal Awaiting Review defect (bug) new 2017-09-11T17:16:16Z 2020-07-22T16:55:25Z "If the ''value_field'' is different from ID, the selected value was not set.
Function Walker_PageDropdown::start_el
{{{
if ( $page->ID == $args['selected'] )
$output .= ' selected=""selected""';
}}}
See also #32330
" it4life
Future Releases 32773 You cannot move Private nor Passworded posts to Draft. You must make them public first. Posts, Post Types normal normal Awaiting Review defect (bug) new 2015-06-24T03:30:09Z 2017-07-03T16:32:40Z "This is an odd quirk of the editor and might be a security issue for some. However, there is no option from the main editor to move a post directly to draft status from Private nor from Passworded status. I suspect you can trash the post first and then mark it as draft and maybe you could do it from the quick edit. In any case marking as draft should be able to be done from within the actual editor without the disclosure of private information.
NOTE: This kinda is a security issue, but not in the way the check box is asking about. It is procedural. So I'm marking ""I am not reporting a security issue.""" BrianLayman
Future Releases 48622 `editable_slug` filter does not pass the correct value Posts, Post Types 5.3 normal normal Future Release defect (bug) new 2019-11-14T05:23:52Z 2019-11-14T15:36:42Z "''Originally reported in https://github.com/WordPress/gutenberg/issues/15802.''
**Describe the bug**
When using the block editor, the 1st param $post_name passed to the editable_slug filter hook is not the same as the classic editor, which is the expected one.
**To reproduce**
1. Install Classic Editor to switch from block to classic
2. Create a draft post with title ""the post title"" and slug ""this-is-the-slug""
3. Create a muplugin with: add_filter( 'editable_slug', function( $post_name ) { wp_die( $post_name ); } );
4. Refresh your edit page
**Expected behavior**
With the classic editor you should have ""this-is-the-slug""
but when using block editor you have ""the-post-title"", sounds like the post_title sanitize with sanitize_title, it should be the real post_,name like classic is doing." noisysocks
Future Releases 53383 bug: pre_get_posts modify vs posts (pages, etc) found numbers Posts, Post Types 5.7.2 normal normal Awaiting Review defect (bug) new 2021-06-11T13:22:50Z 2021-06-11T13:22:50Z "Dear WP!
I'm pretty sure I've just found a bug. I want to hide certain posts, pages, media elements and custom post type posts from users. These posts are filtered by their IDs with a pre_get_posts action. The filter itself works well, but the displayed found numbers (on the top of the page) are invalid. On the bottom it's ok again.
{{{#!php
set('post__not_in', array(5800));
}
}
}
add_action('pre_get_posts', 'mod_func', 999);
}}}
Screenshot:
[https://webgeek.hu/wp-bug-post-counter.jpg]
Hope you can understand me, I'm not the best in English.
If you have questions, feel free to ask me.
Thanks for helping in advance (and thanks for working hard for years),
Sincerely,
Somogyi Balázs
" err
Future Releases 43084 dashboard confuses published posts count with all posts Posts, Post Types 2.7 normal normal Awaiting Review defect (bug) new 2018-01-13T23:22:05Z 2019-05-15T08:11:35Z "the following is a good first bug for new contributors, IMO!
because it's very easy to fix
https://core.trac.wordpress.org/tickets/good-first-bugs
in dashboard, in ""at a glance"" section there's a misleading link:
1. its hyper reference uri leads to list of '''all existing''' posts
/wp-admin/edit.php?post_type=post
there are currently 26 posts in my blog
2. its label is ""8 posts"" where 8 -- is the number of '''currently published''' posts
/wp-admin/edit.php?post_status=publish&post_type=post
there are currently 8 published posts in my blog
3. its icon is the pushpin. and the pushpin usually means '''sticky''' posts
/wp-admin/edit.php?post_type=post&show_sticky=1
there are currently 1 sticky post in my blog
thus, as you can see, this link confuses ""all posts (26)"" with ""published posts (8)"" AND with ""sticky posts (1)""
I know, WordPress uses pushpin icon to indicate any post, so, maybe, I'm wrong about sticky posts.
But I'm definitely not mistaken in that you cannot label the link as ""8 posts"" and make it refer to the list of 26 posts -- it should be fixed.
Either label should be ""26 posts"" or it should go to list of published posts.
IMO, the latter choice (lead to published posts)." awardpress
Future Releases 32651 get_adjacent_post() doesn't return posts with the same date Posts, Post Types 4.3 normal normal Future Release defect (bug) new 2015-06-15T05:48:40Z 2019-06-24T05:28:53Z "When using `get_adjacent_post()` on a post, the query skips posts with exactly same date and time.
In a blog context, the problem is rarely encountered, but it's more present when posts are added programmatically." willybahuaud
Future Releases 41355 get_post_status filter is ignored in some cases Posts, Post Types 4.8 normal normal Awaiting Review defect (bug) new 2017-07-18T11:55:09Z 2017-07-18T11:55:09Z "Code:
{{{#!php
'my_plugin_render_block_latest_posts',
) );
function my_plugin_render_block_latest_posts( $atts ) {
$output = '';
$args = array(
'posts_per_page' => 3,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) :
$query->the_post();
$output .= '';
$output .= get_the_excerpt();
$output .= ' ';
endwhile;
wp_reset_postdata();
else :
$output .= 'No posts found.';
endif;
return $output;
}
}}}
For some reason, get_the_excerpt is causing this error in /wp-json/wp/v2/posts:
Fatal error: Maximum function nesting level of '256' reached, aborting! in /app/public/wp-includes/plugin.php on line 899
When I remove get_the_excerpt() or replace it with get_the_content() the error disappears.
I use 'Local by Flywheel' and this is happening on PHP5.6 and 7" DannyCooper
Future Releases 11311 kses converts ampersands to & in post titles, post content, and more Posts, Post Types 2.9 normal normal Future Release defect (bug) new 2009-12-03T01:49:32Z 2022-08-03T15:41:48Z "Make a test user that has the ""author"" role (i.e. no `unfiltered_html`) and write a post with a title that has `&` in it. After saving, it will becomes `&` due to `wp_filter_kses()`. It gets saved in the database this way too.
It's confusing to the user." Viper007Bond
Future Releases 60427 "small ""ü"" in page as anchor causes a mistake when try to save (wrong JSON-response)" Posts, Post Types 6.4.3 normal minor Awaiting Review defect (bug) assigned 2024-02-02T19:00:04Z 2024-02-02T19:00:04Z "I tried to make some changes on a page with pre-block content. It contains some anchors and everytime I tried to save the page after some small changes I got the alert ""Aktualisierung fehlgeschlagen. Die Antwort ist keine gültige JSON-Antwort."". The well know answer that there is something wrong with JSON.
I found the reason is that in the anchors where small ""ü"" (a german umlaut). It happened with the anchor target as well as with the anchor link. And at the same time there are some anchors with other umlauts, namely with a big ""Ü"", which do not cause the issue." gregordoehnert
Future Releases 43036 the_posts_pagination() - redirect URL for first page in category Posts, Post Types 4.9.1 normal normal Awaiting Review defect (bug) new 2018-01-06T20:51:56Z 2018-01-06T20:51:56Z "When you are on the second, third, etc. the page function `the_posts_pagination ()` outputs a link to the first page for the current category with a slash `/` at the end of the URL:
{{{
/category/category-1/
}}}
But when clicking on a link, a redirect to the page takes place without a slash `/` on the end:
{{{
/category/category-1
}}}
A link to the following pages from this category is displayed already without a slash on the end of the URL:
{{{
/category/category-1/page/2
}}}
Permalink at the same time on the site are configured to look like this:
{{{
/%postname%.html
}}}" webliberty
Future Releases 54376 Add `is_post_publicly_viewable` filter Posts, Post Types normal normal Awaiting Review enhancement new 2021-11-04T22:33:22Z 2022-02-03T20:31:39Z "Related to #49628, #54375.
Add a filter to the is_post_publicly_viewable() function to allow theme and plugin developers to override the default value.
In some circumstances a developer may require the checks use different conditions to the default. " peterwilsoncc
Future Releases 39841 Additional Post Button Options Posts, Post Types 4.7.2 normal normal Awaiting Review enhancement new 2017-02-10T18:38:24Z 2017-02-14T08:39:25Z "Turn ""Update""/""Publish"" into a button with a dropdown. So if a user selects say Update & Return it will redirect the user back to the posts admin screen. If a users selects the Update & Add New option then it would update that existing post, then redirect to a new posts screen or return to the post list screen instead." lukecavanagh
Future Releases 35546 "AllPosts page UI: ""Edit"" name in ""Bulk Actions"" does not match with ""Bulk Edit"" group box" Posts, Post Types normal minor Future Release enhancement new 2016-01-20T19:42:09Z 2017-08-07T16:15:17Z "This may mislead a user. Because not all users know that there are 3 types of editing on this page:
1. Hidden menu ""Edit"".
2. Hidden menu ""Quick Edit"".
3. ""Edit"" in the ""Bulk Actions"" list. This name is equal to the 1. when it is not the same.
Should ""Edit"" in the""Bulk Actions"" be changed on ""Bulk Edit""?" antonrinas
Future Releases 38599 Allow verbose rewrite rules with custom post types Posts, Post Types normal normal Awaiting Review enhancement new 2016-11-01T00:08:41Z 2021-07-27T05:50:55Z "Every time I create a custom post type (say, Book) I invariably want a structure like this:
/books/ - static page where I can write all sorts of overview content with all of the formatting provided by the theme's page template (not a basic post type archive)
/books/book-1/
/books/book-2/ - custom post type permalinks
This is possible by using a rewrite slug of books.
However, if someone then creates a subpage of books, they'll get a 404 error, full stop.
This has been around a long time, and many workarounds have been provided in trying to get verbose rules triggered, such as: https://gist.github.com/mattberridge/2960966
Rewrite rules underwent some major changes a while ago for improved performance (to get %postname% permastructures working well, then there were pretty attachment URLs, etc), which results in these workarounds no longer working. (Custom post type rules get inserted at a place which isn't easy to reorder and conflicts with other rules).
Instead, I have to keep using unique prefixes which make things look messy and confusing to visitors:
/books/
/book/book-1/ (even though there is no /book/ page on my site)
Having a nicer structure seems like a very common use case (especially given the number of search results you'll find about workarounds).
I'd like to suggest allowing custom post types to trigger verbose rules in a way that will work." smerriman
Future Releases 50921 Consider adding title attributes for metabox order buttons joedolson* Posts, Post Types 5.5 normal normal Future Release enhancement accepted 2020-08-12T04:48:33Z 2021-05-26T09:02:02Z It's obvious but I feel the title attribute for new metabox indicators will be helpful for some users to know what will these indicator buttons do by browser's tooltip. ibachal
Future Releases 43702 Empty State UX for Posts & Pages screen when there is no content Posts, Post Types 4.9.5 normal normal Awaiting Review enhancement new 2018-04-05T16:35:04Z 2020-10-27T19:51:04Z "The default screen people see when they first visit the Posts, Pages, etc., dashboard sections is quite uninspiring.
Taking a cue from WooCommerce's default product screen (screenshot included), we can enhance the default Posts & Pages screens to make it a bit more welcoming to new users." mrtortai
Future Releases 49428 Extend get_the_post_pagination() to consider total argument luludak Posts, Post Types normal minor Awaiting Review enhancement assigned 2020-02-13T16:57:34Z 2020-02-13T16:57:34Z "Right now, the usage of the_posts_pagination() is associated directly with the Global query.
By investigating its code in [https://developer.wordpress.org/reference/functions/the_posts_pagination/ documentation], I noticed that, it practically retrieves the pagination arguments expected by {{{paginate_links($args)}}}, but it checks on global query ({{{$GLOBALS['wp_query']}}}) for the maximum number of pages.
However, one of the arguments of {{{paginate_links($args)}}} is {{{total}}}, which, by documentation is:
""The total amount of pages. Default is the value WP_Query's max_num_pages or 1."".
Since this exists as argument, my question is, why don't we check for the {{{total}}} in {{{get_the_posts_pagination()}}}? That way, we can allow its usage on custom queries (they can propagate the number of pages in the {{{total}}} argument), not using the global query at all - as this check can block the use of {{{total}}} as argument.
This fix can be made by changing this code in **link-template.php**:
{{{if ( $GLOBALS['wp_query']->max_num_pages > 1 ) {}}}}
into:
{{{if ( (! empty( $args['total'] ) && $args['total'] > 1 ) || $GLOBALS['wp_query']->max_num_pages > 1 ) {}}}
Note I did not remove the previous check on global query, to ensure backwards compatibility - {{{paginate_links($args)}}} uses global query to retrieve default arguments - so this part of code is useful. I also check for emptiness and then checking for the argument check in order to apply partial evaluation.
Please note I am adding this ticket for further discussion - since I am new to the community. If this is considered of value, I will be happy to work on the patch.
" luludak
Future Releases 50654 Fix the filter docs in sanitize_post_field() Posts, Post Types normal normal Awaiting Review enhancement new 2020-07-13T22:38:49Z 2020-07-13T22:41:23Z "The `sanitize_post_field()` function calls nine separate filters on its data depending on various conditions. The documentation for these need improving, and documentation for the missing filters need adding.
Need to be careful about accuracy here because of the very general names of these filters and their dynamic portions." johnbillion
Future Releases 42089 Function to detect if current page is a preview of a draft Posts, Post Types 4.8.2 normal normal Awaiting Review enhancement new 2017-10-04T17:56:22Z 2018-02-24T11:52:08Z "It would be very helpful if there was a function to detect if the page being viewed is a preview of a draft. Call this is_draft_preview().
Currently, you can achieve this check with code like this:
{{{#!php
post_status;
return ( is_preview() && $is_draft );
}
}}}
" paulschreiber
Future Releases 42088 Function to detect if current page is a scheduled post (is_scheduled() or is_future()) Posts, Post Types 4.8.2 normal normal Awaiting Review enhancement new 2017-10-04T17:52:44Z 2018-02-24T11:51:01Z "It would be very helpful if there was a function to detect if the page being viewed is a scheduled post. Call this is_scheduled() or is_future().
Currently, you can achieve this check with code link this:
{{{#!php
post_status;
return ( is_preview() && $is_future );
}
}}}
" paulschreiber
Future Releases 48375 Introduce a separate capability for trashing a post Posts, Post Types normal normal Awaiting Review enhancement new 2019-10-20T20:40:44Z 2020-01-06T20:06:53Z "Related: #41674
It's sometimes desirable to allow users to trash posts but not permanently delete them once trashed, nor empty the trash.
There should be a meta capability, `trash_post|trash_posts`, which by default maps to `delete_post|delete_posts` which is used when a post is trashed instead of deleted. This would allow a plugin to grant a user the ability to trash posts but not permanently delete them." johnbillion
Future Releases 21132 "List tables' ""select all"" should let you really select all, regardless of screen options" Posts, Post Types normal normal Awaiting Review enhancement new 2012-07-02T04:38:38Z 2017-06-08T06:51:24Z "The select all checkbox in list tables selects all the items in your current view. Usually what I really want is to select all the items on all the pages.
As a hack, I'll often leave the screen options setting for items per page on something really high, like 1,000. Unfortunately this means the tables are often really slow for no benefit (most of the time I don't need them all). A better solution would be a way to intelligently select all items without needing to show them on the page.
The best example of this that I know of is Gmail, which adds a line above the list of emails when you click the select all box that looks something like this: ""All 50 conversations on this page are selected. Select all 653 conversations in Spam"". The second sentence is a link that, as expected, selects all of your emails that fit the current view, regardless of paging. Screenshot attached." evansolomon
Future Releases 34009 Need ability to query what post_type_supports values plugins and themes might use Posts, Post Types 4.4 normal normal Awaiting Review enhancement new 2015-09-25T10:11:30Z 2017-07-01T10:43:48Z "A number of plugins and themes define their own values to pass to add_post_type_support(). e.g. Jetpack's `publicize`, and the Genesis theme framework's values prefixed with `genesis-`.
I have a post type UI where I allow the user to decide which feature a post type supports. The current API does not allow me to find the full set of possible values.
`$_wp_post_type_features` only lets me find out what's currently registered.
I propose a new API `get_all_post_type_supports_features()` that invokes a filter `post_type_supports` to allow plugins and themes to return a complete list of post type supports values, along with user friendly labels.
Currently my routine returns the set I can get from `$_wp_post_type_features`
and my filter function augments it with additional options.
{{{
array (
'publicize' => ""Publicize with Jetpack""
'home' => ""Display in blog home page""
'genesis-layouts' => ""Genesis layouts""
...
)
}}}
WordPress core would respond to the `post_type_supports` filter with: title, editor, author, etcetera
" bobbingwide
Future Releases 7745 Private posts cannot have unpublished or pending review status Posts, Post Types 2.6.1 low minor Future Release enhancement new 2008-09-15T16:32:19Z 2019-03-15T00:32:37Z "Posts with private ticked are immediately set to published, and cannot be reverted to unpublished or pending review while private is ticked. Given the default use of private posts, this behavior is understandable, but it seems far simpler if the behavior remained consistent with public posts.
In our particular case, we are using Role Manager to allow subscribers to read private posts. A simple solution that suits our particular needs well. But we really need the full draft/review process, just as with public posts." nyoungman
Future Releases 44842 Search post box in mobile Posts, Post Types normal normal Future Release enhancement new 2018-08-25T06:15:19Z 2022-05-18T16:41:22Z "In mobile view when I go to posts screen, I found that search box is not on the top so I dragged all the way down and found that search box is there which is bit odd because why someone will go all the way down looking at posts to search any post.
Please see: https://prnt.sc/kmo3jn
We can make it like themes screen https://prnt.sc/kmo3k4 by just leaving the search box with a placeholder to search posts and since just typing and entering the text in the box works so they will be able to search the post
" prashantvatsh
Future Releases 43294 Sticky class should be added regardless of where posts are queried Posts, Post Types normal normal Awaiting Review enhancement new 2018-02-12T12:18:27Z 2019-01-16T06:50:09Z "post_class() function is only adding `.sticky` class when `is_home()` is true, basically
> ...if the query is for the blog homepage.
[http://developer.wordpress.org/reference/functions/is_home/ is_home() reference]
Check out [https://core.trac.wordpress.org/browser/trunk/src/wp-includes/post-template.php#L512 the code] in [https://core.trac.wordpress.org/browser/trunk/src/wp-includes/post-template.php#L461 get_post_class()] function
{{{
#!php
512 // sticky for Sticky Posts
513 if ( is_sticky( $post->ID ) ) {
514 if ( is_home() && ! is_paged() ) {
515 $classes[] = 'sticky';
516 } elseif ( is_admin() ) {
517 $classes[] = 'status-sticky';
518 }
519 }
}}}
This behavior complicates recognizing sticky post when using custom queries, as they're mostly used outside of homepage, which fails `is_home()` check, requiring extra work to add `.sticky` class where it should be.
I suggest removing the `is_home()` check from the condition in `get_post_class()` function." Selrond
Future Releases 41739 "Support a ""source"" attribute in post types, taxonomies, and post statuses" Posts, Post Types 3.0 normal normal Awaiting Review enhancement new 2017-08-28T02:07:31Z 2017-08-28T02:27:55Z "When registering custom post types, taxonomies, or post statuses, it would be nice to have a way to tell the system what plugin was responsible for those registrations.
Use Case:
In bbPress, there are 3 post types, 1 taxonomy, and 4 post statuses. There are several places where an ""any bbPress post type"" or ""any bbPress post status"" comparison is necessary, but it's somewhat annoying and repetitive to need to write:
{{{
array( bbp_get_forum_post_type(), bbp_get_topic_post_type(), bbp_get_reply_post_type() )
}}}
I'd prefer to write:
{{{
get_post_types( array( 'source' => 'bbpress' ) )
}}}
Tangentially, this could replace the otherwise vague `internal` property, with:
{{{
'source' => 'wordpress'
}}}
I'm not confident that `source` is the best descriptor, or if `domain` or `namespace` or something else might be more appropriate (without being too vague to be useful.)" johnjamesjacoby
Future Releases 28798 htaccess and protected option Posts, Post Types 4.0 normal normal Awaiting Review enhancement reopened 2014-07-09T08:50:25Z 2021-10-15T13:25:45Z "I already tried to solve this problem in the forum and was told that it is a matter of the core. So here is not a bug but my suggestion for an improvement of the following matter:
For security reasons I use htaccess to protect my wp-login.php.
Now I'd like to protect a single page by using the WordPress password protected option. Unfortunately the /wp-login.php?action=postpass is needed by this option. In the consequence all the visitors that want to see my password protected page need as well my htaccess password for wp-login or I can't use htaccess to protect my wp-login.
Would it be possible to use the password protection for single pages and posts without using wp-login.php. Maybe by creating an extra transfer page for protected content naming differently as wp-login?
I'm no developer and just talking from the perspective of a WordPress user. In case this idea is foolish I excuse myself in advance.
" YU.Design
Future Releases 31154 register_post_type function does not check reserved post_types Posts, Post Types 4.2 normal normal Awaiting Review enhancement new 2015-01-28T11:13:28Z 2022-02-21T15:39:56Z "the function register_post_type() in wp-includes/post.php does not check for reserved post types. But later on this will cause malfunctions or unexpected behaviour and bugs.
I wrote a very simple patch that checks if any of the reserved post_types are being registered and if so it notifies the developer by _doing_it_wrong and WP_Error as a fallback.
Projects and plugins that are using reserved post_types in the wild will not break. But the developers will be notified via the logs or on their development environments where WP_DEBUG is true.
ps. I will submit a similar ticket for taxonomies after this one.
" sebastiaandegeus
Future Releases 43256 wp_delete_post() should use get_post() not wpdb->prepare Posts, Post Types 1.0 normal normal Future Release enhancement new 2018-02-08T06:22:26Z 2018-02-13T11:24:59Z "wp_delete_post() uses a custom SQL query to pre-load the post info in a raw state and ends up adding one extra data I/O call per post/page being deleted.
This bypasses the WP_Post::get_instance() wp_cache seeding. Consequently later calls to get_post() such as the 'before_delete_post' action to call _reset_front_page_settings_for_post() then falls through and calls WP_Post::get_instance() calling a nearly-identical SQL query (adds LIMIT 1 to to the same query.
Is there any reason why the start of wp_delete_post() should not just call $post = get_post( $postid ) ?
Replace:
{{{
$post = $wpdb->get_row( $wpdb->prepare( ""SELECT * FROM $wpdb->posts WHERE ID = %d"", $postid ) );
if ( ! $post ) {
return $post;
}
$post = get_post( $post );
}}}
With:
{{{
$post = get_post( $postid );
if ( ! $post ) {
return $post;
}
}}}
reference article for in-depth analysis and performance implications is online at [http://lance.bio/2018/02/08/improving-wp_delete_post-wordpress-core/]
If this warrants attention I can find time to spin up my VVV box on latest build and generate a patch file when time allows. " charlestonsw
Future Releases 28006 Add visual cues when viewing drafts on the frontend Posts, Post Types normal normal Awaiting Review feature request assigned 2014-04-24T08:07:28Z 2019-04-22T16:46:38Z "This is a relatively minor issue, but I've often had the problem where I think a post is published because I can view it on the frontend and there is nothing on the page that indicates that I am viewing a draft. If this happens to me from time to time then I'm sure it happens to other users too.
I propose adding a few unobtrusive visual cues to the single post page that indicates that you are viewing a draft. I have attached my changes here - they include:
* Adding ""(Draft)"" to the end the 'edit post' text in the admin bar
* Adding ""(Draft)"" to the end of the default link generated by {{{ edit_post_link() }}}
* Adding a new body class to single post pages: {{{ single-status-{status} }}}
These changes are minor enough to not break the existing display, yet significant enough to clearly show that you are currently viewing a draft. The addition of the post status to the body class will also help with customising the page according to the current status." hlashbrooke
Future Releases 55287 Allow for DISTINCT in WP_Query method Posts, Post Types 6.0 normal normal Awaiting Review feature request new 2022-03-01T15:55:09Z 2022-03-01T15:55:09Z "Dear wordpress developers,
Currently I'm working with a plugin to create designs.
This plugin has an element called a repeater element that basically makes use of the core WP_Query method in order to fetch custom post types or normal post types.
However, since I'm using this page builder or theme builder, I am in no way capable of using DISTINCT within the filter https://developer.wordpress.org/reference/hooks/posts_distinct/
Because this requires me to send the WP_Query instance, which is basically only used within the repeater element and can not be set to a variable in this particular case.
This means I'll have to rebuild everything through code, instead of being able to use my page or theme builder.
Now I get the idea of saying this is a bug with the page or theme builder plugin.
But in fact, what I want to know is why are we using a filter to create a DISTINCT query inside of WP_Query? Isn't it possible to implement this inside of the WP_Query arguments instead? I basically want to say: fetch posts with unique titles. This seems much more logical as the SQL query is build from WP_Query...
I've already looked through the entire codex, and couldn't find any possible parameter that could be used for this...
My question to you is: Can this please be added to wordpress core?
I find it highly frustrating that WP_Query doesn't have this sort of capabilities out of the box." simbaclaws
Future Releases 32824 Consistent search fields between posts and terms Posts, Post Types normal normal Awaiting Review feature request new 2015-06-29T13:42:54Z 2017-07-23T02:17:53Z Searching for posts [https://core.trac.wordpress.org/browser/tags/4.2.2/src/wp-includes/query.php#L2091 currently checks] the `post_title` and `post_content` fields, while [https://core.trac.wordpress.org/browser/tags/4.2.2/src/wp-includes/taxonomy.php#L1899 searching terms] checks the `name` and `slug` fields. Could `post_name` be added to the where clause for posts, and `description` be added to terms? That way, searching would consistently check an entity's title, slug, and content. ashworthcreative
Future Releases 43348 Filter by 'Authors' option in wp-admin/edit.php?post_type=page Posts, Post Types normal normal Awaiting Review feature request new 2018-02-18T21:21:44Z 2018-02-20T15:03:56Z "Hey!
Currently, I am able to filter by posts created by myself, It would be handy to have the option to filter by other authors contributing to the site, to keep track of who has posted what.
Possibly an author drop down could be added which lists all Authors and a filter button to show their posts, similar to how the page is currently styled." lkhwt96
Future Releases 41953 Improved Meta Box Save Hook Posts, Post Types 4.8.2 normal normal Awaiting Review feature request new 2017-09-22T07:55:37Z 2017-09-22T10:39:51Z "Hi,
This is suggestion how to reduce some conditionals for saving meta boxes with function for example. Below is code of meta box save function with all conditions for security and inside that function we always write some core condition for security that can be separated in one or more core functions to do that for us, so we can just call that function.
{{{
if ( ! function_exists( 'save_admin_meta_boxes' ) ) {
/**
* Saves admin meta box to postmeta table
*
* @param $post_id int - id of post that meta box is being saved
* @param $post WP_Post - current post object
*/
function save_admin_meta_boxes( $post_id, $post ) {
// If we're doing an auto save, bail
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// If default wp nonce isn't there, bail
if ( ! isset( $_POST['_wpnonce'] ) ) {
return;
}
// If current user can't edit this post, bail
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// If current post type are not in list, bail
$post_types = apply_filters( 'wp_allowed_post_types_for_meta_boxes', array( 'post', 'page' ) );
if ( ! in_array( $post->post_type, $post_types ) ) {
return;
}
// If our nonce isn't there, or we can't verify it, bail
$meta_boxes = apply_filters( 'add_meta_boxes_filter', array() );
$nonce_array = array();
if ( is_array( $meta_boxes ) && ! empty( $meta_boxes ) ) {
foreach ( $meta_boxes as $meta_box ) {
$nonce_array[] = 'extensive_vc_meta_box_' . esc_attr( $meta_box ) . '_save';
}
}
if ( is_array( $nonce_array ) && count( $nonce_array ) ) {
foreach ( $nonce_array as $nonce ) {
if ( ! isset( $_POST[ $nonce ] ) || ! wp_verify_nonce( $_POST[ $nonce ], $nonce ) ) {
return;
}
}
}
// Make sure your data is set before trying to save it
global $meta_boxes_options;
foreach ( $meta_boxes_options as $key => $value ) {
$field_key = $_POST[ $key ];
if ( isset( $field_key ) && trim( $field_key !== '' ) ) {
update_post_meta( $post_id, $key, esc_html( $field_key ) );
} else {
delete_post_meta( $post_id, $key );
}
}
}
add_action( 'save_post', 'save_admin_meta_boxes', 10, 2 );
}
}}}
Example function with that conditionals
{{{
if ( ! function_exists( 'wp_meta_boxes_security_check' ) ) {
/**
* Check is meta box secure and valid for saving
*
* @param $post_id int - id of post that meta box is being saved
* @param $post WP_Post - current post object
*
* @return boolean
*/
function wp_meta_boxes_security_check( $post_id, $post ) {
$return_value = true;
// If we're doing an auto save, bail
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
$return_value = false;
}
// If default wp nonce isn't there, bail
if ( ! isset( $_POST['_wpnonce'] ) ) {
$return_value = false;
}
// If current user can't edit this post, bail
if ( ! current_user_can( 'edit_post', $post_id ) ) {
$return_value = false;
}
// If current post type are not in list, bail
$post_types = apply_filters( 'wp_allowed_post_types_for_meta_boxes', array( 'post', 'page' ) );
if ( ! in_array( $post->post_type, $post_types ) ) {
$return_value = false;
}
return $return_value;
}
}
}}}
and then finally code for saving meta boxes will be
{{{
if ( ! function_exists( 'save_admin_meta_boxes' ) ) {
/**
* Saves admin meta box to postmeta table
*
* @param $post_id int - id of post that meta box is being saved
* @param $post WP_Post - current post object
*/
function save_admin_meta_boxes( $post_id, $post ) {
// If meta box doesn't paste check, bail
if ( ! wp_meta_boxes_security_check( $post_id, $post ) ) {
return;
}
// If our nonce isn't there, or we can't verify it, bail
$meta_boxes = apply_filters( 'add_meta_boxes_filter', array() );
$nonce_array = array();
if ( is_array( $meta_boxes ) && ! empty( $meta_boxes ) ) {
foreach ( $meta_boxes as $meta_box ) {
$nonce_array[] = 'extensive_vc_meta_box_' . esc_attr( $meta_box ) . '_save';
}
}
if ( is_array( $nonce_array ) && count( $nonce_array ) ) {
foreach ( $nonce_array as $nonce ) {
if ( ! isset( $_POST[ $nonce ] ) || ! wp_verify_nonce( $_POST[ $nonce ], $nonce ) ) {
return;
}
}
}
// Make sure your data is set before trying to save it
global $meta_boxes_options;
foreach ( $meta_boxes_options as $key => $value ) {
$field_key = $_POST[ $key ];
if ( isset( $field_key ) && trim( $field_key !== '' ) ) {
update_post_meta( $post_id, $key, esc_html( $field_key ) );
} else {
delete_post_meta( $post_id, $key );
}
}
}
add_action( 'save_post', 'save_admin_meta_boxes', 10, 2 );
}
}}}
Also I added some filter for allowed post types inside that function
{{{
$post_types = apply_filters( 'wp_allowed_post_types_for_meta_boxes', array( 'post', 'page' ) );
}}}
which allows authors to easily add their own custom post type with meta boxes for saving.
Best regards,
Nenad" Nenad Obradovic
Future Releases 43347 Introduction of 'has_single' register_post_type parameter Posts, Post Types normal normal Awaiting Review feature request new 2018-02-18T18:28:45Z 2022-07-19T09:48:55Z "I have done some research but have not been able to find anything exactly on this issue.
I frequently encounter use cases where I need to create a CPT with the following characteristics:
1) disable the slug display/editor from the admin post edit page (this is for usability. It is not used and having it available/displayed can confuse website editors)
2) maintain the archive page is viewable on the front end
3) disable the single page for the CPT on the front end
I have found some partial solutions like this https://wordpress.stackexchange.com/questions/128636/how-to-disable-the-single-view-for-a-custom-post-type but setting `'publicly_queryable' => false` would disable the archive view.
The `register_post_type` function includes the `has_archive` parameter. Is it possible to introduce a `has_single` parameter which will achieve the desired functionality stated above?
I feel this can be beneficial in many cases, to the extent it is worthwhile introducing as a core feature. " stevepuddick
Future Releases 40255 Parameter to Enable/Disable Trash on register_post_type(); Posts, Post Types 4.7.3 normal normal Awaiting Review feature request new 2017-03-24T21:39:36Z 2017-03-24T21:39:36Z "It would be nice to have the ability to toggle on/off the ""trash"" feature on specific Post Types.
I figured, for extreme simplicity; A parameter could be specified during Post Type registration. Or perhaps factored into the ""supports"" parameter (similarly to revisions)
Thoughts?" michael.ecklund
Future Releases 14375 Post pagination should have a show all option Posts, Post Types 3.0 normal normal Future Release feature request reopened 2010-07-21T07:03:29Z 2017-06-12T05:22:35Z When people use the nextpage html comment tag to paginate posts we should also have a show all link displayed to make it easier for people to read the whole content without pagination. westi
Future Releases 43083 "adding ""Unlisted"" type for post visibility" Posts, Post Types normal normal Awaiting Review feature request new 2018-01-13T16:29:17Z 2018-03-02T01:27:19Z "I think there is a good reason that WP natively supported ""unlisted"" posts, in addition to PUBLIC, DRAFT and PRIVATE.
Why not WP add that feature?
btw, Private is not same as ""unlisted"".
" tazotodua
Future Releases 47491 Avoid double colouring in privacy request rows w/ notices Privacy 4.9.6 normal normal Future Release defect (bug) new 2019-06-06T07:28:54Z 2020-05-11T19:46:57Z "As initially raised here - https://core.trac.wordpress.org/ticket/44135#comment:16
@karmatosed;
> I would note a caution in double colouring as seen with blue and green combined in messages. I have to ask why are we showing blue and green together? I would say the following works:
> - No color around the actual email itself.
> - If successful green
> - If no personal data found blue
> Grey doesn't really mean anything in terms of this UI so I think lets just not have a double notice color combination and we're set. It after all should only have a notice for information about the state change, not wrap everything.
Branching this ticket to keep trac of the issue here." garrett-eclipse
Future Releases 50141 Data erasure/export links should notify the user that the action has already been confirmed Privacy normal normal Future Release defect (bug) new 2020-05-11T02:16:56Z 2020-05-12T05:53:27Z "When a data erasure/export process is started, an email is sent to the email to confirm the action. That email contains only-use-once link that needs to be confirmed for the process to start.
The first request to that url has a nice ""Thanks, you'll be notified when ready"" type message, but clicking the link a second time will just trigger a `wp_die( 'This link has expired.' );` message without any context as to why.
It's also possible that some email scanners (Either on the server, or on an email client) may request the URL on the users behalf to verify if the URL contains any malicious content in which case the email owner would never actually see the success message, and only the expired link message." dd32
Future Releases 52070 Erase Personal Data & Export Personal Data Table Nav Free Space Issue Privacy 5.6 normal normal Awaiting Review defect (bug) new 2020-12-14T19:20:28Z 2021-01-28T21:45:41Z "Hello
Erase Personal Data & Export Personal Data Ui Design Mistake
https://www.screenpresso.com/=87BDf
please remove Free Space of ""tablenav - top ""
apply CSS Display: none;
I think also need to check into the RTL language also.
Thanks." urvik1
Future Releases 53611 Font size inconsistency in the data erasure inline notice for 'additionalMessages' list items Privacy 5.7.2 normal minor Awaiting Review defect (bug) new 2021-07-06T20:17:30Z 2021-07-06T20:17:30Z "This in reference to the unordered list items added by plugins or other code as 'additionalMessages' with a personal data erasure admin process.
The inline notice has a tag with text about the completed request. Plugins can add messages using the wp_privacy_personal_data_erasers filter. Additional messages are displayed using the unordered list markup.
Right now, the
tag in this notice has a smaller font size and line height, so the added items are not uniform with the default message's appearance.
I'm working on an update that will add CSS to adjust the font-size and line-height of these list items to match the paragraph. " kimannwall
Future Releases 44669 Privacy Notification doesn't clear after dismissing notification garrett-eclipse Privacy 4.9.7 normal normal Future Release defect (bug) assigned 2018-07-30T06:38:39Z 2019-09-30T19:08:08Z "Every time the 'Suggested privacy policy text' is changed, the **Settings > Privacy** page displays a notification. Clicking the Close (x) icon doesn't clear the notification. If I navigate away from the page, the Privacy Policy notification reappears. The only way to clear the notification is to click the ''review the guide'' link.
If a site has a custom privacy policy page, like most typical business sites, then they shouldn't be forced to view this page every time it changes as it's not going to be relevant to them. The Close icon should clear the notification in the same way that clicking the ''review the guide'' link does.
Screenshot: https://cl.ly/3r0Y3m0P452X" ahortin
Future Releases 44204 Privacy export codebase in 4.9.6 doesn't use WP Filesystem API Privacy 4.9.6 normal normal Future Release defect (bug) new 2018-05-23T13:01:28Z 2020-08-22T21:11:04Z "The codebase added in WP 4.9.6 for privacy was written with low-level file APIs like fopen(), file_exists(), fwrite(), etc. rather than the WP Filesystem API. Quick to see in wp_privacy_generate_personal_data_export_file(). This restricts core parts of the privacy management functionality to only operate on hosts with direct access to the local filesystem.
It is recommended to instead use the WP Filesystem API so that more secure hosts are supported and a broader set of filesystems can be used, e.g. SSH, FTPext, FTPsocket, etc. https://codex.wordpress.org/Filesystem_API" diablodale
Future Releases 14682 Privacy leakage: gravatars leak identity information Privacy 3.0 normal normal Awaiting Review defect (bug) reopened 2010-08-24T14:54:42Z 2020-07-01T19:18:00Z "If a commenter on a blog leaves a comment without having a log in to the site, and the ""Comment author must fill out name and e-mail"" preference is enabled for the blog, the author must provide an email address. The form for this says ""Mail (will not be published) (required)""
It's true that the email address itself is not published, but if the site has gravatars enabled, the persistent identity of the commenter is nonetheless revealed. Together with inspection of other posts where the commenter has chosen to reveal their identity, on the same blog or other blogs, or a brute-force approach taking a known email address to find postings attributed to them (using a global search engine) this results in a complete loss of anonymity.
At the bare minimum, the user should be aware of this, so that they can choose not to comment; preferably, the software should be changed so that gravatars are not used for these sorts of posts (or made configurable, in combination with the user being made aware)." jmdh
Future Releases 44723 The user ID in a `WP_User_Request` is not an integer as stated Privacy 4.9.6 normal normal Future Release defect (bug) assigned 2018-08-03T21:00:02Z 2022-01-30T16:54:53Z Discovered this while debugging something in #43985. The value of `WP_User_Request->user_id` is a string, not an integer as stated by the inline documentation. This was causing some unexpected behavior in `get_user_locale()`, which performs a strict comparison for `0` and was causing the condition to incorrectly evaluate as `false`. desrosj
Future Releases 44222 Add Archive state to privacy requests garrett-eclipse Privacy 4.9.6 normal normal Future Release enhancement assigned 2018-05-25T06:34:37Z 2020-10-20T19:46:09Z "Hello,
A suggestion for v2 of GDPR is to add an archive/trash state and list view to erasure requests.
Currently, the last state/phase in the erasure process is 'Completed' with the 'Next Steps' action being 'Remove request'.
This automatically prompts the admin to remove and clear the deck. In many if not most cases though the site holds backups which upon site failure will be used to restore the site/content and thus the users PII data. Under GDPR my understanding is the admin is required to re-remove the users data.
Backups are partially safe with GDPR because they are required for site security/integrity, but under retention can only be kept for a reasonable timeframe.
So I was thinking a way to safeguard admins would be to introduce a trash/archive which would have the action for Completed be 'Archive' instead of 'Remove'. This would place the request in the trash and remove from the 'All' view to reduce the clutter. On a new Trash view you're find these requests with the ability to delete permanently.
And I think I heard something about privacy settings at some point in slack which could allow a retention period setting for these archives be set and a cron to auto-remove. So admins would be able to have their database retention and erasure archive retention periods basically match. This would enable them to use the archive list, export it possible, and use it to re-remove users upon database restore.
Most of it is up to the admin to disclose their backup policy and how they'll re-remove users but would definitely help safeguard them from losing requests by running through the workflow too quickly.
Hope that mostly makes sense, mainly just wanted the idea out there.
All the best,
*Note: Most of this is to 'my understanding' so I defer to those more versed in the new regulations." garrett-eclipse
Future Releases 43822 Add UX in the Network Admin for exporting/anonymizing/deleting personal data across the entire network Privacy normal normal Future Release enhancement new 2018-04-20T20:12:18Z 2020-07-06T20:17:20Z "It's not practical for a super admin to hunt down personal data by going to the Dashboard of each site in the network. There should be one centralized place in the Network Admin to receive and process SARs.
This should look similar to the UX in #43546 and #43602, but the underlying functionality for managing the data across the entire network is being discussed in #43738." coreymckrill
Future Releases 43821 Add UX in the Network Admin for setting a network-wide privacy policy Privacy normal normal Future Release enhancement new 2018-04-20T20:05:00Z 2020-07-06T23:31:01Z "Some multisite instances will need to set one privacy policy for the entire network, with controls on whether or not individual sites can modify/replace it. Other multisite instances may choose to leave the privacy policy entirely to individual sites.
The UI for setting a network-wide policy should probably be similar to #43435, so snippets from plugins can be included." coreymckrill
Future Releases 44078 Add an email pseudonymization function that preserves first letter and TLD Privacy normal normal Future Release enhancement new 2018-05-14T18:16:11Z 2019-09-20T03:35:24Z "In addition to the existing behavior of wp_privacy_anonymize_data( 'email', $email_address) which returns deleted@site.invalid, it would be useful, e.g. for debug logging to have another type that would return pseudonymized email addresses that retain a little bit of the original address, e.g.
{{{#!php
my-mailbox@mailprovider.com.ca
}}}
could become something like
{{{#!php
m*********@****************.ca
}}}
Where the number of * corresponds to the letters removed, and only the first letter of the email address and the TLD are retained.
See also https://iapp.org/news/a/top-10-operational-impacts-of-the-gdpr-part-8-pseudonymization/" allendav
Future Releases 43854 Add cards to the Tools page for personal data tools Privacy normal normal Future Release enhancement new 2018-04-25T00:29:46Z 2019-05-23T19:34:32Z "If the privacy tools are going to live under the Tools menu, cards should be added to the Tools page explaining each tool and linking to it.
The Tools page has recently become pretty barren with the move to a plugin for Press This." desrosj
Future Releases 51110 Create a UI for user-level privacy / consent management options on the profile page paaljoachim Privacy normal normal Future Release enhancement assigned 2020-08-22T15:03:00Z 2021-03-26T15:05:07Z "**Background:**
The Consent API is an initiative that is currently underway in the Privacy team.
The code is available in the repository here: https://wordpress.org/plugins/wp-consent-api/
The code does not include any user interface.
However, this is something that the Team feels could be very useful and would greatly improve user experience.
**The Challenge:**
Cookie banners provide very little useful information to users - increasingly so the more they pop up as as checking-the-box responses to various pieces of legislation throughout the world.
It would thus be useful to provide website users, who are registered, with a better UI to manage their consent - and to do so on a more persistent basis.
**The Solution:**
This may be updated, based on input received below / P2 discussions / dev chat.
This ticket represents a milestone for the Consent API.
''There should be an action to re-direct users to this page (e.g.'' wp_prompt_consent_admin'') to re-affirm their consent choices when necessary.''
{{{#!php
Your Privacy
While logged in:
}}}
''Plugins should be able to filter paragraph:''
{{{#!php
Your privacy choices while logged in are saved in the database and will persist until you change them.
You may be prompted to update your consent from time to time.
For example, you may be asked whether you still consent to marketing if you have previously opted in
and the site added a new cookie.
This is merely an example, as legislative requirements differ between jurisdictions.
Consent categories:
}}}
''User_meta values should only be created once a user saves their privacy preferences, not once a new user is created, to not unnecessarily strain large sites.
Plugins should be able to update the default values for the checkboxes (i.e. for when no user_meta value exists), as well as whether the checkboxes should be edit-able by the user or not, as obligations may vary depending on the jurisdictions involved.''
{{{#!php
While logged out:
}}}
''Plugins should be able to filter this paragraph:''
{{{#!php
Your privacy choices while logged out are saved in a cookie
and will only persist until the cookie expires, or is deleted.
If this happens, these values will reset to the website's defaults.
5 checkboxes with the descriptions: Functional, Preferences, Anonymous Statistics, Statistics, Marketing.
}}}
''There should be a filter here so that the Disclosure / Permissions tabs or consent management plugins can add more information if they need to, or to add more granular choices.''
{{{#!php
Website defaults
5 checkboxes (not select-able) with the descriptions: Functional, Preferences, Anonymous Statistics, Statistics, Marketing. These should display the site's default values, which should be edit-able by plugins.
}}}
''There should be a filter here so that the Disclosure / Permissions tabs or consent management plugins can add more information if they need to, or to add more granular choices.''
Ideally, there would be a mechanism (e.g. two buttons) to request data export or erasure here.
Thanks a lot to Ronnie Burt for bringing this up on Slack!
It is important to note that the user should need to log again to make either an export or erasure request.
Also, the request needs to be confirmed via e-mail for registered users.
I imagine this would work best if it was similar to how password resets work at the moment.
More background here: https://core.trac.wordpress.org/ticket/43437
Suggested text for buttons:
{{{#!php
Privacy page.
#44131 aims to adjust some of the text on the Settings > Privacy page to indicate the page would be previewed and not viewed, but this is also only seen when on that settings page.
Here are a few ideas that have been thrown tossed around.
== Dashboard Widget
A dashboard widget for Privacy that could indicate any issues with the site's privacy settings. Some examples of what could appear here:
- ""Your site does not have a privacy policy selected.""
- ""The privacy policy page selected is not publicly visible""
- Maybe further down the road, ""Several active plugins on your site do not declare support for data privacy features"" (see #43938, #43750).
== Admin Notice
This admin warning would be dismissible and only show up to users that have the ability to manage the privacy policy. Which pages to show this on and whether ''another'' admin notice should be introduced should be carefully considered.
Related: #44100, #44131." desrosj
Future Releases 43811 Licence & Policy notice during installation xkon Privacy normal normal Awaiting Review enhancement assigned 2018-04-19T13:56:37Z 2023-08-29T15:33:28Z "This was a thought mentioned in #43492 originally but it deserves it's own ticket at the moment.
We all know about the lovely 5 minute installation process that WordPress provides. I feel like we can create a small placeholder during the installation process ( probably on the first page even ) to notify the users about GPL license and a text on Policy. Yes the license is included in a .txt, but people are more used when installing things to see a license / policy during the installation and then continue to the actual install.
I'm not personally thinking about a full blown page with a wall of text but rather a discreet placeholder to hold just the right the information needed like an excerpt from the GPL and a link refering to the full text for the ease of use etc as well as the connection between WordPress and wp.org during updates and such as stated on other tickets so we can be even more clear and upfront to any given user.
@melchoyce do you think you could check this as well so we can provide a mockup/patch to see how it feels and then we can go forth adding the texts needed here as well just in case this could make it to the release also ?" xkon
Future Releases 44498 Make `_wp_personal_data_cleanup_requests()` run on cron Privacy 4.9.6 normal normal Awaiting Review enhancement new 2018-07-03T15:17:06Z 2018-07-30T15:56:24Z "When a data export or removal request is created, a user must confirm that request within x days. By default, this is 1 day (24 hours), but it can be changed using the `user_request_key_expiration` filter. If a user does not confirm the request within that time, it is marked as failed, and the request needs to be re-initiated.
Currently, requests are only marked as failed when the Export/Erase Personal Data screens are accessed. By default, only administrators can access this page, and will most likely do so very infrequently. Because of this, a cron may be more appropriate for marking requests as failed.
A `posts_per_page => -1` query arg is also used to fetch expired requests, which could cause issues when a large number of requests have failed. Moving this action to a cron should cut down on the number of requests that need to be transitioned at a time." desrosj
Future Releases 43938 Make it clear to administrators that not all plugins support privacy policy content, personal data export and erasure xkon Privacy 4.9.6 normal normal Future Release enhancement assigned 2018-05-02T19:16:18Z 2020-06-23T00:09:22Z "It is likely that there will be many plugins that will not implement the new privacy policy content hooks nor the personal data export and erasure hooks for some time (if ever).
It would be unfortunate for administrators to overlook privacy policy impacts from such plugins, or to assume that personal data export and erasure included personal data collected by such plugins.
As part of privacy policy content UX, as well as export and erasure UX, we should come up with a way to prompt administrators to take this into consideration." allendav
Future Releases 44539 Notify the admin when no personal data is found for a user Privacy 4.9.6 normal normal Awaiting Review enhancement new 2018-07-06T17:35:53Z 2019-12-02T17:36:32Z "When no data exists for a user's data export request, both the user and administrator handling the request should be notified that no data exists. #44133 handles the end user experience by notifying the user via email that no personal data was found.
On the admin side, the person managing the data request should also be notified that no personal data was found. The ""Download Personal Data"" inline action should also be removed or changed to something like ""Recheck for Personal Data""." desrosj
Future Releases 44101 Personal Data Erasure Workflow - Make the Erasure Fulfilled notification admin triggered Privacy 4.9.6 normal normal Future Release enhancement new 2018-05-15T22:59:46Z 2019-05-23T19:24:27Z "Hello,
This might be more for a GDPR v2, but from an admin perspective, I found it easy to overlook any manual actions the admin may need to do to properly complete an Erasure.
With the current workflow the requester confirms, and on admin clicking 'Erase Personal Data' the data WP knows about is removed and the user receives a Erasure Fulfilled notification. So is it expected the admin would remove any other non-WP core data before clicking that option?
I was thinking it might be nice to have that 'Erase Personal Data' conduct the erasure but hold off on the fulfilled email and have that manually triggered by the admin once they've removed any other data. Would be nice if this step prompted the admin to conduct any other erasure steps that their process might require.
Hoping that makes sense, I'm just feeling that currently there's no part in the process prompting the admin to do any other erasures that the core doesn't cover.
Thank you" garrett-eclipse
Future Releases 46897 Personal Data Export Report: Mobile friendly xkon Privacy 4.9.6 normal normal Future Release enhancement assigned 2019-04-12T13:13:04Z 2020-11-03T16:10:04Z "The reports are HTML files and I think we should consider making them more mobile friendly.
For example:
- Increase the margins around the report.
- Make the data tables responsive.
- Viewport
- ...
We could look into the admin list tables for ideas.
" birgire
Future Releases 44153 Plugin privacy polices and admin notification Privacy 4.9.6 normal normal Future Release enhancement new 2018-05-18T23:14:22Z 2019-04-22T16:54:53Z "If a plugin adds a privacy policy by hooking wp_add_privacy_policy_content(), the information shows up on example.com/wp-admin/tools.php?wp-privacy-policy-guide=1.
However, there's no link on the dashboard menu (esp settings->privacy) regarding that.
Settings->privacy does say ""Need help putting together your new Privacy Policy page? Check out our guide for recommendations on what content to include, along with policies suggested by your plugins and theme."" with a link in the text, but it's quite obscure.
How about a 2nd line: If any plugins or themes have available privacy policies, you'll find them [link]here[/link]. You can them use them on your own privacy policy page." sterndata
Future Releases 51555 Privacy Page: Does it need to be a Page? Also, is a warning an error? garrett-eclipse Privacy 4.9.6 normal normal Future Release enhancement reviewing 2020-10-16T19:35:53Z 2020-10-16T22:14:49Z "When defining the Privacy Page, why does it specifically have to be a **Page** content type? It could very well be a Post or another content type. As a Page, it sort of then has to live in the ''hierarchy'' of Pages. In many situations, we might want to use a special custom post type that has no hierarchy. Or, we may want to set it as a Post of category ""Legal"" and then we would have other legal-ish Post content in that same category. Or we could have a pop-up. Or it could be in the footer. And so on--- there are many places a Privacy notice could appear, because, as indicated on the support article about this [https://wordpress.org/support/article/wordpress-privacy/] ""Every website is different."" (It would be good to explain somewhere ''why'' we have to define a Privacy Page in this manner, anyway--- does it create some sort of XML feed or appear in a META tag in the header or something useful and easy to track for compliance?)
**Proposal:** Allow ''any'' post type to be set as the Privacy Page. **Even better:** Add a checkbox to indicate ""We have implemented some other method of a Privacy Page (such as a popup).""
**Also, a slight bug:** Going to the **Settings: Reading** panel, there is a message that warns:
''Warning: these pages should not be the same as your Privacy Policy page! ''
when I have not defined the Privacy Policy page. While that may be an important message, it is curious to see it and was not something that I would consider doing anyway. Interestingly, if I define a **Posts page** here, that message goes away. (That is, it appears when I have defined both the **Homepage** and the **Posts page.**) If you have to keep this warning here for some reason, perhaps make the warning not-red, maybe caution color, if that is possible, and add a link over to the Privacy Policy panel in WP Dashboard.
Suggest to use class
{{{
.notice-warning
}}}
rather than
{{{
.notice-error
}}}
since this is not really an error.
[[Image()]]" bkjproductions
Future Releases 44538 Provide a way to show what change occurred to the suggested privacy policy text. Privacy 4.9.6 normal normal Future Release enhancement new 2018-07-06T15:31:15Z 2020-11-24T16:11:48Z "Currently, when WordPress notifies me that the suggested privacy policy text has changed, it doesn't provide any indication of WHAT has changed.
Given that I've customized the text I'm actually using, this makes it prohibitively time-consuming to track down what changed (because I'd have to download an old WordPress version, copy-paste out the suggested text, and then run the two versions through a diff utility manually).
As a result, I wind up just dismissing the notification and getting on with my day. (Not to mention feeling irritated by further confirmation of my sense that I spend more time applying updates to WordPress or its plugins than actually posting... something I hope to remedy by migrating to a static site generator like Jekyll or Pelican.)
Given that WordPress already has a diff implementation for showing changes between revisions of posts, it should offer to apply it to the two different versions of the suggested privacy policy, so I can easily know whether I need to update my customized version. (Ideally, it should apply it between whatever version was current when the privacy policy page was last edited and the current version.)" ssokolow
Future Releases 44145 Rework Privacy settings page to use the Settings API xkon* Privacy 4.9.6 normal normal Future Release enhancement accepted 2018-05-18T12:23:18Z 2020-09-26T00:04:24Z Now that the Privacy page is under Settings, it should be reworked to utilize the Settings API. desrosj
Future Releases 47488 "add ""extensibility"" to WP_Privacy_Requests_Table" Privacy normal normal Awaiting Review enhancement new 2019-06-05T20:09:01Z 2019-06-06T23:53:37Z "`WP_Privacy_Requests_Table` (and its 2 sub-classes `WP_Privacy_Data_Removal_Requests_List_Table` and `WP_Privacy_Data_Export_Requests_List_Table`) lack some of the ""extension"" points that other list tables (e.g., `WP_Posts_List_Table`) in core have.
A short list of what is missing includes:
* an `extra_tablenav()` method and the `restrict_manage_xxx` and `manage_xxx_extra_tablenav` actions that accompany it
* the ability to add custom columns (via a `xxx_columns` filter)
* the ability to add/remove row actions (via a `xxx_row_actions` filter)
* the ability to add ""display states"" (via a `display_xxx_states` filter)
I do **not** have a concrete use-case for needing any of the above **at this time**, but feel that **all** core list tables should support them **unless there is a concrete reason not to**.
I'll add a patch shortly." pbiron
Future Releases 44001 oEmbed two click / local emoji scripts Privacy 4.9.6 normal major Awaiting Review enhancement new 2018-05-08T06:10:40Z 2019-12-12T20:26:56Z "Hi,
the first beta release 4.9.6 has a few optimziations due to the GDPR, but I think, WordPress is missing two very relevant features. With the latest beta release, WordPress would not be legal for use within the EU - except you´re using WordPress as private notepad!
1) oEmbed two click solution: similar to the shariff plugin, all embedded items via the core WordPress oEmbed function need a two click privacy. Only when the user first clicks on the embedded item, the scripts should be active and the user can view / listen to the embedded item.
2) The emoji script is loaded from Automaticc. There is no possibility to disable this behaviour or the best would be: load all scripts locally. This is one of the relevant of GDPR: you cannot tell your users or lawyers, why it is relevant for using your site, when specific scripts like emoji are loaded from a CDN. There is no need for a CDN.
It would be great, if you could still imagine to implement those both things, because they are rather important than a general privacy policy page, which the most users of WordPress had already created as a single page. And I think not all related core features needs an extra plugin, when it´s time to develop the core further. WordPress should go ahead and implement more features to the core than letting even more plugins used for a proper website.
Thanks and regards," yoursql719
Future Releases 44370 wp_privacy_delete_old_export_files runs too much on some setups Privacy 4.9.6 normal normal Awaiting Review enhancement new 2018-06-14T14:38:31Z 2019-06-19T12:10:21Z "The `wp_privacy_delete_old_export_files` cron job added in [43046] #43546 runs on an hourly schedule. On large multisite networks, this means that these cleanup are running more or less constantly. Yet they're almost never needed.
It's possible to write a plugin that modifies the behavior, by changing the way that scheduling is done so that it conforms better to the needs of a large network. However, I thought it might be worth considering whether there are changes that WP itself could make that would mitigate the problem for all installations. A few ideas, some of which are mutually compatible:
1. Instead of scheduling the event on 'init', only schedule it when an export file is generated.
2. During the cleanup routine, check for the existence of export files. If none are found, unschedule the recurring event (or don't schedule the next one)
3. In combination with the above, use single events rather than recurring ones
4. Perhaps the cleanup routine itself would be a single event, while a less-frequent (say, daily) recurring event would be to check whether specific cleanup events need to be scheduled (these would be cases missed by 1)
If the team thinks this is too complex, or should be left up to the maintainer of the site in cases where it makes a difference, feel free to close the ticket." boonebgorges
Future Releases 52903 Consent Management within WordPress Core Privacy normal normal Awaiting Review feature request new 2021-03-24T15:31:29Z 2022-10-14T19:56:55Z "**Website visitor / user Privacy choices:**
a. Users who are not registered on a site, or who choose not to log in when prompted, can set their consent preferences via a simple banner (Gutenberg block) on the front end, which will set a (functional) cookie value for consent.
It should be possible for plugins to filter the banner contents and to change the appearance.
b. Registered users can set their consent preferences via an interface in wp-admin, after logging in.
The interface should extend the ""Edit Profile"" page.
Once a registered user logs out, the consent cookie value should be updated to reflect their preferences as per the database (sync).
**(Sane) Defaults:**
Five default consent categories have been proposed: Functional; Preferences; Anonymous Analytics; Analytics and Marketing.
Website owners / admins should be able to set site-wide defaults by setting a site option value, or by using a plugin to do so.
[An alternative would be to allow them to do so via filter.]
It should be possible for site owners / admins to add additional consent categories, or to add nested sub-categories, or to allow a plugin to do so.
As privacy legislation varies across the globe, I believe that WordPress should default to TRUE for each category, if not overridden, to maintain backwards compatibility and avoid unexpected behaviour.
**Proposed Consent Management hierarchy:**
1. If the user is logged in and has set consent preferences, obtain their preferences via an extension of the REST API.
Using the REST API will allow us to cater for cookies that are set in JavaScript, rather than in PHP.
The basic logic:
{{{#!php
TRUE, ""preferences"" => TRUE, ""anon_stats"" => TRUE, ""stats"" => TRUE, ""marketing"" => TRUE);
return $consent;
}}}
**How to integrate all of this into the Developer community:**
This would require a number of approaches and mechanisms, including:
New functions:
Creating a wp_setcookie(); function in PHP and a corresponding function in JavaScript that checks for consent before placing a cookie;
Use of wp_setcookie(); can then be required for new plugin submissions to the WordPress.org repository.
Updating existing functions:
Updating other functions like wp_mail(); and the HTTP and REST APIs to check for the appropriate consent.
In the case of wp_mail(); for example, this can be done by adding a new parameter variable for $consent_purpose.
We can add a _doing_it_wrong(); if this variable is not present.
In the case of the REST API, consent could possibly be integrated into a permission callback, but that is something we'd need Timothy's (and others) input on.
Education drive:
Voluntary compliance is preferred. By providing documentation, resources and discussing with as many stakeholders as we can (primarily on Slack), we can encourage adoption through education.
**Related tickets:**
I will be closing #51188 in favour of this ticket to make it easier for new contributors to get involved. Please do feel welcome to read the closed ticket if you need / want background.
#51110 deals with the design of a wp-admin interface.
There is not a ticket for the design of a Gutenberg block (as a front end ""interface"") yet." carike
Future Releases 51144 Create a UI for the Disclosures Tab (site-level privacy) Privacy normal normal Future Release feature request new 2020-08-26T13:52:23Z 2020-11-26T18:09:52Z "**Background:**
The Disclosures Tab is an initiative that is underway in the Core Privacy Team.
The aim is to help site owners / admins better understand what information their site (plugins, themes and Core) collects, where the information is stored and where it is sent - and in particular, who it is shared with.
We hope to help site owners / admins make more informed privacy choices (e.g. when choosing which plugin to install) and to better understand their risk profile when it comes to privacy.
For the most part, the actual ""controlling"" is planned for a sibling plugin, the Permissions Tab, which is not currently intended to be merged into Core, as this will contain more advanced settings.
You can read more about the various privacy initiatives here: https://make.wordpress.org/core/2020/08/19/minutes-core-privacy-meeting-19-august-2020/
**The Challenge:**
The reach and impact of privacy initiatives are severely limited when there is no UI for it in /wp-admin/.
**The Solution:**
This ticket represents one milestone for the Disclosures Tab initiative.
#51092 proposes a .json schema for various Core components (e.g. avatars), for plugins and for themes.
The UI needs to present this information in a digestible format.
It seems preferable to aggregate the information to provide a holistic understanding to the site owner / admin and then allow them to drill-down to a more granular level (e.g. a single plugin).
The description fields in the schema can be used to explain the significance of each item to the site owner / admin.
Create a sub-menu under Settings called ""Privacy"" (H1).
Create a header called ""Disclosures"" on the page (H2).
The section below this should be filterable.
This section will eventually contain quite a bit of information, so it may be desirable to split it into tabs to improve the readability of the text.
Suggested tabs: Overview, Core, Plugins, Themes, Blocks.
This ticket was created in response to a request from Paaljoachim." carike
Future Releases 43372 $wp_query->max_num_pages return value as float Query 4.9.4 normal trivial Awaiting Review defect (bug) new 2018-02-20T16:32:40Z 2022-02-10T15:13:40Z "As a page number, Integer would make more sense than Float.
This is not a big problem but kinda annoying when you do strict comparison on this value. since no one will define a page number as float." ironghost63
Future Releases 39914 'orderby' date results differs depend on 'post_status' Query 4.7.2 normal normal Awaiting Review defect (bug) new 2017-02-19T09:40:43Z 2017-02-19T09:40:43Z "Default 'orderby' date return different order results depend on 'post_status' passed in WP_Query.
For example, 3 published posts with identical post_date (if bulk publish, import or other stuff) in WP_Query will return different posts order on page, which depend on 'post_status' = 'publish' or 'any'.
Since all posts are published, setting 'post_status' should not affect default orderby date results. Most notably this difference in edit.php?post_type= in comparison with front-end WP_Query results.
Is it normal behaviour of such querying results?" esemlabel
Future Releases 56312 Appending ?name to home URL shows the posts page instead of a static front page Query normal normal Future Release defect (bug) reopened 2022-07-30T10:45:09Z 2023-01-06T09:17:54Z "I found something strange
I installed a WordPress then from setting . Reading I set a sample page as homepage
And when I opened website it was ok and showed content of sample page but when I added query string “?name” it showed latest blog posts
I tried everything as query string nothing did that and all showed sample page content and that was ok
Just just with ?name query string showed different thing
For ex localhost/site/?name show latest posts but
Localhost/site/?everythingyoutype
Was ok and show content of the page
Why ?name query string is like that??? I want to remove it
actually you must test it just on homepage of your site
not another pages
it hurts SEO if you show something else with query string on your site (specially on your homepage) instead of the main content
basically as you said when you enter the url of homepage with /?name you should see the homepage and nothing should change because it’s just a query string
I can show you an example
see this : https://amepro.at/
as you see everything is fine and homepage of website is ok
but please see this one https://amepro.at/?name
here you see the blog posts and it hurts SEO very bad
I got too much errors on search console with these kind of urls
Can you explan the logic behind it why should we show another thing like latest post when someone enter some parameter ?
it’s not normal at all" masimoti
Future Releases 28568 Can't get private posts/pages via WP_Query when not logged in as administrator Query 3.9 normal normal Awaiting Review defect (bug) reopened 2014-06-17T18:44:59Z 2019-03-22T14:10:01Z "I want to use WP_Query to display content of one private page on some place in a template.
{{{
// ... theme template sidebar.php, for example
25, 'post_status' => 'private' )); // page #25 is set to ""private""
if ($the_query->have_posts())
{
// ... nope, no posts for you today
while ($the_query->have_posts())
{
$the_query->the_post();
the_content();
}
wp_reset_postdata();
}
?>
}}}
But it only works when I am logged in as administrator.
When I am not logged in, and print_r() the $the_query, there is ""request"" index filled with:
{{{SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID = 25 AND wp_posts.post_type = 'page' AND ((wp_posts.post_status = 'private')) ORDER BY wp_posts.post_date DESC}}}
Querying database with it directly in PHPMyAdmin, it returns one row as expected (page ID 25 row). But template loop does not anything. ""Posts"" index in $the_query is empty.
I have expected WP_Query works like ""just give me anything I want (defined by the arguments)"" ... and I want page with ID 25. " mklusak
Future Releases 40903 Filtered posts_request query can break found_posts query Query normal normal Awaiting Review defect (bug) new 2017-06-01T16:54:45Z 2017-06-01T18:40:57Z "Suppose the `posts_request` query is built with `SQL_CALC_FOUND_ROWS`. The stage is set for `WP_Query::set_found_posts` issue `SELECT FOUND_ROWS()` because `$limits` is non-empty.
Now suppose a plugin filters `posts_requests` to the empty string because it gets results another way. WP_Query will still go ahead and issue `SELECT FOUND_ROWS()` erroneously.
Some plugins avoid this by filtering `found_posts_query` to the empty string. However, it seems like there is a better way to write the logic of `set_found_posts` so that it respects the filtered `posts_request` query and avoids the problematic statement: simply check the filtered query for `SQL_CALC_FOUND_ROWS` instead of looking at `$limits`.
Proposed fix:
{{{
private function set_found_posts( $q, $limits ) {
global $wpdb;
// Bail if posts is an empty array. Continue if posts is an empty string,
// null, or false to accommodate caching plugins that fill posts later.
if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) )
return;
- if ( ! empty( $limits ) ) {
+ if ( substr( $this->request, 0, 26 ) === 'SELECT SQL_CALC_FOUND_ROWS' ) ) {
/**
* Filters the query to run for retrieving the found posts.
*
}}}" andy
Future Releases 37251 Not return 404 on front-page with option page and url `/page/2` Query 4.5.3 normal normal Awaiting Review defect (bug) new 2016-07-01T15:31:11Z 2023-05-28T15:33:44Z "If i setup page on front-page(Go `Settings`->`Reading`->`Set show on front static page and choose own page`->`Save`). Then go to front page on my site (example http://my-domain/) i see page, which setted before. But if i try open `http://my-domain/page/2`, `http://my-domain/page/3` and etc, i get always front-page, except i am wait 404 error. After debug i found solution (line 1777 in `query.php`):
{{{#!php
is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') && !$this->is_paged) {
$_query = wp_parse_args($this->query);
// pagename can be set and empty depending on matched rewrite rules. Ignore an empty pagename.
if ( isset($_query['pagename']) && '' == $_query['pagename'] )
unset($_query['pagename']);
unset( $_query['embed'] );
if ( empty($_query) || !array_diff( array_keys($_query), array('preview', 'page', 'paged', 'cpage') ) ) {
$this->is_page = true;
$this->is_home = false;
$qv['page_id'] = get_option('page_on_front');
// Correct for page_on_front
if ( !empty($qv['paged']) ) {
$qv['page'] = $qv['paged'];
unset($qv['paged']);
}
}
}
}}}
Add `&& !$this->is_paged` check." sheo13666q
Future Releases 40397 PHP 7.1.x problem in WP_Query Query 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-08T23:08:20Z 2018-01-11T03:59:56Z "I believe I have found another instance of the defect reported in Trac #37772. This was reported in my plugin's support forum:
https://wordpress.org/support/topic/warning-parameter-2-to-mlaquery
The first post there includes the PHP message:
Warning: Parameter 2 to MLAQuery::mla_query_posts_search_filter() expected to be a reference, value given in /home/prodport/staging/1/wp-includes/class-wp-hook.php on line 298
A later post from @adrianb includes a call trace showing the call to `apply_filters()` from line 1995 in WP_Query." dglingren
Future Releases 40984 Possible Bug with Named Orderby Meta Query SQL Query 4.8 normal normal Awaiting Review defect (bug) new 2017-06-09T19:51:56Z 2017-06-09T20:10:26Z "I don't know how easy this would be to replicate, but I can at least walk through the steps in identifying the bug, and how I was able to address it for my own use-case.
On the web application we're building, we've added a simple meta field called ""spotlight"" to basically drive a single post to the front of the list, and apply some extra styling.
To do this, I had built the following query:
{{{#!php
'post',
'posts_per_page' => 3,
'orderby' => 'has_spotlight post_date',
'meta_query' => [
'relation' => 'OR',
'has_spotlight' => [
'key' => 'spotlight',
'value' => '1'
],
'standard' => [
'key' => 'spotlight',
'compare' => 'NOT EXISTS'
]
],
'tax_query' => [
[
'taxonomy' => 'post_tag',
'field' => 'name',
'terms' => 'News'
]
]
]);
}}}
In other areas of the web application, similar queries appeared to function as expected - the ""spotlight"" post would appear first in the list, with remaining posts ordered by date.
However, for the above query, something interesting happened: A post with no spotlight metadata was appearing at the top of the list, and the actual spotlight post was appearing below it.
Using PHPStorm and Xdebug, I set a breakpoint for the query and examined the object. Under the request property, the following SQL was generated:
{{{
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
LEFT JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
LEFT JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id AND mt1.meta_key = 'spotlight' )
WHERE 1=1
AND (
wp_term_relationships.term_taxonomy_id IN (724)
)
AND (
( wp_postmeta.meta_key = 'spotlight' AND wp_postmeta.meta_value = '1' )
OR
mt1.post_id IS NULL
)
AND wp_posts.post_type = 'post'
AND (
wp_posts.post_status = 'publish'
OR
wp_posts.post_status = 'acf-disabled'
)
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order, CAST(wp_postmeta.meta_value AS CHAR) DESC, wp_posts.post_date DESC
LIMIT 0, 3
}}}
When running this SQL directly in SequelPro, the following IDs were returned, confirming the order that I was seeing:
1
227 <-- Spotlight Post ID
225
After looking through the SQL statement, I decided to check exactly what Wordpress was seeing. After modifying the query to include everything from the wp_postmeta query, something interesting happened:
{{{
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID, wp_postmeta.* FROM wp_posts
...
}}}
I receive the following results:
{{{
ID meta_id post_id meta_key meta_value
1 51 1 _edit_lock 1496942377:1
227 20794 227 spotlight 1
225 3305 225 _yst_is_cornerstone
}}}
It appears that the table that's being used to define the ordering - '''wp_postmeta''' - is not being filtered the same way as the other table alias '''mt1'''.
Upon changing the order clause to use the filtered meta table:
{{{
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID, mt1.*
...
CAST(mt1.meta_value AS CHAR) DESC
}}}
I received the correct results:
{{{
ID meta_id post_id meta_key meta_value
227 20794 227 spotlight 1
225 NULL NULL NULL NULL
1 NULL NULL NULL NULL
}}}
This is strange to me, as this line should theoretically prevent other unrelated meta information from being included in the results:
{{{
WHERE
...
( wp_postmeta.meta_key = 'spotlight' AND wp_postmeta.meta_value = '1' )
OR
mt1.post_id IS NULL
...
}}}
It should be noted that simply changing the ORDER BY clause in my case - while it ""fixes"" the issue - is not technically correct.
Instead, the primary meta query clause should also contain the same filtering that the second does. The complete query looks like so:
{{{
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
LEFT JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = 'spotlight' )
LEFT JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id AND mt1.meta_key = 'spotlight' )
WHERE 1=1
AND (
wp_term_relationships.term_taxonomy_id IN (724)
)
AND (
( wp_postmeta.meta_key = 'spotlight' AND wp_postmeta.meta_value = '1' )
OR
mt1.post_id IS NULL
)
AND wp_posts.post_type = 'post'
AND (
wp_posts.post_status = 'publish'
OR
wp_posts.post_status = 'acf-disabled'
)
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order, CAST(wp_postmeta.meta_value AS CHAR) DESC, wp_posts.post_date DESC
LIMIT 0, 3
}}}
'''Notice that the first metadata left join contains the same filtering by meta_key as the second.'''
I'm not sure what far-reaching consequences this might have, or if this issue has come up in the past. I imagine it's a bit of an edge-case.
Let me know if this is something that you're able to reproduce on your end, or if you need more information in regards to this." maiorano84
Future Releases 60566 Posts Page as Draft remains publicly queryable Query normal normal Future Release defect (bug) new 2024-02-17T11:46:03Z 2024-02-19T11:04:08Z "When assigning a Posts Page at ""WP Admin > Settings > Reading"" and afterward setting that page to draft, the page remains publicly queryable. This is possible via the `?page_id=` query (not `?p=`) and the provisioned slug." Cybr
Future Releases 42732 Problem with usage of WP_Term_Query inside WP_Tax_Query Query 4.9 normal normal Awaiting Review defect (bug) new 2017-11-28T15:15:21Z 2017-11-28T15:15:21Z "This problem started on WP 4.9 because of #37038.
In WPML plugin, we filter the tax queries in order to convert the term IDs to their translations in the current language (if any).
In WP 4.8.3, `WP_Tax_Query::transform_query` was making direct calls to the DB.
In WP 4.9, `WP_Tax_Query::transform_query` is using `WP_Term_Query` to fetch the terms of the meta query.
The problem is that we have filters on `WP_Term_Query` (on `get_terms_args`) which applies to this.
This is usually not a problem, except for a post query with tax queries and `suppress_filters` set to `true`.
Here's an example:
{{{
$args = array(
'post_type' => 'post',
'suppress_filters' => true,
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => [ 3, 4 ] // 3 is the English category and 4 is the translation in French
),
)
);
$wp_query = new WP_Query( $args );
}}}
'''What is expected (and actual behavior in 4.8.3):''' This query should return all the posts attached to the category 3 or 4, whatever the current language.
'''What we have now:''' The query returns the posts attached to 3 OR the posts attached to 4 (depending on the current language).
So we need a way to flag that `WP_Term_Query` is used inside `WP_Query` (via `WP_Tax_Query`) and `suppress_filters` is set to `true`." strategio
Future Releases 54853 Search only searching phrases and not searching individual terms Query 5.8.3 normal normal Awaiting Review defect (bug) new 2022-01-19T03:00:51Z 2022-01-19T07:46:09Z "
{{{
get_posts(array(
""post_type"" => ""fruit"",
""s"" => ""apple orange banana""
));
}}}
should search for each term separately, but it does not. It searches the entire string as a phrase.
Issue is within /wp-includes/class-wp-query.php line 1398. It's a simple change:
{{{
$searchand = ' AND ';
to
$searchand = ' OR ';
}}}
" jchang
Future Releases 39140 Taxonomies - operator AND doesn't work properly for taxonomy hierarchies Query 4.6.1 normal normal Awaiting Review defect (bug) new 2016-12-07T08:54:32Z 2019-01-08T19:56:52Z "Hi,
This is a problem discovered using WooCommerce shortcodes but has its core problem in the WP core according to my findings. I've already implemented a fix for this in a customer project.
I’ve ran into problems using one of the Woo shortcodes and operator ‘AND’. This is questioned by others several times before (see links below) but it seems like the core of the problem is not solved. I’ve worked with the issue on WP 4.6.1 installation and come to what I believe is a solution (changes in file class-wp-tax-query.php).
Even if the issue is found using Woo product categories I believe this is an issue for taxonomies in general.
Problem:
Using shortcode to retrieve a filtered product list and filtering on two or more product categories using operator “AND” fails when using one or more non-leaf (i.e. parent) product categories. There even seemed to be additional problems when using more than two leaf keywords. In general the ""AND"" didn't behave as expected.
Other reports on the issue:
[https://wordpress.org/support/topic/operator-and-on-product_category/]
[https://wordpress.org/support/topic/woocommerce-display-products-from-two-categories-combined/]
[https://wordpress.org/support/topic/woocommerce-product_category-and-operator-returns-no-results/]
Examples using Woo shortcodes:
Taxonomies (product categories) for Product1: '''Leaf'''CatA, '''Leaf'''CatB
[product_category category=”'''Parent'''CatA, '''Leaf'''CatB” operator=”AND”] => '''Fails''' - shows nothing. Should show Product1
[product_category category=”'''Leaf'''CatA, '''Leaf'''CatB” operator=”AND”] => '''Ok''' - shows Product1
Reason:
There is no individual and complete hierarchial evaluation of each taxonomy/category keyword specified in the shortcode.
Solution that worked for me:
The issue is found in the WP-core file class-wp-tax-query.php. I’ve modified three functions to correct the issue. This includes changes to the SQL-statements generated.
Changes to file class-wp-tax-query.php:
class WP_Tax_Query
- function get_sql_for_clause – code
- function clean_query – input params and code
- function transform_query – input params and code
You find my modified and running code/functions with my comments here (tagged with // BF): [https://gist.github.com/Nettsidespesialisten/5d4596e18dced3c7d97501f195ffe02e]
This is my first ticket here so please notify me how to contribute the best way with this issue (providing code into SVN or other).
Kind regards
Brede
" bredefladen
Future Releases 41446 The PHP notice displayed after the overwriting global $posts by a new empty query. Query 4.8 normal normal Awaiting Review defect (bug) new 2017-07-26T07:57:45Z 2020-08-25T12:46:57Z "'''Tested in WordPress 4.8, twentyseventeen theme with default configuration (just installed).'''
After the overwriting a global variable {{{$posts}}} by a new {{{get_posts()}}} query (which return an empty array (no posts)) there is a PHP notice displayed:
{{{
Notice: Undefined offset: 0 in /.../wp-includes/class-wp-query.php on line 3162
}}}
The overwriting is not a best choice, but some themes and plugins do it, so we should solve this problem.
The problem is in {{{WP_Query}}} class in {{{rewind_posts()}}} method in {{{wp-includes/class-wp-query.php}}} file.
'''The original method:'''
{{{#!php
current_post = -1;
if ( $this->post_count > 0 ) {
$this->post = $this->posts[0];
}
}
}}}
'''The problem:''' the global query has at least one posts, but a new query has not. So the {{{$this->post_count}}} property is always positive, but the {{{$this->posts[0]}}} is not exists. In this step, the PHP notice is displayed.
'''An example of solution:'''
{{{#!php
current_post = -1;
if ( $this->post_count > 0 && isset( $this->posts[0] ) ) {
$this->post = $this->posts[0];
}
}
}}}
Right now the method checks that the query has posts and the first post is set and is not null." danielpietrasik
Future Releases 38709 Unlimited query for invalid post names Query 4.6.1 normal normal Future Release defect (bug) new 2016-11-08T13:25:13Z 2024-01-31T21:38:38Z "In case a request which is being parsed as one which sets a ""name"" query var (eg.: `http://localhost/wordpress-latest/2016/11/08/[` ) includes an invalid name ( the `[` ), a query without any limit with empty post_name is triggered:
{{{#!sql
SELECT wp_posts.*
FROM wp_posts
WHERE 1=1
AND ( ( YEAR( wp_posts.post_date ) = 2016
AND MONTH( wp_posts.post_date ) = 11
AND DAYOFMONTH( wp_posts.post_date ) = 8 ) )
AND wp_posts.post_name = ''
AND wp_posts.post_type = 'post'
ORDER BY wp_posts.post_date DESC
}}}
The problem with the query is that it matches all the drafts in the database, since they don't have the post_name set (is empty). This may have a performance implications for the database in case it contains a lot of drafts (or posts without the post_name set for any reason) as it queries all the posts.
The `post_name` is being set as empty due to `sanitize_title_for_query` in https://core.trac.wordpress.org/browser/tags/4.6.1/src/wp-includes/query.php#L2717
I have tested a more suitable validation function than `trim` ( eg.: `sanitize_title` ) in https://core.trac.wordpress.org/browser/tags/4.6.1/src/wp-includes/query.php#L1609 but it leads to archives being served on those invalid URLs, which does not seem like good fix.
Trying to set `posts_per_page` to 1 in case the `name` is parsed based on the rewrite rule (which seems like a good thing since we really should be interested in a single and unique post_name in such cases) hits a wall as the is_singular() returns true and the limit is not set even if the posts_per_page is present ( due to https://core.trac.wordpress.org/browser/tags/4.6.1/src/wp-includes/query.php#L3215 ).
So the fix might need to be more complicated than." david.binda
Future Releases 41546 WP Query order by meta_clause not working correctly for decimal values Query 4.2 normal normal Awaiting Review defect (bug) new 2017-08-03T13:06:36Z 2017-08-05T07:13:01Z "Short description: When using the WP 4.2 improvements for meta queries (as described here: https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/) and trying to order the query by a decimal custom field, wordpress orders as if these fields are all integer and incorrectly handles all decimal values such as 1.5, 1.6 and 1.7 (all of these are seen as 1).
In detail:
{{{
WP_QUERY_ARGS Array
(
[ignore_sticky_posts] => 1
[post_status] => publish
[offset] => 0
[post_type] => Array
(
[0] => post
)
[orderby] => Array
(
[cf_clause_1] => DESC
[ID] => ASC
)
[meta_query] => Array
(
[cf_clause_1] => Array
(
[key] => my_decimal_custom_field
[type] => DECIMAL
[compare] => EXISTS
)
)
[posts_per_page] => 10
[nopaging] =>
)
}}}
5 Test posts:
Post 1 - my_decimal_custom_field = 1
Post 2 - my_decimal_custom_field = 2
Post 3 - my_decimal_custom_field = 2.2
Post 4 - my_decimal_custom_field = 2.6
Post 5 - my_decimal_custom_field = 3
Using the query above results in the order:
1,3,4,2,5
When it should be 1,2,3,4,5.
Trying out different order types as described in the WP Codex does not help." LordSpackolatius
Future Releases 40387 WP_Query bug with product post type with search parameter on Query 4.7.3 normal normal Awaiting Review defect (bug) reopened 2017-04-07T11:07:02Z 2017-04-18T21:09:16Z "I am not sure if it is a WordPress core bug, but seems like it! I have 5 different custom post types along with 'product' post type from Woocommerce.
The following query gives (only) product result:
{{{
$args = array(
'post_type' => array('product'),
'posts_per_page' => 5,
'post_status' => array('publish', 'future')
);
}}}
Actual query output:
{{{SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'product' AND ((wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future')) ORDER BY wp_posts.post_date DESC LIMIT 0, 5}}}
But the following query:
{{{
$args = array(
'post_type' => array('product'),
's' => 'mobile',
'posts_per_page' => 5,
'post_status' => array('publish', 'future')
);
}}}
outputs this (even post_type is specified the query is generated to search all other post types and surprisingly not product):
{{{SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND (((wp_posts.post_title LIKE '%htc%') OR (wp_posts.post_excerpt LIKE '%htc%') OR (wp_posts.post_content LIKE '%htc%'))) AND wp_posts.post_type IN ('post', 'travelog', 'hotel-info', 'trips', 'package_tour') AND ((wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future')) ORDER BY wp_posts.post_title LIKE '%htc%' DESC, wp_posts.post_date DESC LIMIT 0, 5}}}
and brings up results from all other post types and simply ignoring product.
" subrataemfluence
Future Releases 42546 WP_Query not handling 'LIKE' correctly. Query 4.8.3 normal normal Awaiting Review defect (bug) new 2017-11-14T16:27:03Z 2018-03-14T09:30:49Z "I am doing custom PHP to retrieve listings (as a CPT) from the database for a Realty Company website I'm working on and one of the criteria is searching on the city from a search field on a form. The problem is the generated SQL has some sort of guid in it instead of the expected percent character normally used with LIKE. Here is the generated SQL from WP_Query:
{{{
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1 AND ( ( wp_postmeta.meta_key = 'city' AND wp_postmeta.meta_value LIKE '{f270e6c7d3b231242ceefa28fdd47243cac2100fe4fe8c9df633ec6f3cc2f583}fairfield{f270e6c7d3b231242ceefa28fdd47243cac2100fe4fe8c9df633ec6f3cc2f583}' ) AND ( mt1.meta_key = 'beds' AND mt1.meta_value >= '0' ) ) AND wp_posts.post_type = 'listings' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
}}}
As you can see the generated code for searching the ""city"" field is:
{{{
wp_postmeta.meta_value LIKE '{f270e6c7d3b231242ceefa28fdd47243cac2100fe4fe8c9df633ec6f3cc2f583}fairfield{f270e6c7d3b231242ceefa28fdd47243cac2100fe4fe8c9df633ec6f3cc2f583}'
}}}
The ""expected"" code should look like this:
{{{
wp_postmeta.meta_value LIKE '%fairfield%'
}}}
The form is found here: https://millersells.com/search-2/
After making selections and clicking the Search button it calls itself with url parameters and you get one of these errors:
""Fatal error: Maximum execution time of 60 seconds exceeded in /home/extremx1/public_html/millersells2017b/wp-includes/query.php on line 0""
OR
""Fatal error: Maximum execution time of 60 seconds exceeded in /home/extremx1/public_html/millersells2017b/wp-includes/class-wp-query.php on line 3090""
(Example URL with parameters: https://millersells.com/search-2/?cf_id=37&loc=fairfield&type=SingleFamilyHome&beds=3&baths=2&min_price=0&max_price=0)
I am using this PHP code to create the query (for now I'm just working with 2 of the search fields):
{{{
array( 'listings' ),
'meta_query' => array(
array(
'key' => 'city',
'value' => $location,
'type' => 'CHAR',
'compare' => 'LIKE',
),
array(
'key' => 'beds',
'value' => $bedrooms,
'compare' => '>='
)
)
);
$the_query = new WP_Query( $args );
?>
}}}
To see the generated SQL I added this code at line 2752 in wp_includes/class-wp-query.php: echo $this->request;
Also to aid in debugging I would suggest you add a ""generated_sql"" parameter to the query object that we can echo to see what the actual generated SQL looks like. EX: {{{echo $the_query->generated_sql;}}}
Thanks!
Tim :o]
PS: Your welcome to contact me at tberneman@gmail.com" tberneman
Future Releases 43634 WP_Query returns wrong result if 10+ search terms and all negative. Query normal normal Awaiting Review defect (bug) new 2018-03-26T15:09:42Z 2019-01-17T01:18:05Z "Set up: create single post with title or body ""Don't match this one!""
Use WP_query with 's' parameter:
{{{
-one -two -three -four -five -six -seven -eight -nine -ten
}}}
WP_Query will find and return the single post and it shouldn't.
Less than 10 negative search terms works fine.
I believe it has to do with a special 'if clause' in the function '''parse_search''' in ''class-wp-query.php''
{{{
// if the search string has only short terms or stopwords, or is 10+ terms long, match it as sentence
if ( empty( $q['search_terms'] ) || count( $q['search_terms'] ) > 9 ) {
$q['search_terms'] = array( $q['s'] );
}
}}}
this makes
{{{
JPH q['search_terms'] : Array
(
[0] => -one -two -three -four -five -six -seven -eight -nine -ten
)
}}}
and later in the function the search variable becomes
{{{
JPH search variable is: AND (((testsite_posts.post_title NOT LIKE '{07e030b91cb064568b0acafd83d99152667b06f2ffd415e48cd2d2f458c2c217}one -two -three -four -five -six -seven -eight -nine -ten{07e030b91cb064568b0acafd83d99152667b06f2ffd415e48cd2d2f458c2c217}') AND (testsite_posts.post_excerpt NOT LIKE '{07e030b91cb064568b0acafd83d99152667b06f2ffd415e48cd2d2f458c2c217}one -two -three -four -five -six -seven -eight -nine -ten{07e030b91cb064568b0acafd83d99152667b06f2ffd415e48cd2d2f458c2c217}') AND (testsite_posts.post_content NOT LIKE '{07e030b91cb064568b0acafd83d99152667b06f2ffd415e48cd2d2f458c2c217}one -two -three -four -five -six -seven -eight -nine -ten{07e030b91cb064568b0acafd83d99152667b06f2ffd415e48cd2d2f458c2c217}'))) AND (testsite_posts.post_password = '')
}}}
" johnh10
Future Releases 52971 WP_Query's meta_query With Multiple EXISTS keys and OR Relation Doesn't Work Properly Query 5.7 normal critical Awaiting Review defect (bug) new 2021-04-05T12:31:53Z 2021-04-05T12:31:53Z "Hi There!
Another Very Weird Issue :)
Using WP_Query's [meta_query] with **OR relation** and Multiple **EXISTS Keys** generates a very long unnecessary inner joins relation and **stuck in an infinite loop** and **consume the MySQL resources** with high load.
I'm trying to get all post IDs that have one of 50 meta keys to replace with new keys, So I collect all meta keys using foreach statement with **OR relation** and pass it to the [meta_query] in WP_Query .. Very simple but I noticed that there's no result and infinite page load and using high resources of MySQL.
I create the SQL statement with $wpdb and it works very fast, So I create a new WP_MetaQuery object to see the result and I noticed a huge unnecessary INNER JOINs relation.
**Here's a full example:**
1. Insert 100 Test Posts and 50 Metas For Each: Append [?action=insert] in the URL
2. Try to get posts using WP_Query: Append [?action=wp_query_and_meta_query] in URL - **RESULT: Infinite Loop**
3. Try to use $wpdb instead: Append [?action=wpdb_query_get_ids] in URL - **RESULT: Success, Takes few seconds**
4. See the SQL statement generated by WP_MetaQuery: add [?action=show_meta_query_clause] - **RESULT: a Huge unnecessary **INNER JOIN x AS x# ON y** relation**
5. [?action=wpdb_query_delete] to delete all added posts only.
{{{
add_action('wp', 'oxibug_trigger_action');
/**
* Trigger Suitable Function
*
* @return void
*/
function oxibug_trigger_action() {
if( ! isset( $_GET['action'] ) ) {
return;
}
$action = wp_strip_all_tags( $_GET['action'] );
switch( strtolower( $action ) ) {
case 'insert': {
oxibug_insert_posts_and_metas();
} break;
case 'wp_query_and_meta_query': {
oxibug_WP_Query_and_meta_query();
} break;
case 'show_meta_query_clause': {
oxibug_show_meta_query_clause();
} break;
case 'wpdb_query_get_ids': {
oxibug_wpdb_query_get_ids();
} break;
case 'wpdb_query_delete': {
oxibug_wpdb_query_delete();
} break;
}
}
/**
* Return New Meta Key
*
* @param mixed $key
* @return string
*/
function oxibug_get_new_meta_key( $key ) {
return sanitize_text_field( sprintf( 'oxibug_xyz%s', $key ) );
}
/**
* Return Key-Value Pairs array with Old and New meta keys
*
* @return array
*/
function oxibug_legacy_and_new_meta_keys() {
return [
'oxibug_abc_post_main_color' => oxibug_get_new_meta_key('_page_main_color'),
'oxibug_abc_page_layout' => oxibug_get_new_meta_key('_page_layout'),
'oxibug_abc_post_sbwide' => oxibug_get_new_meta_key('_page_sb_wide'),
'oxibug_abc_post_sbnarrow' => oxibug_get_new_meta_key('_page_sb_narrow'),
'oxibug_abc_page_sbwide' => oxibug_get_new_meta_key('_page_sb_wide'),
'oxibug_abc_page_sbnarrow' => oxibug_get_new_meta_key('_page_sb_narrow'),
'oxibug_abc_self_video_m4v_url' => oxibug_get_new_meta_key('_format_video_selfhosted_mp4'),
'oxibug_abc_self_video_ogv_url' => oxibug_get_new_meta_key('_format_video_selfhosted_ogv'),
'oxibug_abc_self_video_webmv_url' => oxibug_get_new_meta_key('_format_video_selfhosted_webmv'),
'oxibug_abc_self_video_poster_url' => oxibug_get_new_meta_key('_format_video_selfhosted_poster'),
/* Audio */
'oxibug_abc_soundcloud_url' => oxibug_get_new_meta_key('_format_audio_oembed'),
'oxibug_abc_self_audio_mp3_url' => oxibug_get_new_meta_key('_format_audio_selfhosted_mp3'),
'oxibug_abc_self_audio_oga_url' => oxibug_get_new_meta_key('_format_audio_selfhosted_ogg'),
'oxibug_abc_self_audio_m4a_url' => oxibug_get_new_meta_key('_format_audio_selfhosted_m4a'),
/* Post Formats: Image | Video */
'oxibug_abc_lightbox_check' => oxibug_get_new_meta_key('_format_image_lighbox_enable'),
'oxibug_abc_post_banner_caption' => oxibug_get_new_meta_key('_format_status_banner_caption'),
'oxibug_abc_quote_text' => oxibug_get_new_meta_key('_format_quote_text'),
'oxibug_abc_quote_author' => oxibug_get_new_meta_key('_format_quote_author_name'),
'oxibug_abc_url_text' => oxibug_get_new_meta_key('_format_link_text'),
'oxibug_abc_url_destination' => oxibug_get_new_meta_key('_format_link_url'),
/*
* Layout Settings - if Old = [hide] turn ON the new option
*
* */
'oxibug_abc_post_breadcrumb' => oxibug_get_new_meta_key('_hide_breadcrumb'),
'oxibug_abc_post_meta_info' => oxibug_get_new_meta_key('_hide_metas'),
'oxibug_abc_post_share_box' => oxibug_get_new_meta_key('_hide_share_icons'),
'oxibug_abc_post_tags' => oxibug_get_new_meta_key('_hide_tags_box'),
'oxibug_abc_post_author_box' => oxibug_get_new_meta_key('_hide_author_box'),
'oxibug_abc_related_posts' => oxibug_get_new_meta_key('_hide_related_posts_box'),
'oxibug_abc_posts_navigation' => oxibug_get_new_meta_key('_hide_nav_box'),
/* Review Items */
'oxibug_abc_post_review_types' => oxibug_get_new_meta_key('_review_type'), /* [disabled] => Add 0 to the new meta [_review_show] */
'oxibug_abc_post_review_position' => oxibug_get_new_meta_key('_review_position'),
'oxibug_abc_post_reviews_summation' => oxibug_get_new_meta_key('_review_items_avg'), /* This field is Dynamic - SUM of all review items */
'oxibug_abc_review_item' => oxibug_get_new_meta_key('_review_items'),
'oxibug_abc_post_review_title' => oxibug_get_new_meta_key('_review_title'),
'oxibug_abc_post_review_desc' => oxibug_get_new_meta_key('_review_desc'),
'oxibug_abc_post_review_summary_title' => oxibug_get_new_meta_key('_review_summary_title'),
'oxibug_abc_post_review_summary_desc' => oxibug_get_new_meta_key('_review_summary_desc'),
'oxibug_abc_post_review_user_rates' => oxibug_get_new_meta_key('_review_user_ratings_status'),
'oxibug_abc_post_review_user_rates_bgcolor' => oxibug_get_new_meta_key('_review_user_ratings_result_bgcolor'),
'oxibug_abc_post_review_btn_text' => oxibug_get_new_meta_key('_review_add_btn_text'),
'oxibug_abc_post_review_btn_icon' => oxibug_get_new_meta_key('_review_add_btn_icon'),
'oxibug_abc_post_review_btn_url' => oxibug_get_new_meta_key('_review_add_btn_url'),
'oxibug_abc_post_review_btn_bgcolor' => oxibug_get_new_meta_key('_review_add_btn_bgcolor'),
'oxibug_abc_post_review_pros_word' => oxibug_get_new_meta_key('_review_pros_word'),
'oxibug_abc_post_review_pros_icon' => oxibug_get_new_meta_key('_review_pros_icon'),
'oxibug_abc_post_review_pros_list' => oxibug_get_new_meta_key('_review_pros_list'),
'oxibug_abc_post_review_cons_word' => oxibug_get_new_meta_key('_review_cons_word'),
'oxibug_abc_post_review_cons_icon' => oxibug_get_new_meta_key('_review_cons_icon'),
'oxibug_abc_post_review_cons_list' => oxibug_get_new_meta_key('_review_cons_list'),
/* Post Views */
'oxibug_abc_post_views_count' => oxibug_get_new_meta_key('_post_views'),
];
}
/**
* Insert 100 Test Posts and some Meta Keys
*
*/
function oxibug_insert_posts_and_metas() {
$legacy_and_new_keys = oxibug_legacy_and_new_meta_keys();
$result = [];
for( $i=0; $i<100; $i++ ) {
$post_id = wp_insert_post( [
'post_type' => 'post',
'post_title' => wp_strip_all_tags( sprintf( 'Test Meta Query Post #:%s', $i ) ),
'post_content' => sprintf( 'Test Meta Query Post Content #:%s', $i ),
'post_content_filtered' => '',
'post_excerpt' => '',
'post_status' => 'publish',
// 'post_author' => 1,
// 'post_category' => [],
'comment_status' => '',
'ping_status' => '',
'post_password' => '',
'to_ping' => '',
'pinged' => '',
'post_parent' => 0,
'menu_order' => 0,
'guid' => '',
'import_id' => 0,
'context' => '',
'post_date' => '',
'post_date_gmt' => '',
], TRUE, TRUE );
if( ! is_wp_error( $post_id ) ) {
$result[ $post_id ] = [];
foreach( (array) array_keys( $legacy_and_new_keys ) as $_legacy_key ) {
$upstatus = update_post_meta( $post_id, $_legacy_key, '' );
$result[ $post_id ][ $_legacy_key ] = $upstatus ? 'Added' : 'Failed';
}
/* Clean Cache */
clean_post_cache( $post_id );
}
else {
echo 'ERROR: Insert Post Failed!';
}
}
/* DEBUG */
echo sprintf( '%d Posts Inserted', count( $result ) );
// echo print_r( $result );
}
/**
* --- DEBUG ---
* Show the Meta Query SQL Statement
*
*/
function oxibug_show_meta_query_clause() {
/**
*
* @var wpdb
* */
global $wpdb;
$legacy_meta_keys = oxibug_legacy_and_new_meta_keys();
$meta_query = [
'relation' => 'OR'
];
foreach( (array) array_keys( $legacy_meta_keys ) as $_legacy_key ) {
$meta_query[] = [
'key' => $_legacy_key,
'compare' => 'EXISTS'
];
}
$objMetaQuery = new WP_Meta_Query( $meta_query );
echo print_r( $objMetaQuery->get_sql( 'post', $wpdb->posts, 'ID', NULL ) );
}
/**
* Query using WP_Query and meta_query key inside it
*
*/
function oxibug_WP_Query_and_meta_query() {
/**
*
* @var wpdb
* */
global $wpdb;
$legacy_meta_keys = oxibug_legacy_and_new_meta_keys();
$meta_query = [
'relation' => 'OR'
];
foreach( (array) array_keys( $legacy_meta_keys ) as $_legacy_key ) {
$meta_query[] = [
'key' => $_legacy_key,
'compare' => 'EXISTS'
];
}
$obj_WP_Query = new WP_Query( [
'numberposts' => -1,
'paged' => null,
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => $meta_query,
'fields' => 'ids',
'cache_results' => false,
] );
/*
* Stuck in an Infinite Loop Because of the Huge SQL Statement
* generated by [meta_query]
*
* */
if( $obj_WP_Query->have_posts() ) {
echo sprintf( '%d Posts Found', $obj_WP_Query->found_posts );
/* DEBUG - NOT Working - */
// echo print_r( $obj_WP_Query->meta_query->get_sql( 'post', $wpdb->posts, 'ID', NULL ) );
}
else {
echo 'No Posts Found';
}
$obj_WP_Query->reset_postdata();
wp_cache_flush();
}
/**
* Get Posts IDs by one of the meta_key(s) provided
*
*/
function oxibug_wpdb_query_get_ids() {
global $wpdb;
$legacy_meta_keys = oxibug_legacy_and_new_meta_keys();
$qry = ""SELECT DISTINCT tbl_posts.ID FROM {$wpdb->posts} tbl_posts INNER JOIN {$wpdb->postmeta} tbl_metas ON ( tbl_posts.ID = tbl_metas.post_id ) WHERE"";
/* Add [OR] in the second condition */
$where_clause = 0;
foreach( (array) array_keys( $legacy_meta_keys ) as $_legacy_key ) {
$where_clause++;
$qry .= ( $where_clause === 1 ) ?
$wpdb->prepare( ' tbl_metas.meta_key = %s', esc_sql( $_legacy_key ) ) :
$wpdb->prepare( ' OR tbl_metas.meta_key = %s', esc_sql( $_legacy_key ) );
}
$result = $wpdb->get_results( $qry );
$wpdb->flush();
echo print_r( wp_list_pluck( $result, 'ID' ) );
}
/**
* --- DEBUG ---
*
* DELETE all added Posts by meta_key(s)
*
*/
function oxibug_wpdb_query_delete() {
global $wpdb;
$legacy_meta_keys = oxibug_legacy_and_new_meta_keys();
$qry = ""DELETE tbl_posts, tbl_metas FROM {$wpdb->posts} tbl_posts INNER JOIN {$wpdb->postmeta} tbl_metas ON ( tbl_posts.ID = tbl_metas.post_id ) WHERE"";
$where_clause = 0;
foreach( (array) array_keys( $legacy_meta_keys ) as $_legacy_key ) {
$where_clause++;
$qry .= ( $where_clause === 1 ) ?
$wpdb->prepare( ' tbl_metas.meta_key = %s', esc_sql( $_legacy_key ) ) :
$wpdb->prepare( ' OR tbl_metas.meta_key = %s', esc_sql( $_legacy_key ) );
}
$result = $wpdb->get_results( $qry );
$wpdb->flush();
}
}}}
" oxibug
Future Releases 43391 WP_User_Query bug Query 4.9.4 normal normal Awaiting Review defect (bug) new 2018-02-23T09:47:47Z 2018-03-03T08:44:40Z "I've got an issue when doing a query with WP_User_Query and trying to list from a specific role AND using 'orderby' => 'post_count'. The query simply fails to list the correct results.
Here are the query arguments:
{{{#!php
array( 'ID', 'user_login', 'display_name' ),
'role' => 'expert',
'number' => $numPosts,
'offset' => $page > 1 ? $numPosts : 0,
'order' => 'DESC',
'orderby' => 'post_count'
);
}}}
If I remove the 'role' argument from the query it works, but with the 'role' included it doesn't.
" zkingdesign
Future Releases 21790 When set a static front page WP main query isn't set correctly SergeyBiryukov Query 3.4.1 normal normal Future Release defect (bug) assigned 2012-09-04T13:50:26Z 2017-05-05T09:34:57Z "In my project I use on several places pre_get_posts filter. When setting a static frontpage and blog page I get several notices on my screen. When I var_dump the main query the only value that is set it the page_id.
Even the post_type isn't set." markoheijnen
Future Releases 43445 Wildcard `LIKE` support for `WP_Meta_Query` (and maybe other queries?) Query normal normal Awaiting Review defect (bug) new 2018-03-01T04:09:44Z 2018-03-02T16:15:22Z "Passing `LIKE` as the `compare` parameter for a meta query (or `compare_key`, after [42768]) results in what is essentially a ""contains"" query for the literal `value` (or `key`) string. So:
{{{
array(
'compare' => 'LIKE',
'value' => 'foo',
)
}}}
becomes `WHERE ... value LIKE '%foo%'`.
MySQL `LIKE` wildcard characters `%` and `_` are escaped, so it's not possible to do a non-standard anchored search, or any other custom `LIKE` query.
It would be nice if you could pass a string like `foo%` and have the wildcard characters respected.
A few considerations:
1. Syntax. A potential solution is suggested in https://core.trac.wordpress.org/ticket/42409#comment:14. Another possibility is a filter for enabling the ""non-escaped"" version
2. Security. I'm unsure that there's a way to do this without introducing security issues, specifically around the `%` character. Any potential patch would need serious review." boonebgorges
Future Releases 40327 Wrong SQL request for 'EXIST' OR 'NOT EXIST' on same post meta Query 4.7 normal normal Awaiting Review defect (bug) new 2017-03-31T19:57:27Z 2017-03-31T19:57:27Z "Hi,
I want to make a query on a custom post type (event post type) with custom post status (on air, forthcoming...) joining optional meta (event rating) then order by decreasing rating, defaulting to increasing title.
I'm using 'new WP_Query()' way as secondary loop with the following WP query parameters:
{{{#!php
[
// Valid events only
'post_type' => My_Post_Type::POST_TYPE_EVENT,
'post_status' => [
My_Post_Type::EVENT_STATUS_ON_AIR,
My_Post_Type::EVENT_STATUS_FORTHCOMING,
],
// Join optional rating
'meta_query' => [
'relation'=> 'OR',
[
'key' => My_Post_Type::EVENT_ATTR_RATING,
'compare'=> 'EXISTS',
],
[
'key' => My_Post_Type::EVENT_ATTR_RATING,
'compare' => 'NOT EXISTS',
],
],
// Order by rating then title
'orderby' => [
My_Post_Type::EVENT_ATTR_RATING => 'DESC',
'post_title' => 'ASC',
],
// Limit number
'posts_per_page' => self::NB_HOME_COMING_EVENTS,
]
}}}
Resulting SQL query is:
{{{#!php
SELECT SQL_CALC_FOUND_ROWS cq_posts.* FROM cq_posts
LEFT JOIN cq_postmeta ON ( cq_posts.ID = cq_postmeta.post_id )
LEFT JOIN cq_postmeta AS mt1 ON (cq_posts.ID = mt1.post_id AND mt1.meta_key = 'ev_rating' )
WHERE 1=1 AND (
cq_postmeta.meta_key = 'ev_rating'
OR
mt1.post_id IS NULL
) AND cq_posts.post_type = 'event' AND ((cq_posts.post_status = 'ev_on_air' OR cq_posts.post_status = 'ev_coming'))
GROUP BY cq_posts.ID
ORDER BY cq_postmeta.meta_value+0 DESC, cq_posts.post_title ASC
LIMIT 0, 6
}}}
The result set is not what I was looking for (in fact has no sense at all for me)
The right SQL query should be something like this:
{{{#!php
SELECT SQL_CALC_FOUND_ROWS cq_posts.* FROM cq_posts
LEFT JOIN cq_postmeta ON ( cq_posts.ID = cq_postmeta.post_id AND cq_postmeta.meta_key = 'ev_rating' )
WHERE 1=1 AND cq_posts.post_type = 'event' AND ((cq_posts.post_status = 'ev_on_air' OR cq_posts.post_status = 'ev_coming'))
GROUP BY cq_posts.ID
ORDER BY cq_postmeta.meta_value+0 DESC, cq_posts.post_title ASC
LIMIT 0, 6
}}}
Only one LEFT JOIN is required.
Can anyone confirm it is a bug or tell me what WP query parameters I must use instead ?
Thanks in advance.
" solo14000
Future Releases 40300 `title` parameter causes `WP_Query` to return sticky posts. Query 4.7.3 normal normal Awaiting Review defect (bug) new 2017-03-29T14:24:28Z 2017-03-29T14:24:28Z "When a `title` parameter is present in the WP_Query arguments array then sticky posts are included in the `$query->posts` array.
I'm not sure is it a bug, or is it just an incomplete documentation. The same happens with `post__in` parameter but in this case, I'm sure that it's not a bug because the documentation mentions that sticky posts are returned when using the `post__in` parameter." wujek_bogdan
Future Releases 53495 incorrect (and confusing) DocBlock for get_page_by_title() Query 5.3 normal normal Awaiting Review defect (bug) new 2021-06-24T00:41:14Z 2021-06-24T00:42:10Z "The DocBlock of [https://developer.wordpress.org/reference/functions/get_page_by_title/ get_page_by_title()] says:
> If more than one post uses the same title, the post with the smallest ID will be returned. Be careful: in case of more than one post having the same title, it will check the oldest publication date, not the smallest ID.
That description was added in [45779].
Besides the fact that the text after `Be careful:` seems to contradict that the statement that `the post with the smallest ID will be returned`, there actually is no guarentee that if there is more than 1 post with the same title that the one with the smallest ID will be returned.
The query performed by [https://core.trac.wordpress.org/browser/trunk/src/wp-includes/post.php#L5534 get_page_by_title()] is:
{{{#!php
$sql = $wpdb->prepare(
""
SELECT ID
FROM $wpdb->posts
WHERE post_title = %s
AND post_type = %s
"",
$page_title,
$post_type
);
}}}
(with a slight mod if an array of post types is passed).
Since there is no `ORDER BY` clause in that query, if there are more than 1 posts with the same title the order in which they are returned is not defined by SQL (i.e., is implemented dependent).
The SQL-92 spec [http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt explicitly states]:
> General Rules
>
> 1) All General Rules of Subclause 7.10, """", apply
> to the .
>
> 2) Let Q be the result of the .
>
> 3) If Q is empty, then a completion condition is raised: no data.
>
> 4) If an is not specified, then the ordering of
> the rows of Q is implementation-dependent.
As far as I can tell, no later revisions of the SQL spec are available for free on the web, so I don't know if anything has changed in the what the language says happens in the absense of an `ORDER BY` clause
I've looked through the MySQL and Maria DB docs for an explicit statement that says as much and haven't been able to find one.
But I think the DocBlock should be changed to say something like:
> If more than one post uses the same title, which of the multiple posts is returned is not defined.
though I'm not completely happy with that wording, and welcome other suggestions.
" pbiron
Future Releases 40166 query_vars bug sets is_home to false. Query 4.7.3 normal normal Awaiting Review defect (bug) new 2017-03-15T18:36:27Z 2019-05-20T09:17:12Z "Hi @boonebgorges, in reference to an older ticket - #25143 following is the issue i am facing.
Similar to the other ticket, when registering a query variable as follows:
{{{#!php
query_vars;
$args = [
'meta_key' => 'my_meta_key',
'orderby' => 'meta_value',
'order' => 'ASC',
];
$query->query_vars = array_merge($queryVars, $args);
});
}}}
And for `pre_get_posts` this technique would work. But with `pre_get_terms` it's different. Digging into `WP_Term_Query` class code I found that this code would cause `parse_orderby()` method to set the `$maybe_orderby_meta` variable to `true`. But it doesn't mean that terms will be sorted by a meta field. It only means that terms '''maybe''' will be sorted by meta.
There's an another filter required. At the end of the `parse_orderby()` method there's an another filter applied: `get_terms_orderby`.
So in order to sort terms by meta field there's one more thing required. Something like:
{{{#!php
'foo',
'meta_query' => array(array(
'key' => 'my_description',
'value' => 'foo',
'compare' => 'LIKE',
)),
))
}}}
The problem is that the meta query and the search WHERE clauses are going to be joined by AND, not by OR. The resulting query is going to be something like that:
{{{
SELECT [...] WHERE
(
posts.post_title LIKE '%foo%'
OR posts.post_content LIKE '%foo%'
OR posts.post_excerpt LIKE '%foo%'
) AND (
postmeta.meta_key = 'my_description' AND postmeta.meta_value LIKE '%foo%'
) AND [...]
}}}
But I'd need:
{{{
SELECT [...] WHERE
(
posts.post_title LIKE '%foo%'
OR posts.post_content LIKE '%foo%'
OR posts.post_excerpt LIKE '%foo%'
OR (postmeta.meta_key = 'my_description' AND postmeta.meta_value LIKE '%foo%')
) AND [...]
}}}
which is impossible to achieve with a regular `WP_Meta_Query`. Actually it's pretty hard to do: it involves to hook into WHERE and JOIN clauses, and to rewrite almost the whole search mechanism.
That's why I suggest to implement into core a simple way of doing this:
{{{
new WP_Query(array(
's' => 'foo',
'meta_search' => array('my_description', 'my_other_field', 'etc')
))
}}}
This `meta_search` parameter would accept an array of meta_key strings and would just be ignored when not set.
Please have a look into my attached solution." max345
Future Releases 42907 Meta Queries: support ordering by meta_value but still including items without that key Query normal normal Awaiting Review enhancement new 2017-12-14T21:54:48Z 2019-01-16T06:50:09Z "Consider this scenario:
- You want to order a query's results by `meta_value` of a particular `meta_key`.
- Not all items have that key/value pair set.
- You want to still include those items in the results.
- You want them to be ordered as if the `meta_value` is `NULL` (or `0` if using `meta_value_num`).
There is currently no way to do this. (But it is a desired feature, see [https://wordpress.stackexchange.com/questions/28409/way-to-include-posts-both-with-without-certain-meta-key-in-args-for-wp-query 1] [https://wordpress.stackexchange.com/questions/102447/sort-on-meta-value-but-include-posts-that-dont-have-one?noredirect=1&lq=1 2] [https://stackoverflow.com/questions/17016770/wordpress-order-by-meta-value-if-it-exists-else-date 3].)
If you don't care about the items that don't have the meta key set being included, then you can use `compare` => `EXISTS`.
{{{#!php
'meta_value',
'meta_query' => array(
array(
'key' => 'test',
'compare' => 'EXISTS',
),
),
)
);
}}}
However, that won't work if we want to include results where the key/value pair doesn't exist.
A workaround is to do something like this:
{{{#!php
'meta_value',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'test',
'compare' => 'EXISTS',
),
array(
'key' => 'test',
'compare' => 'NOT EXISTS',
),
),
)
);
}}}
This approach solves the problem of the items with no key/value pair not being included. However, it does not order those items in the results reliably. Instead of the `meta_value` being interpreted as `null` (which we might expect), the database will choose another `meta_value` entry for that item to order that item based on.
My proposal is to add a `NONE` option for `compare`, so that it would be possible to achieve the desired ordering with a query like this:
{{{#!php
'meta_value',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'test',
'compare' => 'NONE',
),
),
)
);
}}}
This would result in a query that included a `LEFT JOIN` on the meta table for that `meta_key`, but did not include any conditions in the query. (This is basically a `NOT EXISTS` query but without the `ID = NULL` requirement, so that it is just a left join and not a left outer join.)
When using `meta_value_num` in particular though, ordering by `NULL` may not be desirable (those results will be after all other results); `0` may be preferred as the imputed value (consider a case when negative values are present). To make this possible, I suggest allowing the clause to also specify a `default` value, which will be used in the `ORDER BY` clause with `COALESCE`.
Initial patch forthcoming." jdgrimes
Future Releases 38173 Meta query creates unecessary multiple left joins when using the same meta key Query 3.2 normal normal Future Release enhancement new 2016-09-27T16:36:27Z 2017-02-17T03:06:46Z "If you specify the below as a meta_query wordpress creates an extremely bad and inefficient query, it seems to unnecessarily create a left join for each array even though they have the same key when it could use the same join
{{{#!php
'OR',
array(
'key' => 'product',
'value' => '1',
'compare' => '!='
),
array(
'key' => 'product',
'compare' => 'NOT EXISTS'
)
);
}}}
{{{
SELECT SQL_CALC_FOUND_ROWS vvc_posts.ID FROM vvc_posts LEFT JOIN vvc_postmeta ON ( vvc_posts.ID = vvc_postmeta.post_id ) LEFT JOIN vvc_postmeta AS mt1 ON (vvc_posts.ID = mt1.post_id AND mt1.meta_key = 'product' ) WHERE 1=1 AND (
( vvc_postmeta.meta_key = 'product' AND CAST(vvc_postmeta.meta_value AS CHAR) != '1' )
OR
mt1.post_id IS NULL
) AND vvc_posts.post_type = 'news' AND ((vvc_posts.post_status = 'publish')) GROUP BY vvc_posts.ID ORDER BY vvc_posts.post_date DESC LIMIT 0, 10
}}}
On my site this query takes a huge 6.640 sec, more than 80% of the page's ttfb.
{{{
SELECT SQL_CALC_FOUND_ROWS vvc_posts.ID
FROM vvc_posts
LEFT JOIN vvc_postmeta ON ( vvc_posts.ID = vvc_postmeta.post_id && vvc_postmeta.meta_key = 'product')
WHERE 1=1
AND (CAST(vvc_postmeta.meta_value AS CHAR) != '1' OR vvc_postmeta.post_id IS NULL )
AND vvc_posts.post_type = 'news'
GROUP BY vvc_posts.ID
ORDER BY vvc_posts.post_date
}}}
whereas an optimized version takes only 0.969 sec." neonWired
Future Releases 41843 Provide more flexibility to the `get_{$adjacent}_post_where` hook Query 4.9 normal normal Awaiting Review enhancement new 2017-09-09T15:33:07Z 2019-03-13T18:09:55Z "I'm working on getting the previous/next post for a Custom Post Type based on a certain postmeta value, and the `get_{$adjacent}_post_where` seems the appropriate hook for this. However, it currently receives the whole WHERE clause as a parameter. IMO it would be ideal to be able to override just the `WHERE p.post_date $op %s AND p.post_type = %s` part and keep the other (useful ones) intact.
This could potentially be solved in a non-breaking way by sending `$where` as it stands ''before'' concatenation with `WHERE p.post_date $op %s AND p.post_type = %s`, so that authors can neatly plugin a postmeta condition." danburzo
Future Releases 39708 Provide suppress_actions argument on WP_Query::get_posts or apply suppress_filters to pre_get_posts Query 4.7.1 normal normal Awaiting Review enhancement new 2017-01-26T18:03:33Z 2018-07-03T16:12:19Z "{{{#!php
parse_query();
/**
* Fires after the query variable object is created, but before the actual query is run.
*
* Note: If using conditional tags, use the method versions within the passed instance
* (e.g. $this->is_main_query() instead of is_main_query()). This is because the functions
* like is_main_query() test against the global $wp_query instance, not the passed one.
*
* @since 2.0.0
*
* @param WP_Query &$this The WP_Query instance (passed by reference).
*/
do_action_ref_array( 'pre_get_posts', array( &$this ) );
// Shorthand.
$q = &$this->query_vars;
}}}
I'm proposing that, just like we have `$q['suppress_filters']` that we add a `$q['suppress_actions']` to prevent actions like `pre_get_posts` from running (which is essentially a filter) on my query (if I want).
We could also apply `$q['suppress_filters']` to the `pre_get_posts` action since the user can modify the query since it's passed by reference, and may not create another argument, but it is not really a filter.
I'm not sure how this idea could be problematic, nor can I think of any reason why we couldn't do anything like this, but I thought I'd at least open it up for discussion and see what becomes of it. I guess my question really is why can I suppress filters but not actions?" aubreypwd
Future Releases 40404 Slow queries with a large number of posts (tens of thousands and above) Query 4.7.3 normal normal Awaiting Review enhancement new 2017-04-10T19:23:04Z 2017-04-10T19:28:25Z "translation yandex:
TASK:
Faced with such a problem that when the number of posts of 20 000+, the sample was held for 30 seconds each page. That is, the database constantly selects all records to select all of a certain number (items per page). The computer is weak for the global scale, but plans to increase to 7 000 000+ posts. Usually hard disks are not the problem.
QUESTION: is There a possibility to optimize the sample?
My SOLUTION (working in project MySQL): (maybe I should add this decision to the release of WP)
Therefore, the solution is selected such that, upon receipt of a sample using the function get_posts () (wp-includes/class-wp-query.php) you need to ""intercept"" a standard request, modify the request function and give the already constructed list.
To store ""lists"" of sorting in the database was created table:
###
CREATE TABLE `wp_сорт` (
`номер_сорта` int(10) unsigned NOT NULL AUTO_INCREMENT,
`значение_сорта` text NOT NULL,
`время_сорта` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`период_сорта` int(10) unsigned NOT NULL,
`мд5_сорта` varchar(32) NOT NULL,
`записей_сорта` int(10) unsigned NOT NULL,
`вызов_сорта` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
PRIMARY KEY (`номер_сорта`),
UNIQUE KEY `инд_мд5_сорта` (`мд5_сорта`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `wp_сортировка` (
`номер_поста` bigint(20) unsigned NOT NULL,
`номер_страница` int(10) unsigned NOT NULL DEFAULT '0',
`номер_на_странице` tinyint(3) unsigned NOT NULL DEFAULT '0',
`номер_сорта` int(10) unsigned NOT NULL DEFAULT '1',
UNIQUE KEY `уник` (`номер_страница`,`номер_на_странице`,`номер_сорта`) USING BTREE,
KEY `внешка_поста` (`номер_поста`) USING BTREE,
KEY `внешка_сорта` (`номер_сорта`),
CONSTRAINT `внешка_поста` FOREIGN KEY (`номер_поста`) REFERENCES `wp_posts` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `внешка_сорта` FOREIGN KEY (`номер_сорта`) REFERENCES `wp_сорт` (`номер_сорта`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
###
Modification of the file wp-includes/class-wp-query.php in the function get_posts () somewhere 2513 string to find:
###
{{{#!php
0 && !isset( $q[ 'search_terms' ] );
if ( $bMod ) {
$мЗначение = [
""join"" => $join,
""where"" => $where,
""groupby"" => $groupby,
""orderby"" => $orderby,
""posts_per_page"" => $q[ ""posts_per_page"" ]
];
$сЗначение = serialize ( $мЗначение );
$сМд5 = md5 ( $сЗначение );
$aR = $wpdb->get_results ( ""SELECT `номер_сорта`, `записей_сорта` FROM `wp_сорт`
WHERE
`мд5_сорта`='{$сМд5}'"", ARRAY_A );
$sTime = date ( ""Y-m-d H:i:s"", strtotime ( ""now"" ) + 14400 );
if ( !$aR ) {
$stable = ""wp_сорт"";
$sColumName = ""номер_сорта"";
$iN = $wpdb->get_var ( 'SELECT t1.' . $sColumName . '+1
FROM ' . $stable . ' AS t1
LEFT JOIN ' . $stable . ' AS t2
ON t1.' . $sColumName . '+1 = t2.' . $sColumName . '
WHERE t2.' . $sColumName . ' IS NULL
ORDER BY t1.' . $sColumName . '
LIMIT 1' );
$wpdb->insert (
""wp_сорт"",
[
""номер_сорта"" => $iN,
""значение_сорта"" => $сЗначение,
""период_сорта"" => 86400,
""мд5_сорта"" => $сМд5,
""вызов_сорта"" => $sTime
],
[
'%d',
'%s',
'%d',
'%s',
'%s'
]
);
$чНомерСорта = $wpdb->insert_id;
$iPerPage = $q[ ""posts_per_page"" ] - 1;
$iQ = $wpdb->query (
""SET @iVar = -1;"" );
$iQ = $wpdb->query (
""SET @iVar2 = 0;"" );
$sQ = ""INSERT INTO `wp_сортировка`
SELECT SQL_CALC_FOUND_ROWS @iVar3:=wp_posts.ID,
IF(@iVar={$iPerPage},@iVar2:=@iVar2+1,IF(ISNULL(@iVar2), @iVar2:=0 , @iVar2)) t,
IF(@iVar<"" . $iPerPage . "",@iVar:=@iVar+1,@iVar:=0) t1,
{$чНомерСорта}
FROM wp_posts {$join}
WHERE 1=1 {$where} {$groupby} {$orderby}
ON DUPLICATE KEY UPDATE `номер_поста`=@iVar3;"";
$wpdb->query ( $sQ );
$q[ ""iRows"" ] = $iRows = $wpdb->get_var ( ""SELECT FOUND_ROWS()"" );
$wpdb->update ( ""wp_сорт"", [
""записей_сорта"" => $iRows, ""время_сорта"" => $sTime
],
[ ""номер_сорта"" => $чНомерСорта ] );
} else {
$чНомерСорта = $aR[ 0 ][ ""номер_сорта"" ];
$wpdb->update ( ""wp_сорт"", [ ""вызов_сорта"" => $sTime ],
[ ""номер_сорта"" => $чНомерСорта ] );
$q[ ""iRows"" ] = $iRows = $aR [ 0 ][ ""записей_сорта"" ];
}
if ( isset ( $q[ ""paged"" ] ) && $q[ ""paged"" ] )
$iPaged = $q[ ""paged"" ] - 1;
else
$iPaged = 0;
$this->request = ""SELECT $found_rows $distinct {$wpdb->posts}.ID FROM
{$wpdb->posts} $join WHERE
{$wpdb->posts}.ID IN(SELECT `номер_поста` FROM `wp_сортировка` WHERE `номер_страница`={$iPaged}
AND `номер_сорта`={$чНомерСорта}) GROUP BY {$wpdb->posts}.ID"";
//echo 0;
} else {
$this->request = ""SELECT $found_rows $distinct {$wpdb->posts}.ID FROM {$wpdb->posts} $join WHERE
1=1 $where $groupby $orderby $limits"";
}
}}}
###
To give the number of records in set_found_posts function ( $q, $limits ) change:
###
{{{#!php
found_posts = $wpdb->get_var ( apply_filters_ref_array ( 'found_posts_query', [ 'SELECT FOUND_ROWS()', &$this ] ) );
}}}
###
on:
###
{{{#!php
found_posts = $q[ ""iRows"" ];
else
$this->found_posts = $wpdb->get_var ( apply_filters_ref_array ( 'found_posts_query', [ 'SELECT FOUND_ROWS()', &$this ] ) );
}}}
###
in cron you need to add one-time during installation, for example, the plugin task:
###
{{{#!php
xray_sorting';
$aR = $wpdb->get_results ( ""SELECT * FROM `wp_сорт` WHERE (NOW()>DATE_ADD(`время_сорта`,INTERVAL `период_сорта`
SECOND) OR `время_сорта`<`вызов_сорта`) AND `номер_сорта`>0"", ARRAY_A );
foreach ( $aR as $aV ) {
$aЗначение = unserialize ( $aV[ ""значение_сорта"" ] );
$iPerPage = $aЗначение[ ""posts_per_page"" ] - 1;
$iQ = $wpdb->query (
""SET @iVar = -1;"" );
$iQ = $wpdb->query (
""SET @iVar2 = 0;"" );
$sQ = ""INSERT LOW_PRIORITY INTO `wp_сортировка`
SELECT SQL_CALC_FOUND_ROWS @iVar3:=wp_posts.ID,
IF(@iVar={$iPerPage},@iVar2:=@iVar2+1,IF(ISNULL(@iVar2), @iVar2:=0 , @iVar2)) t,
IF(@iVar<"" . $iPerPage . "",@iVar:=@iVar+1,@iVar:=0) t1,
{$aV[""номер_сорта""]}
FROM wp_posts {$aЗначение[""join""]}
WHERE 1=1 {$aЗначение[""where""]} {$aЗначение[""groupby""]} {$aЗначение[""orderby""]}
ON DUPLICATE KEY UPDATE `номер_поста`=@iVar3;"";
$iQ = $wpdb->query ( $sQ );
if ( !$wpdb->last_error == """" ) {
echo ""\nсорт {$iQ} "" . $aV[ ""номер_сорта"" ] . "": провал: "" . htmlspecialchars ( $sQ ) . "" "" . $wpdb->last_error
. "";"";
} else {
echo ""\nсорт {$iQ} "" . $aV[ ""номер_сорта"" ] . "": норма;"";
}
$iRows = $wpdb->get_var ( ""SELECT FOUND_ROWS()"" );
echo $wpdb->update ( ""wp_сорт"", [
""записей_сорта"" => $iRows, ""время_сорта"" => date ( ""Y-m-d H:i:s"", strtotime
( ""now"" ) + 14400 )
],
[
""номер_сорта"" => $aV[ ""номер_сорта"" ]
] );
}
# Стираем старые записи сортировок 604800 сек - это 7 суток
$wpdb->query ( ""DELETE FROM `wp_сорт` WHERE `вызов_сорта`<"" . date ( ""Y-m-d H:i:s"", strtotime ( ""now"" ) - 604800 ) . "" AND `номер_сорта`>0"" );
}
}}}
###
I repeat that this is a working model. Can requires file. But all the errors which may be in code(commas, spaces, something like that) is the problem of copy-paste.
[https://ru.wordpress.org/support/topic/%d0%bc%d0%b5%d0%b4%d0%bb%d0%b5%d0%bd%d0%bd%d0%b0%d1%8f-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d0%b2%d1%8b%d0%b1%d0%be%d1%80%d0%ba%d0%b8-%d0%bf%d1%80%d0%b8-%d0%b1%d0%be%d0%bb%d1%8c%d1%88%d0%be%d0%bc/]" xrayboy
Future Releases 42082 Support compare custom fields in WP_Meta_Query Query 4.9.4 normal normal Awaiting Review enhancement new 2017-10-04T01:30:51Z 2018-02-28T13:32:39Z "The syntax of `WP_Meta_Query` currently is limited to values you already know.
It's not possible to compare between two meta_values:
{{{
SELECT posts WHERE meta_value_one > meta_value_two
}}}
I propose allow compare two meta_fields. For example, the pseudocode above would be represented as a meta_query argument that looks like this:
{{{#!php
'meta_value_one',
'value' => 'meta_value_two',
'compare' => '>',
'type' => 'META_VALUE'
),
}}}
A workaround can be found [https://wordpress.stackexchange.com/a/164041 here] and [https://gist.github.com/mariovalney/e8646d8c64db36e9f239e6d05f2e5923 here] hahaha.
Feedback is welcome." mariovalney
Future Releases 30044 Use subqueries for AND clauses in WP_Meta_Query Query 4.1 normal normal Future Release enhancement new 2014-10-19T19:04:07Z 2022-11-02T15:50:32Z "See #24093, starting about here, for background: https://core.trac.wordpress.org/ticket/24093#comment:10
When multiple clauses are passed to `WP_Meta_Query` under the scope of an AND relation, a new table JOIN is required for each clause. With very large meta tables, this can lead to poor performance. We should investigate the performance implications of using subqueries for some of these queries to avoid the joins, much like what happens in `WP_Tax_Query` for NOT IN and AND operators.
Note that the improvements to OR queries in [29953] probably mean that subqueries will not be faster in most cases where relation=OR.
First step toward this would be to see some benchmarks using data of different kinds: small databases; large sets of posts with relatively small postmeta tables; large sets of posts with large amounts of postmeta. As pento notes here https://core.trac.wordpress.org/ticket/24093#comment:30, we'll also need to look at how performance differs between supported versions of MySQL." boonebgorges
Future Releases 26937 get_adjacent_post() should use WP_Query rather than build its own SQL query nacin Query 3.7 normal normal Future Release enhancement reopened 2014-01-25T18:51:47Z 2018-01-31T20:33:04Z "With the introduction of the `WP_Date_Query` through r25139, `get_adjacent_post()` no longer needs to build its own SQL to retrieve adjacent posts. By switching to `WP_Query`, we gain the benefit of its performance improvements, including native caching.
The trickiest part of this change is maintaining support for the `get_{$adjacent}_post_join` and `get_{$adjacent}_post_where` filters currently applied to the SQL built in `get_adjacent_post()`." ethitter
Future Releases 43324 query_vars is not necessarely representative of the final query_vars used to build the SQL query Query normal normal Awaiting Review enhancement new 2018-02-14T23:53:57Z 2019-01-16T06:50:09Z "I've recently stumbled upon a case here where the post_type query_var changes over the process of the query building process, and the change is not reflected in the query_vars variable of the query.
On the section highlighted [https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-query.php#L2067-L2088 here] (sorry for pasting a GitHub link, i just wanted to use the section highlighting feature), you can see that if there's no post_type set in the query, but you're querying taxonomies (eg a tax archive query), the post_type is set (using a separate variable), and then used on the [https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-query.php#L2345-L2366 following section] to build up the where statement.
In my opinion all of the query_vars modified during the process should be reflected in the query_vars variable, so you can after see the actual value being used for querying (on the {{{posts_request}}} filter for example).
You can see [https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-query.php#L2152-L2160 here] a section where the {{{$q['author']}}, {{{$q['author__in']}}} and {{{$q['author__not_in']}}}. These is an example of changes that are not reflected in the query_vars (since there's no call to fill_query_vars after all this extra parsing, sanitizing, and defaulting process is made).
Let me know your thoughts." msaggiorato
Future Releases 39632 Adding Query identifier attribute Query normal normal Awaiting Review feature request new 2017-01-18T19:55:17Z 2017-06-07T21:13:26Z "You create any query by passing the arguments to `WP_Query`.
What will happen if we add the custom query identifier `_id` like this?
{{{#!php
'custom_name',
...
);
$q = new WP_Query( $args );
}}}
Nothing bad, and one good thing.
Using this `_id` I can work with filters like `posts_where` super easy.
This would work for many other filters from ''wp-includes/class-wp-query.php''
{{{#!php
query will hold the query arguments ...
if ( 'custom_name' == $q->query['_id'] ){
// do our improvement on $where
return $where.
}
return $where;
}
add_filter( 'posts_where', '_20170118_posts_where', 10 , 2 );
}}}
If you need more details here is the original [http://wordpress.stackexchange.com/questions/252246/how-to-detect-custom-query-inside-posts-where-hook/252406#comment375812_252406 example].
This already works, but we can benefit more if we add the `_id` for all WordPress core generated queries?
This should happen just after `WP_Rewrite` returns the query arguments, based on the query flags.
Let's test the future in case of main search query ( `$is_search` flag is true ).
You may write like this to address the search query:
{{{#!php
is_main_query() && $q->is_search() ){
... // do something with $where
}
return $where;
}}}
but with the `_id` '''main-search''' argument, you could write:
{{{#!php
get( '_id' ) ){
... // do something with $where
}
return $where;
}}}
This is somehow similar to the threads #15063 and #23833, but not exactly.
What would be the gain?
WordPress query programming may become simpler, and queries may be managed using '''human-readable''' names.
" prosti
Future Releases 37837 Extend WP_Query author parameters to filter by role Query 4.7 normal normal Awaiting Review feature request new 2016-08-26T10:25:01Z 2017-03-30T17:01:37Z "WP_Query contains a series of author parameters (`author', ' author_name', ' author__in', and `author__not_in` as documented on the Codex).
It wpould be nice to add `author_role__in` and maybe `author_role__not_in` as valid parameters, and be able to also query for posts given one or a set of user roles. I can see a lot of usages, and this has indeed been asked inside the community in some places, although I could not find a Track dedicated ticket.
AFAIK, this would require the WP_Query database interaction to include the usermeta table, which can be expensive by default, and add a LIKE statement against the `wp_capabilities` usermeta field value, which is also expensive by default. So this might introduce performance problems and be discarded because of that. But otherwise, I would like that we consider this as a possible feature to add." jadpm
Future Releases 43356 create is_403 function Query 4.9.3 normal normal Awaiting Review feature request new 2018-02-19T13:48:04Z 2018-02-19T16:04:07Z Create is_403() function and the ability to create a 403.php file in template to customize the page that visitors see when there try to access to a private content when there not loged in. fabienlege
Future Releases 52501 Bad date format in data picker, depends on time format settings Quick/Bulk Edit 5.6.1 normal normal Awaiting Review defect (bug) reopened 2021-02-11T21:52:54Z 2023-03-15T13:21:29Z "Datepicker in publish area, and in quick edit, depends on time format.
In europe is usual format dd.mm.yyyy, it works with setting of time format is setted to 'g:i A'.
After change to 24 hour format ('G:i'/'H:i') is datepicker setted to mm-dd-yyyy
https://test.olsavsky.cz/dp.jpg ('Únor' is 'February' in CS).
Thank You" MarekTP
Future Releases 10762 Bulk editing creates invalid URIs Quick/Bulk Edit 2.8.4 normal normal Future Release defect (bug) assigned 2009-09-09T16:53:30Z 2018-12-16T02:57:02Z They simply get too long for example if you move 999 posts to trash. It might be helpfull to switch to the post form method. hakre
Future Releases 57753 Quickedit characters on date fields Quick/Bulk Edit 6.1.1 normal trivial Awaiting Review defect (bug) new 2023-02-17T09:45:45Z 2023-02-22T20:51:17Z "I know this isn't a massive issue as content editors should use their common sense, but it seems like a user can enter random characters into the date/times via quick edits
- Select a post
- Press ‘Quick Edit’
- Try to insert letters, special characters in the ‘year’, ‘month’, ‘hour’, ‘minutes’ fields
- Press ‘Enter’
" garbagedisco
Future Releases 29821 bulk_edit_custom_box hook causes tags to display within created fieldset Quick/Bulk Edit 4.0 normal normal Awaiting Review defect (bug) new 2014-10-01T23:04:40Z 2023-02-07T18:53:00Z "I have a custom post type that I am trying to add some fields to for bulk editing. My fieldset displays, but the tags field somehow is getting inserted into the fieldset being generated. It's extremely strange.
Bulk Edit panel without my fieldset:
[[Image(https://www.dropbox.com/s/fg3tcowz25rdqu1/Screenshot%202014-10-01%2018.53.56.png?dl=1)]]
Bulk Edit panel with my fieldset:
[[Image(https://www.dropbox.com/s/mlb4zr6mbvkbnmq/Screenshot%202014-10-01%2018.54.38.png?dl=1)]]
My code to generate the bulk edit custom box:
{{{
/**
* Display the custom bulk edit box
*
* @since 3.0
* @access public
* @action bulk_edit_custom_box
*/
public function bulk_edit_custom_box( $column_name, $post_type ) {
if ( $post_type != MP_Product::get_post_type() || $column_name != 'product_price' ) {
return;
}
?>
"" />
Product Tags
Price
Sale Price
}}}
Notice how the tags field is being inserted into my fieldset. It seems as thought the tags field is being inserted via javascript into whatever the last fieldset in the panel is.
Here's the same fields in the quick edit panel:
[[Image(https://www.dropbox.com/s/haju5pkzu4f80ih/Screenshot%202014-10-01%2019.02.36.png?dl=1)]]
This is how it ''should'' show up." webgeekconsulting
Future Releases 19859 """Bulk Edit"" Missing The Ability To Edit Tags" oglekler Quick/Bulk Edit normal normal Future Release enhancement reopened 2012-01-20T02:56:24Z 2024-02-12T09:21:55Z "Though I can add, remove and edit ""categories,"" I cannot do such actions to ""tags"" inside of /wp-admin/edit.php
So basically, I'm interested in a ""bulk tag editing"" GUI for the WordPress admin.
===
I was hoping to find out the status of this feature (planned, not planned, etc) but it appears that no one has spoken about this feature on the WordPress Trac.
Is there any interest in adding this feature? And could the respondent please provide any details on why or why not?
Thank you for your time." ademos
Future Releases 33833 Quick/Bulk Edit are not visually consistent Quick/Bulk Edit normal normal Future Release enhancement reopened 2015-09-11T16:41:56Z 2020-02-10T17:48:44Z "Quick/Bulk Edit are not visually consistent between uses (posts vs. comments, for example), and have typography treatment that we don't really use elsewhere in the admin, like all-caps and italic labels. It really hasn't changed much in quite some time.
This needs some considered design treatment. Screenshots attached below." helen
Future Releases 11472 Should QuickEdit remove posts from lists as needed? Quick/Bulk Edit 2.9 low minor Future Release enhancement new 2009-12-17T10:29:38Z 2019-12-09T17:54:37Z "Create a draft post. Visit Posts / Edit, and quickedit the draft. Set its status to Published and save. It remains around, with the published status, instead of being removed from the list.
Reporting this just in case, as it might be a UI feature rather than a bug.
" Denis-de-Bernardy
Future Releases 47188 Ensure that valid json is return for rest api, even when correct headers not sent. spacedmonkey REST API 4.4 normal normal Future Release defect (bug) assigned 2019-05-08T17:46:47Z 2021-01-03T22:00:19Z "Current when wp_die is called in php fatal error handler, valid json is only returned when json headers are returned as the function `wp_is_json_request` is used. See [https://core.trac.wordpress.org/ticket/45933 #45933].
However, core could do more to return json when it knows the current request is a REST API call. " spacedmonkey
Future Releases 57048 Handle trailing slashes in rest_preload_api_request REST API 4.7 normal normal Future Release defect (bug) new 2022-11-09T16:36:35Z 2022-11-09T16:36:35Z When passing a path to `rest_preload_api_request` that ends in query string, ensure that the parsed path also is untrailingslashit. Follow up to #51636 spacedmonkey
Future Releases 53942 Non-single post meta multiple value update breaks post save through REST API REST API 5.8 normal blocker Awaiting Review defect (bug) assigned 2021-08-17T13:00:31Z 2021-08-17T15:21:25Z "This is a follow-up to #52787.
Same situation as in #52787, but this time while updating **non-single** meta **multiple values at once** like `{ meta: { metaKey: [1, 2, 3] } }`, REST API fires `update_multi_meta_value()`, which tries first to delete old values in the database. When no meta value is present in database, `get_metadata()` returns defaults as `$current_values` and then trying to delete them anyway (non-existent in fact). This causes `update_multi_meta_value()` to return `WP_Error('rest_meta_database_error')` on `delete_metadata()` failure.
BTW, error messages could be more specific from `'Could not update the meta value of %s in database.'` to `'Could not update/delete...'` and `'Could not update/add...'`." iknowsomething
Future Releases 56668 REST API calls are failed when cookies are cleared from the site REST API 6.0.2 normal normal Awaiting Review defect (bug) new 2022-09-27T14:46:34Z 2022-09-27T14:46:34Z "Hi,
REST API calls are failed when the site cookies are cleared from browser console. Manually logging out and Logging in again will fix the issue but WordPress should automatically prompt for login in such cases right ? Please Ignore if I am wrong.
Response from API:
{{{
{""code"":""rest_cookie_invalid_nonce"",""message"":""Cookie check failed"",""data"":{""status"":403}}
}}}
" sarathgp
Future Releases 48257 REST API: post-process endpoint cannot be discovered from media creation endpoint REST API 5.3 normal normal Future Release defect (bug) new 2019-10-08T14:24:14Z 2019-10-08T14:24:14Z "Split out from #47987:
In #47987 we introduced a new `/wp/v2/media/{id}/post-process` endpoint, which may be hit with a POST to resume media processing in the event the initial POST to `/wp/v2/media` fails. Clients may know to utilize this new endpoint through the presence of a new non-standard header `X-WP-Upload-Attachment-ID`, but @rmccue caught that we do not provide any Link-based method of discovering the existence of this endpoint from the initial media collection. @TimothyBlynJacobs proposes using the `edit-media` relation for this link.
We should add an additional `Link` to the header of the failing POST response (or any POST response, potentially, with the understanding a link is only necessary in the event of failure). Implementing this Link was punted from 5.3 because the `$response` object on which we can call add_link was not available at the time we set the initial X-header, which we can work around but did not have time to resolve before the final 5.3 beta.
''Aside:'' If we're able to resolve the order-of-operations issue, it's possible that the Link could become the preferred method of signalling that post-processing should occur, rather than the non-standard header. However the X-header is more appropriate for the other media paths in `media.php` and `admin-ajax.php`, so this may not be feasible." kadamwhite
Future Releases 60599 REST API: rest_filter_response_fields fails with a PHP fatal when a custom API endpoint returns a scalar value. REST API normal normal Future Release defect (bug) new 2024-02-22T09:45:54Z 2024-03-11T11:50:22Z "The code in `rest_filter_response_fields` seems to only work with arrays. Thus if a given API endpoint returns a scalar value, then querying this endpoint by adding the `_fields` GET parameter will throw a PHP fatal in PHP >= 8.x.
Steps to reproduce it:
Add the following dummy plugin and enable it to a test WP
{{{
alex@wayra time % cat time.php
'GET',
'callback' => 'my_awesome_func',
) );
} );
{
""plugins"": [
"".""
]
}
alex@wayra time % cat .wp-env.json
{
""plugins"": [
"".""
]
}
alex@wayra time % wp-env start
WordPress development site started at http://localhost:8888/
WordPress test site started at http://localhost:8889/
MySQL is listening on port 32768
MySQL for automated testing is listening on port 32769
✔ Done! (in 77s 181ms)
alex@wayra time % curl 'http://localhost:8888/?rest_route=/myplugin/v1/datetime'
""2024-02-22T09:38:36+00:00""%
alex@wayra time % curl 'http://localhost:8888/?rest_route=/myplugin/v1/datetime&_fields=foo'
Fatal error: Uncaught TypeError: array_intersect_key(): Argument #1 ($array) must be of type array, string given in /var/www/html/wp-includes/rest-api.php:869
Stack trace:
#0 /var/www/html/wp-includes/rest-api.php(869): array_intersect_key('2024-02-22T09:3...', Array)
#1 /var/www/html/wp-includes/rest-api.php(928): _rest_array_intersect_key_recursive('2024-02-22T09:3...', Array)
#2 /var/www/html/wp-includes/class-wp-hook.php(324): rest_filter_response_fields(Object(WP_REST_Response), Object(WP_REST_Server), Object(WP_REST_Request))
#3 /var/www/html/wp-includes/plugin.php(205): WP_Hook->apply_filters(Object(WP_REST_Response), Array)
#4 /var/www/html/wp-includes/rest-api/class-wp-rest-server.php(454): apply_filters('rest_post_dispa...', Object(WP_REST_Response), Object(WP_REST_Server), Object(WP_REST_Request))
#5 /var/www/html/wp-includes/rest-api.php(424): WP_REST_Server->serve_request('/myplugin/v1/da...')
#6 /var/www/html/wp-includes/class-wp-hook.php(324): rest_api_loaded(Object(WP))
#7 /var/www/html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#8 /var/www/html/wp-includes/plugin.php(565): WP_Hook->do_action(Array)
#9 /var/www/html/wp-includes/class-wp.php(418): do_action_ref_array('parse_request', Array)
#10 /var/www/html/wp-includes/class-wp.php(813): WP->parse_request('')
#11 /var/www/html/wp-includes/functions.php(1336): WP->main('')
#12 /var/www/html/wp-blog-header.php(16): wp()
#13 /var/www/html/index.php(17): require('/var/www/html/w...')
#14 {main}
thrown in /var/www/html/wp-includes/rest-api.php on line 869
}}}" xknown
Future Releases 39861 WP REST API and Caching Issue johnbillion* REST API 4.7.2 normal normal Future Release defect (bug) accepted 2017-02-13T16:32:51Z 2023-06-21T15:57:00Z "It appears that the current implementation of the WP REST API uses the following cache control header:
cache-control:no-cache, must-revalidate, max-age=0
The problem is that some providers, e.g., SiteGround, also tack on a bogus last modified header:
last-modified:Thu, 01 Jan 1970 00:00:00 GMT
This combination causes the browser to add a ""if-modified-since"" header to subsequent API call and resulting with a 304 response (in this case NGINX at SiteGround). At the point, you continually get stale results from the API.
The fix is to also add a ""no-store"" to the API response.
Cache-Control: no-cache, no-store, must-revalidate
For reference:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control" sckmkny
Future Releases 43149 WP-API JS Client not triggering change event when using setMeta/setMetas helpers REST API 4.9 normal normal Awaiting Review defect (bug) new 2018-01-23T16:49:55Z 2020-10-25T04:19:42Z "As briefly [https://wordpress.slack.com/archives/C5UNMSU4R/p1516717879000467 mentioned] on Slack earlier today the `model.setMeta()` helper method introduce in #41055 has a couple of weaknesses.
1/ The `meta` attribute is undefined when creating a new model, which makes sense, but causes `setMetas()` to silently fail at set new meta values; using `setMeta()` causes an error.
{{{#!javascript
var post = new wp.api.models.Post( { id : 1234 } );
post.setMetas( { foo : 'bar' } ); // post.attributes.meta remains undefined
post.setMeta( 'foo', 'bar' ); // TypeError: metas is undefined
}}}
2/ When the `meta` attribute is properly defined, some changes in meta values fail to trigger a change event. Provided that the above issue does not show:
{{{#!javascript
var post = new wp.api.models.Post( { id : 1234 } );
post.on( 'change:meta', console.log );
post.set( 'meta', { foo : 'bar' } ); // trigger change event
post.setMetas( { foo : 'BAR' } ); // Does not trigger change event
post.setMeta( 'foo', 'BAR' ); // Does not trigger change event
}}}
Values are correctly updated; the `change` event is just not triggered as it should.
The only way I found to make this work is to clone the `meta` attribute in `setMeta()`/`setMetas()`. As of now these methods simply retrieve the `meta` attribute using `get()` and then `_.extend()` to add/update properties, which doesn't seem enough to make Backbone consider it a change." caercam
Future Releases 59558 not documented information about changes in embedded data REST API normal normal Awaiting Review defect (bug) new 2023-10-06T11:17:40Z 2023-10-06T14:14:21Z Hello. In latest wordpress become changes,after which embedded data not works properly if in request we havent any fields. I mean rest api issue see #59552 for details. I expected to see this information with detailed examples at https://developer.wordpress.org/rest-api/using-the-rest-api/linking-and-embedding/#embedding or/and at https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/#_embed. Please not ignore my issue #59552, because i not understand how to fix this issue. Thanks. sashakozlovskiy
Future Releases 40410 Add chunked upload support to the REST API REST API 4.7 normal normal Future Release enhancement new 2017-04-11T05:57:29Z 2021-03-03T17:22:09Z "Split from #39553. Having support for chunked (partial) uploads would be super useful, and provide additional functionality not possible with the current upload API. This would be built off the existing upload endpoints.
This needs a detailed proposal." rmccue
Future Releases 58849 Document supported $args for register_rest_route() REST API normal normal Future Release enhancement new 2023-07-19T11:53:01Z 2023-07-19T17:00:04Z "`$args` seems awfully sparse for how important it is:
[[Image(https://github.com/WordPress/gutenberg/assets/36432/3d6f6ef2-3e15-4c0a-9bb9-9c3b4822c118)]]
It would be nice if all of the supported values were documented." danielbachhuber
Future Releases 44694 Extra and un-neccessary query when no posts found in Posts Rest Controller REST API 4.9.7 normal normal Awaiting Review enhancement new 2018-08-01T16:46:27Z 2018-08-02T06:15:21Z "In the 'get_items' method in class-wp-rest-posts-controller.php there is some conditional logic that re-executes the query without the 'paged' param if no results are found ( line 317 ).
This seems like poor logic here. The query should only be executed again IF a paged parameter has been specified in the params.
I have a REST request that returns an empty array, but the query is run twice even though the results are the same.
This leads to some errors for me because I'm supplying non-standard parameters and using one time filters to handle them when building the request. After the initial query my filters have been removed so when the query executes again ( un-neccessarily ) my objects in the params end up triggering notices / warnings in the WP_Query class.
Long story short, this extra query should have better logic protecting it.
Something as simple as:
{{{#!php
1 ) {
// Out-of-bounds, run the query again without LIMIT for total count.
unset( $query_args['paged'] );
$count_query = new WP_Query();
$count_query->query( $query_args );
$total_posts = $count_query->found_posts;
}
}}}
" pat@…
Future Releases 39863 HTML description property of term in WP_REST_Terms_Controller lacks display filters joehoyle REST API normal normal Awaiting Review enhancement assigned 2017-02-13T17:13:48Z 2019-07-11T18:13:16Z "Working with the REST API i've noticed that with terms, either from custom taxonomies or default categories and tags, their descriptions are different within REST requests compared to outputting within a theme template.
Tracking it down and I've noticed that within themes these term descriptions are having `term_description` filters applied, whereas within WP_REST_Terms_Controller the term description is used as is from the database.
At its most basic example a user can add HTML to a term description (either manually or via a plugin that adds a visual editor), and paragraphs will be applied for a theme, but not for the REST requests.
But the schema for Terms says that it's the `HTML description of the term`, which IMO is slightly wrong without all the term description filters.
Comparing to the WP_REST_Posts_Controller it further raises the question, should the Term controller be providing a `raw` and `rendered` version of the term description to match Post content? Or should the filters simply be added as it's a smaller change?" davecpage
Future Releases 43428 Improve CORS headers sent to REST Api requests REST API normal normal Awaiting Review enhancement new 2018-02-27T14:24:18Z 2023-04-24T13:21:03Z "Currently some CORS headers are not sent correctly for REST API requests. This doesn't break anything yet, but can be improved for better performance.
The problematic headers are these:
- `Access-Control-Allow-Headers` and `Access-Control-Allow-Methods` need to be sent just to preflight requests, meaning just on requests with OPTIONS method. Now they are sent back on any REST API request, which is unnecessary
- `Access-Control-Allow-Methods` doesn't need to list the OPTIONS method. Preflight requests are made to check what's allowed, and OPTIONS requests are allowed by default. Current setup says something like 'I allow myself', as the preflight request is already a OPTIONS request
There's more detailed info here https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS, but the relevant part is this (it doesn't have an anchor for direct link):
(Note: as described below, the actual POST request does not include the Access-Control-Request-* headers; they are needed only for the OPTIONS request.)
The proposed changes are:
1. Move header `Access-Control-Allow-Headers` from `serve_request` https://core.trac.wordpress.org/browser/trunk/src/wp-includes/rest-api/class-wp-rest-server.php#L239 to `rest_send_cors_headers` https://core.trac.wordpress.org/browser/trunk/src/wp-includes/rest-api.php#L536 making it easier to control the CORS headers from only one place, with one hook
2. Remove OPTIONS keyword from `Access-Control-Allow-Methods`
3. Send `Access-Control-Allow-Headers` and `Access-Control-Allow-Methods` only on request with OPTIONS method (preflight), as it's the place where they are necessary
4. While sending the Allow headers, include `Access-Control-Max-Age: 600` for caching the preflight requests, thus improving the performance for next requests (less requests between browser & server when requesting same data). Timing can be changed
5. ''Optional'' - Include `Content-Disposition` in `Access-Control-Allow-Headers`, enabling direct file upload (requested in other tickets as well)
Why?
To follow recommended specs for CORS and make the REST API work as expected with web apps
All proposed changes were tested in the last few months on a fleet of ~500 websites with different web clients for managing WordPress data. Everything works fine" andrei.igna
Future Releases 47194 Posts endpoint: Enable collection parameters for querying by custom field REST API 4.7 normal normal Future Release enhancement new 2019-05-08T20:40:35Z 2020-10-25T03:29:27Z "Before the REST API was merged into Core, meta queries were possible via a filter parameter:
{{{
posts?filter[meta_key]=foo&filter[meta_value]=bar
}}}
This was [ticket:38378 removed] when the API was merged. In a [https://wordpress.slack.com/archives/C02RQC26G/p1557261445107000 recent Slack discussion] @kadamwhite mentioned this was due to the potential for very expensive DB queries, but that improvements to meta registration in subsequent versions of WP may have made this more possible.
There are abundant use cases for being able to query posts via the API based on postmeta values, but I haven't been able to find any other Trac tickets about this. So I'm asking the question: would this be feasible now?" coreymckrill
Future Releases 50409 REST API about links should be embeddable. REST API 5.5 normal normal Future Release enhancement new 2020-06-17T13:11:47Z 2020-10-15T15:33:45Z "Currently the `about` links in the REST API aren't embeddable using the `?_embed=true` parameter.
Most likely cause I can think of is that, by default, this route ( `wp/v2/types/$post_type` ) doesn't contain much information and as such there's likely no need for it.
However plugins can add their own custom fields to post types that would be added to this route. Currently if one wishes to fetch that data an additional request would have to be made as it's not possible to embed the data in a previous request.
Making the about link embeddable would give the option to consumers of the REST API to also easily fetch custom fields on post types without requiring an additional request.
This change would be extremely minimal as it'd only require adding `'embeddable' => true`, on line 1864 in `wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php`." herregroen
Future Releases 39954 REST API: Improve date updates if both `date` and `date_gmt` are set REST API 4.7 normal minor Awaiting Review enhancement new 2017-02-23T19:51:41Z 2017-03-09T02:38:25Z "Currently, if you set both the `date` and `date_gmt` fields when creating or updating a [https://core.trac.wordpress.org/browser/tags/4.7.2/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php#L996 post] or [https://core.trac.wordpress.org/browser/tags/4.7.2/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php#L1119 comment], the `date` field will take precedence and the `date_gmt` field will be ignored.
This behavior isn't ideal because when either of these two dates is specified, the other is also updated based on the site's timezone offset.
If both `date` and `date_gmt` are specified, '''and''' the two values do not match according to the site's current timezone offset, there are a couple of options for improving the behavior:
- Update the date fields exactly as requested, even though they will not match the site's current timezone offset.
- Return an error." jnylen0
Future Releases 49330 REST API: introduce block-editor context REST API 5.4 normal normal Future Release enhancement new 2020-01-30T16:48:59Z 2020-10-01T17:53:05Z "The block editor does not make use of rendered content, and rendering content for complex posts with a large quantity of dynamic blocks can take a non-trivial amount of time. The REST API maintainers and Gutenberg developers have previously discussed the need to be able to ""skip"" rendering of the content if it is not required.
In [46184] we introduced the ability to provide an explicit list of nested fields to include. Specifying `_fields=content.raw` without mentioning `rendered` now causes the posts controller to skip computation of the rendered field, as it has not been requested. Unfortunately, this approach requires a developer to provide a comprehensive list of all fields they _do_ wish to include in the response, and cannot easily be used to specifically exclude one field. Because block editor developers may depend on registered rest fields or other additional properties, it is infeasible to have the block editor request ""all but the rendered content"" using this interface.
A slack conversation ([https://wordpress.slack.com/archives/C02RQC26G/p1574361923322500]) with @aduth and @timothyblynjacobs addressed this problem and discussed two separate options, either providing an `_omit_fields` parameter to complement `_fields` and permit specific exclusions, or alternatively to introduce a new `block-editor` context that does everything that `edit` does except render content.
This trac ticket is intended to move that discussion forward and aim towards introducing a solution that can be used to speed up response times within the block editor." kadamwhite
Future Releases 35425 Return HTTP status code in WP_Error objects REST API normal normal Future Release enhancement new 2016-01-12T20:04:34Z 2017-03-26T02:15:25Z "The REST API has an existing pattern of using a HTTP status code to better describe the nature of a `WP_Error` object:
{{{
if ( ! empty( $request['id'] ) ) {
return new WP_Error( 'rest_post_exists', __( 'Cannot create existing post.' ), array( 'status' => 400 ) );
}
}}}
Throughout WordPress, it would improve the quality of error reporting to include an equivalent HTTP status when generating a new `WP_Error` object.
This ticket can serve as placeholder for improvements to this effect.
Previously: https://github.com/WP-API/WP-API/issues/153#issuecomment-170734687" danielbachhuber
Future Releases 60426 Update WP_Test_REST_TestCase::assertErrorResponse() to allow custom failure messages REST API normal trivial Awaiting Review enhancement new 2024-02-02T12:21:08Z 2024-02-23T13:31:59Z "According to the WordPress coding standards, it is recommended that if there are more than 2 assertions in a single test method, these assertions should include custom failure messages to explain the nature of any failed assertions.
However, in the current state of the `WP_Test_REST_TestCase::assertErrorResponse()` helper method, it contains 2 assertions, making it impossible to add a custom message explaining the error.
To align with coding standards and improve the clarity of test failures, I propose updating the method's signature as follows:
{{{
protected function assertErrorResponse($code, $response, $status = null, $failure_message)
}}}
This change will allow developers to include a custom message when using the `WP_Test_REST_TestCase::assertErrorResponse()` method, improving the ability to diagnose issues during testing.
Furthermore, all the instances where this method is being used across the codebase need to be refactored to include the new `$failure_message` parameter, ensuring consistency." antonvlasenko
Future Releases 40988 Use objects for `get_item_schema()` calls REST API 4.7 normal normal Awaiting Review enhancement new 2017-06-10T06:07:54Z 2017-12-03T22:32:02Z "The `get_item_schema()` method of a REST API controller always returns a dynamically generated array of schema information. This dynamic nature is needed, because some keys/values can change based on the current environment/controller.
This incurs a large performance penalty because the arrays need to be set up again and again, and as a side-effect, the translations that are being used for the `'description'` field are being loaded every single time. On a fresh, empty install of WordPress 4.8, making a request to `GET /wp-json/wpv2/posts` can spend a third or more of its time translating strings. Most of these translations are done multiple times, every single time an item schema is being requested. See blackfire profiling run here: https://blackfire.io/profiles/20516863-50e3-4df2-938a-7fa2f462abc8/graph
I suggest turning the arrays that `get_item_schema()` returns into a collection of smart objects that implement `ArrayAccess`. This offers the following benefits:
* Objects use up the memory for their keys once.
* Objects can be cloned (with the possibility to make changes after the clone), making sure that translations will at the most be loaded only once for every individual string.
* Objects can be extended and/or decorated, making it easy and clean to provide different structures for different use case, to get around `if/else` edge case handling.
* Objects can provide ""lazily-loaded"" keys (through magic methods or the proxy pattern), allowing the descriptions to only be processed when they are actually being requested. This would avoid the translation work completely for a use case like I tested above.
I expect this to shave around 30% off of the execution time of the above test case. It also makes the code more scalable, as large response sets might even incur yet a bigger performance penalty than the one I have recorded." schlessera
Future Releases 42737 Add method wp.api.getModelByType for retrieving api models adamsilverstein REST API 5.1 normal normal Future Release feature request assigned 2017-11-28T17:52:54Z 2018-10-19T18:33:35Z "
For Gutenberg, it will be easier and less error prone to fetch the wp.api.model by retrieving by type instead of creating a route and searching for the model that matches that route.
An open detail to work out is if namespacing is needed, can objects have the same name in different API namespaces in the same instance of wp.api. A potential solution could be an optional second argument.
For example: `getModelByType( type, versionString = 'wp/v2' )`
Related to #41111
Original Slack Discussion at:
https://wordpress.slack.com/archives/C5UNMSU4R/p1511878493000062
" mkaz
Future Releases 39972 REST API: Allow querying posts by post format REST API 4.7 normal normal Awaiting Review feature request new 2017-02-27T00:30:29Z 2017-05-07T05:48:09Z "Although it is listed in the REST API reference,
{{{
posts?format=video
}}}
shows all posts." sba7elfol
Future Releases 39544 REST API: Improve users endpoint in multisite REST API normal normal Future Release task (blessed) new 2017-01-11T11:22:13Z 2021-08-17T17:53:20Z "As per the discussion that happened during the past two weeks' multisite office-hours, the REST API users endpoint needs to be improved to support multisite behavior.
This ticket is supposed to act as a general task for discussion, and then for the actual implementation smaller spin-off tickets should be opened.
Currently, the four steps (possibly four tickets) we're thinking about are:
* The users overview at `wp-json/wp/v2/users`
should continue to only show users of that site by default, but a request like `wp-json/wp/v2/users?global=true` should show all users in the WordPress setup. This parameter must only be available to network administrators though, more specifically users with the `manage_network_users` capability. In the future a `network` parameter might also be introduced for support of multi networks, but at this point core does not support querying users per network. Accessing global users should be available from all sites in a setup instead of only from the main site. While this approach makes these endpoints duplicates of each other, it has several benefits like preventing the requirement for cross-domain requests, allowing easier API discovery and not requiring the main site of a setup to be exposed to REST API calls to a sub site.
* Assigning an existing user to a site and removing a user from a site should generally be only available to network administrators, and the site administrators of the site that is being interacted with.
* Similarly, editing a user that does not belong to the current site should only be possible for a network administrator. Currently this is available to site administrators as well which is probably wrong.
* Deleting any user completely should only be available to a network administrator. A good way to handle the `reassign` parameter needs to be found though.
For background information, please read the posts at https://make.wordpress.org/core/2017/01/09/improving-the-rest-api-users-endpoint-in-multisite/ and https://make.wordpress.org/core/2017/01/11/controlling-access-to-rest-api-user-functionality-for-multisite/ (the latter contains the above list as well)" flixos90
Future Releases 39851 WP_REST_Posts_Controller::get_items() has too many concerns REST API 4.7 normal normal Future Release task (blessed) new 2017-02-11T23:20:39Z 2019-01-17T18:58:52Z "I've written a bunch of custom endpoints that return collections of posts of one or more post types. I'd like my responses to be the same formatting, body and header as the default post routes provide. This allows for a client designed to consume default routes to be more easily modified to use custom routes.
Achieving this with a subclass of WP_REST_Posts_Controller still requires some cut and paste for collections of posts, since the get_items() method has way too many concerns. I'd like to break out the preparing of response body, as well as response header into separate methods, so that they can be used with different types of requests or ways to create arrays of WP_Post objects, while still providing a consistent response.
" Shelob9
Future Releases 27244 'Restore This Autosave' immediately updates a published post Revisions normal normal Awaiting Review defect (bug) new 2014-02-28T23:43:29Z 2024-02-25T19:29:55Z "The ""Restore This Autosave"" button on the revisions screen immediately replaces the post with the autosave without making it clear that that is the case.
Steps to reproduce:
1. Publish a post.
2. Edit the content of the post and trigger an autosave (either by waiting two minutes or by clicking the 'Preview Changes' button).
3. Navigate away from the post editing screen.
4. Return to the post editing screen and note the message stating ""There is an autosave of this post that is more recent than the version below"". Click ""View the autosave"".
5. On the revisions screen, click ""Restore This Autosave"".
6. Note that the autosave has been published rather than simply being restored to the editing screen." johnbillion
Future Releases 52303 Accessibility issues in revisions screen joedolson Revisions 3.6.1 normal normal Future Release defect (bug) assigned 2021-01-15T00:04:34Z 2021-01-27T21:59:41Z "In the course of assessing a functional problem with `wp_text_diff`, a number of accessibility concerns were unearthed regarding the revisions screen.
Once the output of `wp_text_diff` is settled, the other concerns noted in #25473 should be addressed here. " joedolson
Future Releases 43189 Restoring page revision doesn't restore page template previously used Revisions 4.9.2 normal normal Awaiting Review defect (bug) new 2018-01-31T13:23:15Z 2018-01-31T15:09:27Z "I noticed this when one of the editors made a change in a page and also changed page template.
We reverted the change by restoring a previous revision, but this didn't restore the previous page template.
" bugnumber9
Future Releases 41029 The changed author is not making the coming revisons adamsilverstein Revisions 4.8 normal normal Awaiting Review defect (bug) assigned 2017-06-13T14:02:03Z 2021-04-30T18:28:07Z "Hi
In WordPress 4.8 the changed author won't be changed in the new revisions (and autosave)." elisa-demonki
Future Releases 53417 The revisions endpoints provide an incorrect JSON schema Revisions 4.7 normal normal Awaiting Review defect (bug) new 2021-06-15T23:20:51Z 2021-06-15T23:29:55Z "The schema provided by the REST API endpoints for revisions at `wp/v2/posts/{id}/revisions` and `wp/v2/pages/{id}/revisions` is incorrect. The schema states that `content.protected` and `excerpt.protected` properties exist for each revision, but these properties do not exist.
* [https://github.com/WordPress/wordpress-develop/blob/afee26086fea307c2a5c31c0e2018cb6acd598f7/src/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php#L736 The schema is constructed here] from the parent controller for posts, which does include this property
* [https://github.com/WordPress/wordpress-develop/blob/afee26086fea307c2a5c31c0e2018cb6acd598f7/src/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php#L600-L604 When the content data is prepared here] the `protected` property is not included
* [https://github.com/WordPress/wordpress-develop/blob/afee26086fea307c2a5c31c0e2018cb6acd598f7/src/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php#L608-L611 When the excerpt data is prepared here] the `protected` property is not included
Two options:
1. Remove the `content.protected` and `excerpt.protected` properties from the schema
2. Add the `content.protected` and `excerpt.protected` properties to the response
Here is the `content` property from the schema. Note the `protected.context` property states that the property exists for all three contexts.
{{{
""content"": {
""description"": ""The content for the post."",
""type"": ""object"",
""context"": [
""view"",
""edit""
],
""properties"": {
""raw"": {
""description"": ""Content for the post, as it exists in the database."",
""type"": ""string"",
""context"": [
""edit""
]
},
""rendered"": {
""description"": ""HTML content for the post, transformed for display."",
""type"": ""string"",
""context"": [
""view"",
""edit""
],
""readonly"": true
},
""block_version"": {
""description"": ""Version of the content block format used by the post."",
""type"": ""integer"",
""context"": [
""edit""
],
""readonly"": true
},
""protected"": {
""description"": ""Whether the content is protected with a password."",
""type"": ""boolean"",
""context"": [
""view"",
""edit"",
""embed""
],
""readonly"": true
}
}
},
}}}" johnbillion
Future Releases 30854 `wp_insert_post` doesn't save revision for new published post adamsilverstein Revisions normal normal Future Release defect (bug) assigned 2014-12-28T16:41:25Z 2022-04-19T05:55:17Z "Calling `wp_insert_post` with `post_status` of `publish` or any other status on a new post doesn't save a new revision.
The reason for this is the `$update` check at the beginning:
https://core.trac.wordpress.org/browser/tags/4.1/src/wp-includes/post.php#L3085
checks whether or not the args include an ID, indicating that we're updating a post. Further down, that update check is what calls `post_updated`
https://core.trac.wordpress.org/browser/tags/4.1/src/wp-includes/post.php#L3473
which `wp_save_post_revision` is hooked to. Therefore, if we call `wp_insert_post` in a plugin to insert a post with a`post_status` of `publish`, WordPress doesn't save a post revision.
Post revisions are supposed to be up-to-date with the latest post data, but we don't get a revision if we insert a post in this manner. I think the reason we ended up with this is to avoid saving a revision of the auto-draft that is created when opening up post-new.php, but that isn't necessary now, as `wp_save_post_revision` checks whether the `post_status` is an auto-draft.
I think the easiest solution is to move the `wp_save_post_revision` to the `save_post` hook, but I'm not sure if there are other places in the codebase this would cause issues." JamesDiGioia
Future Releases 29276 Ability to edit and preview any revision, not just autosaves Revisions 3.9.2 normal normal Awaiting Review enhancement new 2014-08-20T14:30:38Z 2020-01-10T21:02:56Z "It would be great if the revision management functionality could include a way to preview any revision. From a quick look at the source code, wp-includes/revision.php declares a function called
{{{
_set_preview($post)
}}}
By default it loads the most recent autosave with:
{{{
$preview = wp_get_post_autosave($post->ID);
}}}
I would like to propose that that line be changed into:
{{{
$preview = !empty($_GET['preview_id'])?get_post($_GET['preview_id']):wp_get_post_autosave($post->ID);
}}}
The nonce has already been verified in `_show_post_preview()`, so there should be no security implications of this change.
With this change, the Revisions meta box (Edit Post screen) could display a ""preview"" icon/link that includes the appropriate nonce and does the same thing as the main ""Preview"" button." coolmann
Future Releases 47518 Add an explanatory message to the Revisions screen for locked posts adamsilverstein Revisions normal normal Awaiting Review enhancement assigned 2019-06-10T15:30:43Z 2021-04-30T17:44:27Z "It's possible for a user to navigate to the revisions screen for a post that's locked due to another user editing it, and not be able to restore any revisions due to the fact that the post is locked. In this situation no message is shown on the Revisions screen that explains why the `Restore This Revision` button is disabled.
Under normal operating procedure it's not easy to get to the Revisions screen for a locked post, but it is possible. A workflow related plugin, audit trail, or revisions list can make it possible to navigate directly to a revision without going via the otherwise locked editing screen.
1. User A navigates to the revisions screen for a non-locked post.
2. User B visits the editing screen for the post.
3. User A clicks `Return to editor` on the revisions screen.
4. User A chooses not to take over, and clicks `Go back`.
User A is now shown the revisions screen for a locked post and the `Restore This Revision` button is disabled for all revisions but with no explanatory information." johnbillion
Future Releases 38368 Add front-end revision browsing Revisions normal normal Awaiting Review enhancement new 2016-10-19T16:17:04Z 2018-03-08T20:14:27Z "This patch will add a live-updating revision browser to single post view when the current user can edit posts.
This feature requires the post and post revision routes of the WordPress REST API, as well as the JavaScript client for the REST API.
Here is demo of this patch:
[[Image(https://github.com/Shelob9/revisions-browser/blob/master/CvIKaDdWcAAtRSa.gif?raw=true)]]
Currently this is a functional prototype, as a plugin -- https://github.com/Shelob9/revisions-browser -- prepared by myself with guidance from @adamsilverstein and contributions from @mrahmadawais + @websupporter + @kadamwhite + @circlecube " Shelob9
Future Releases 47831 Compare any two revisions: Improve the distinction of From/To columns Revisions normal normal Awaiting Review enhancement new 2019-08-04T12:35:04Z 2019-11-12T23:55:04Z "This is a continuation from ticket #43532.
We have a {{{From/To}}} when the ""Compare any two revisions"" is checked, but it might not be obvious what column is {{{From}}} and what column is {{{To}}}.
Here are relevant comments from the #43532 ticket:
@adamsilverstein suggests using e.g. ""added"" and ""removed"" (see here https://core.trac.wordpress.org/ticket/43532#comment:5 )
@kjellr mentioned that this was discussed in design chat
https://core.trac.wordpress.org/ticket/43532#comment:19
>The Design team discussed this briefly in our triage today:
>https://wordpress.slack.com/archives/C02S78ZAL/p1564417984166900
>(A WordPress.org slack account is required to view that link)
>Both of these updates seem like solid improvements, and the screenshots look good. We're >going to remove ux-feedback for now.
>Thanks, all!
I'm adding the screenshots here below:" birgire
Future Releases 42712 Enhance wp revisions to keep with expiration date for the revisions Revisions normal normal Awaiting Review feature request new 2017-11-27T13:16:26Z 2017-11-28T00:39:31Z "https://codex.wordpress.org/Revisions
Now, the options of the revisions are:
true (default), -1: store every revision
false, 0: do not store any revisions (except the one autosave per post)
(int) > 0: store that many revisions (+1 autosave) per post. Old revisions are automatically deleted.
What about to have expiration by time also, not just with number. In that way, in big multisite installations, old revisions could desappear after X months. Decreasing the size of the database.
Normally, if a post have not modifications after 1 year, is because not longer are necesary. Anyway, it would be a choice of the superadministrator of the installation.
thanks" colomet
Future Releases 42086 Option to view condensed diffs for post revisions Revisions normal normal Awaiting Review feature request new 2017-10-04T16:08:37Z 2020-09-01T16:16:59Z "Viewing a revision of a post which has a lot of content in it can result in a very long screen. It would be great if there was a toggle somewhere on the revisions browser so a condensed diff view was shown.
The condensed view would more closely resemble a traditional VCS diff view, which highlights only the changed lines and a handful of lines above and below each change.
I haven't checked to see if the `Text_Diff` library that core uses supports such diff generation, I doubt it does but I'd like to be wrong." johnbillion
Future Releases 42478 Add_permastruct ignores EP_NONE and other args if %post_id% is present in struct Rewrite Rules 4.9 normal normal Awaiting Review defect (bug) new 2017-11-08T22:15:20Z 2017-11-08T22:15:20Z "Additional rewrite rules are made if the %post_id% is in a struct passed to add_permastruct. This happens because generate_rewrite_rules (called in to process the permastructs) assumes anything with %post_id% in its struct is a post and should have attachments, talkbacks, comments, etc. I suspect it's holdover from when %post_id% and p= only referred to posts and post_ids from the wp_posts table at large.
I have a simple enough solution.
Add another default rewrite_tag that generates the 'p=' query but doesn't trigger the additional rewrites.
i.e. add_rewrite_tag( '%p%', '([0-9]+)', 'p=' );" Underscorefunk
Future Releases 41680 Added rewrite tags using add_rewrite_tag() not working on static front-page Rewrite Rules 4.8.1 normal normal Awaiting Review defect (bug) new 2017-08-20T19:46:58Z 2017-08-20T19:46:58Z "Hello everyone,
the following ticket is a little bit similar to the issue described here: #25143
== Introduction ==
I am working on a plugin which provides a shortcode. This shortcode generates some content/output on a page where it is placed on. The shown output depends on optional URL-parameters. For example those two URLs result in different outputs:
- my-site.com/my-page
- my-site.com/my-page?'''foo'''=''bar''
In preparation for pretty URLs I have to register a new rewrite-tag '''foo''':
{{{#!php
add_rewrite_tag('%foo%', '([^/]*)');
}}}
This allows me (in combination with the corresponding rewrite rules) to use pretty URLs like this:
- my-site.com/my-page/'''foo'''/''bar''
As expected you can access the assigned value ''bar'' of '''foo''' with the following code:
{{{#!php
$value_of_foo = get_query_var('foo'); // returns: bar
}}}
== Problem ==
This all works fine as long as the page which includes the shortcode is not set as the sites static front-page. In this case your URLs will usually look like that:
- my-site.com (the content of the static page is shown)
- my-site.com/?'''foo'''=''bar'' (from here it is broken)
So, whats happening? Instead of generating and showing the content based on the URL parameter, the second URL loads the front-page but instead of showing the content of the static page, it acts like the blog page and shows the list of the latest posts.
The problem is that {{{is_home}}} is improperly set to {{{true}}} because we now have a custom query-var in our URL which basically makes the content of a ''static'' page not ''static'' anymore. But this fact shouldnt let WordPress showing the list of the latest posts-page instead. This problem makes it impossible for users to place and show the content of a shortcode - which is based on (prettyfied) URL-parameters - on their static front-page.
At the moment I am using the following code as a workaround but I think this is not an optimal long-term solution for this problem:
{{{#!php
function fix_query_vars_on_front_page($query) {
// Dont do this workaround when we are in the administration area or when we are not inside the main query.
if (is_admin() || !$query->is_main_query()) {
return;
}
// Cache the actual query vars first.
$queryVarCache = $query->query;
// Only continue when our query vars are not already empty.
if (!empty($queryVarCache)) {
// Remove our query vars from the cache when they are set.
if (isset($queryVarCache['foo'])) {
unset($queryVarCache['view']);
}
// When our cache is empty, we are on a front-page (is_home() or is_front_page()). Ensure that the following filtering only happens on a static front page.
if (empty($queryVarCache) && get_option('show_on_front') === 'page') {
// Get the ID of the front page and add it to the query vars.
$query->query['page_id'] = get_option('page_on_front');
// Reparse the query.
$query->parse_query($query->query);
}
}
}
add_action('pre_get_posts', 'fix_query_vars_on_front_page');
}}}
Maybe some way to add custom rewrite tags without adding them as a query var would be a possible solution for this. Of course there would be a need to add a function to access them, for example {{{get_rewrite_var('foo')}}} instead of {{{get_query_var('foo')}}}.
I am looking forward that WordPress will make this possible in a future version. :-)" Asgaros
Future Releases 41891 Bug when changing $(comments_)pagination_base of WP_Rewite instance to string with non-ASCII characters Rewrite Rules normal normal Awaiting Review defect (bug) new 2017-09-15T13:05:55Z 2017-09-15T13:05:55Z "When you change `$pagination_base`/`$comments_pagination_base` for `WP_Rewrite` instance to string with ASCII characters, it works as expected. But when you change to non-ASCII string, it doesn't work because it redirects from `//2` to `//2//2` which returns 404. If you use `rawurlencode()` on that string, it again works as expected.
So, in short:
`$GLOBALS['wp_rewrite']->pagination_base = 'something';` - works
`$GLOBALS['wp_rewrite']->pagination_base = 'чџш';` - doesn't work
`$GLOBALS['wp_rewrite']->pagination_base = rawurlencode( 'чџш' );` - works
This doesn't apply to other bases, they work without `rawurlencode()`, for example:
`$GLOBALS['wp_rewrite']->author_base = 'гдђ';`" dimadin
Future Releases 39442 Custom rewrite endpoints and wp_old_slug_redirect Rewrite Rules 4.7 normal normal Awaiting Review defect (bug) new 2017-01-03T00:21:03Z 2020-07-14T05:13:13Z "Previously: #33920
{{{wp_old_slug_redirect}}} currently only handles core rewrite endpoints (like {{{feed}}} and {{{embed}}}). If you have a custom rewrite endpoint, you end up redirected back to the new permalink.
You can use the [old_slug_redirect_url https://developer.wordpress.org/reference/hooks/old_slug_redirect_url/] filter to redirect correctly but the filter does not pass the post id, which makes things a bit challenging (especially if you need to do any processing beyond just appending the endpoint).
It would be nice if the post id was passed into the {{{old_slug_redirect_url}}} filter:
{{{
$link = apply_filters( 'old_slug_redirect_url', $link, $id );
}}}
It would be even nicer if the redirect handled custom endpoints automatically as well." batmoo
Future Releases 34683 Default .htaccess config creates rewrite infinite loops for path-based multisite installations Rewrite Rules 4.3.1 normal normal Awaiting Review defect (bug) new 2015-11-14T20:16:54Z 2020-03-27T14:11:01Z "Default .htaccess config for path-based multisite installations looks like that:
{{{
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
}}}
The problem is in these lines:
{{{
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
}}}
`?` sign makes expression `([_0-9a-zA-Z-]+/)` optional, so rule works also for request like `http://example.com/wp-config/file.png` and basicly try to internal redirect request to the same address. If file does not exist, it creates infinite internal loops that causes internal server errors.
There is no sense create rewrite rules for main site of network and site prefix should no be optional for rewrites. Correct .htaccess content should be:
{{{
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
}}}
" rob006
Future Releases 40339 If $home_path=='wp' then WP::parse_request() will remove 'wp' from 'wp-json/wc/v1/products' in $pathinfo Rewrite Rules 4.7.3 normal normal Awaiting Review defect (bug) new 2017-04-02T13:32:06Z 2018-01-12T02:33:28Z "I have installed WordPress in a subdirectory 'wp' so $home_path is 'wp'. The statement
{{{#!php
pathinfo = preg_replace( $home_path_regex, '', $pathinfo );
}}}
is called with arguments
{{{
$home_path_regex = '|^wp|i'
$pathinfo = 'wp-json/wc/v1/products'
}}}
and returns
{{{
$pathinfo = '-json/wc/v1/products'
}}}
Since, $_SERVER[ 'PATH_INFO' ] is the trailing part of the path wouldn't the leading home path be already removed?
Here is the $_SERVER variable:
{{{
$_SERVER=Array
(
[SERVER_SOFTWARE] => PHP 5.6.30 Development Server
[REQUEST_URI] => /wp/wp-json/wc/v1/products
[DOCUMENT_ROOT] => C:\\WWW
[REMOTE_ADDR] => 192.168.1.113
[REMOTE_PORT] => 54207
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_NAME] => me.local.com
[SERVER_PORT] => 80
[REQUEST_METHOD] => GET
[SCRIPT_NAME] => /wp/index.php
[SCRIPT_FILENAME] => C:\\WWW\\wp\\index.php
[PATH_INFO] => /wp-json/wc/v1/products
[PHP_SELF] => /wp/index.php/wp-json/wc/v1/products
[HTTP_HOST] => me.local.com
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,en-AU;q=0.6
[HTTP_COOKIE] => wp-settings-1=libraryContent%3Dbrowse%26mfold%3Do%26editor%3Dhtml%26posts_list_mode%3Dexcerpt%26widgets_access%3Don%26post_dfw%3Don%26hidetb%3D1; wp-settings-time-1=1489742056; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_82a92e8b6fd4f1e7bd35e69acfebe645=mc%7C1491295996%7ClSYWOrX5ljiNvjMUuOsdx3Hqd3B4PsyM6sdhaHx3VHB%7C0f85cc8928c44377d339344bd93f970151fb018ad0623b09964e252bc6104127
[REQUEST_TIME_FLOAT] => 1491131923.8711
[REQUEST_TIME] => 1491131923
)
}}}
" Magenta Cuda
Future Releases 57858 If permalink structure is set to /%category%/%postname% , WordPress will match a /0/ path as a category archive Rewrite Rules 6.1.1 normal normal Awaiting Review defect (bug) new 2023-03-02T22:30:38Z 2023-03-12T08:30:39Z "Issue:
When the post permalink structure (Settings > Permalinks > Permalink Structure > Custom Structure ) is set to /%category%/%postname% , any path containing /0/ will be matched as a category archive page.
eg.
example.com/wp-content/0/ will not return a 404, and resolve to category archive template.
example.com/wp-includes/0/ will not return a 404 and resolve to category archive template.
example.com/wp-admin/0/ will not return a 404 and resolve to category archive template.
example.com/some-post-name/0/ will resolve to some-post-name
example.com/0/ will properly resolve to the site_url, but still wont 404
Setting the permalink to anything but that, eg. /%author_name%/%postname% it will properly 404.
I'm guessing somewhere in the permalink structure, 0 is seen as a valid category and not empty/null.
Steps to reproduce:
1. Spin up a fresh WordPress
2. Go to Settings > Permalinks > Permalink Structure > Custom Structure
3. Set the Custom Structure to: /%category%/%postname%
4. Visit one of the example URLs above.
We found this issue as we noticed Google was indexing a page like example.com/wp-content/uploads/2011/0/
" krdevio
Future Releases 19896 Non-WP rewrites not saved on a multisite install Rewrite Rules 3.0 normal normal Awaiting Review defect (bug) new 2012-01-25T16:14:20Z 2017-08-22T14:29:46Z "The following code adds a rewrite rule which is classed as a non-WP rewrite rule because its redirect doesn't begin with `index.php`, and is stored in the `non_wp_rules` member variable of the `WP_Rewrite` class.
{{{
function my_rewrite() {
add_rewrite_rule( 'login/?$', 'wp-login.php', 'top' );
}
add_action( 'init', 'my_rewrite' );
}}}
On a single site install, this rewrite rule gets saved directly to the .htaccess file rather than being added to WordPress' internal rewrite array.
On a multisite install, this doesn't happen and the rewrite rule has no effect (probably because once a site is multisite-d WordPress no longer writes to .htaccess). The rule has to be manually added to .htaccess.
Likely introduced in 3.0, reproduced in 3.3 and trunk." johnbillion
Future Releases 41079 PHP Notice: Undefined offset: -1 in /var/www/html/live/wp-includes/rewrite.php Rewrite Rules 4.3 normal normal Awaiting Review defect (bug) new 2017-06-15T17:22:51Z 2017-06-16T01:27:50Z "Low priority, but I'm trying to reduce the size of my error logs, and this notice is a vast majority of it.
Issue lies at lines 376 & 378 in the ""wp_resolve_numeric_slug_conflicts"" function. Occurs when $postname_index is 0. With my limited understanding, it seems like that scenario can be skipped, so I added the below snippet to the ""if"" statement at line 363 in my build:
{{{
|| 0 === $postname_index
}}}
Please resolve in the next update. Thanks." myrmidon16
Future Releases 50726 Pagination error on 4 digit page when category and year are in the permalink structure Rewrite Rules 5.5 normal minor Awaiting Review defect (bug) new 2020-07-21T17:40:38Z 2020-07-21T17:40:38Z "When looking at a category archive page where the page number has four digits, and the permalink structure has the category and year in it, WordPress lumps together the category name and the ""page"" part of the URL and assumes that the number refers to the year of publication.
Steps to reproduce:
1) Update the permalink structure to /%category%/%year%/%monthnum%/%day%/%postname%/
2) Create a category
3) Create and assign enough posts and/or update posts per page to generate at least 1000 pages.
4) Navigate to page 1000 or greater.
Even though the resulting URL would be /%cat%/page/1000/, WordPress will assume that the category name is ""%cat%/page"" and that the year of publication is 1,000.
The correct behavior is to go to page 1,000 of the specified category, just as it works in page 999.
This issue leads to 404s being generated by the standard pagination component which get flagged on search engine crawls, resulting in lower search rankings for the entire website.
Here is the immediate fix I added to my website:
{{{#!php
is_main_query()
&& is_archive()
&& substr_count($_SERVER['REQUEST_URI'], '/page/')
) {
$year = $query->query_vars['year'] ?? 0;
$page = $query->query_vars['paged'] ?? 0;
if ($year && !$page) {
unset($query->query_vars['year']);
$query->set('paged', $year);
}
if (isset($query->query['category_name'])) {
$query->set('category_name', str_replace('/page', '', $query->query['category_name']));
}
}
});
}}}
" elpadi17
Future Releases 42328 directory listing, missing index.html Rewrite Rules 4.8.2 normal normal Awaiting Review defect (bug) new 2017-10-24T22:17:00Z 2017-10-24T22:21:09Z "On hostings where missing ""Options -Indexes"" (Apache) index.php file with ""Silence is golden."" could be an option or as discussed in #4759 as it will work also on NGINX.
While by default it's not a security issue, however, may lead to a discovery of private/non-for-public files.
Directories:
/wp-includes/
/wp-content/uploads/
/wp-content/languages/ (I know it's not by default here)
possible related: #17619
" rolandinsh
Future Releases 42120 htpasswd protection not working due to .htaccess rewrite rules Rewrite Rules 4.8.2 normal normal Awaiting Review defect (bug) new 2017-10-06T09:44:24Z 2019-05-14T05:10:15Z "Came across a strange bug whilst trying to password protect our staging sites.
This seems to be a known issue as a solution is already suggested online, however unless you know where to look, the first point of call would be to check with the server configuration/Apache/WHM.
Considering this is a small and easy fix that shouldn't break other features, it would be great to include to core.
'''The setup'''
* WHM 66.0.24 CentOS 7.4
* Apache
* Latest WP installed at /public_html
'''Steps to reproduce'''
1. Enable permalinks
2. Go to cPanel and enable ""Directory Privacy"" on the public_html folder OR
3. Update .htaccess to append AND
{{{
AuthType Basic
AuthName ""Test""
AuthUserFile ""/home/username/.htpasswds/public_html/passwd""
require valid-user
}}}
4. Create the passwd file on the directory shown above
5. Go to your staging site such as staging.website.com and confirm the login prompt is showing
6. Don't enter any details, but click cancel multiple times
7. Notice how the page content is now showing.
8. Try ctrl+u to see the source of the page and notice how the whole HTML is there.
'''The solution'''
1. Edit the .htaccess file in your WordPress home folder
2. Find the line RewriteRule . /index.php [L]
3. Replace with RewriteRule ./ /index.php [L]
'''The sources of this fix'''
Kudos to WHM Support who directed me to the solution and HostGator for actually publishing it
http://support.hostgator.com/articles/wordpress-preventing-you-from-password-protecting-a-directory
" subscriptiongroup
Future Releases 40719 iis7_add_rewrite_rule and iis7_delete_rewrite_rule create malformed web.config Rewrite Rules 4.7.4 normal normal Awaiting Review defect (bug) new 2017-05-10T19:14:11Z 2020-02-15T21:56:04Z "Running wordpress in azure on version 4.7.4 and i have a custom web config utilizing the location directive. The methods iis7_add_rewrite_rule and iis7_delete_rewrite_rule do not take into account when these directives exist and create a new system.webserver line in the web.config at the bottom causing the server to 500 error. This seems to happen even when simply deleting a post using the admin console, wp is thinking the web.config is wrong and trying to add lines. As an immediate work around i have disabled these methods, is there a configuration that will allow me to stop wordpress from ever doing this? I dont have the ability to change the web.config permissions because its a PAAS implementation. Example config:
This is only a partial sample of the file. " jaendres
Future Releases 45970 "in IIS if web.confing section and the site craches with wrong web.config" Rewrite Rules 5.0.3 normal normal Awaiting Review defect (bug) new 2019-01-13T12:12:37Z 2019-01-13T22:34:19Z "in IIS if web.confing section and the site craches with wrong web.config error (2 sections). It happens/triggers by example if you are trying to change the ""Permalink Settings"".
The code responsible for this check is located in \wp-admin\includes\misc.php (line 748)
{{{
// First check if the rule already exists as in that case there is no need to re-add it
$wordpress_rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')] | /configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'WordPress\')]');
if ( $wordpress_rules->length > 0 )
return true;
}}}
The fix could be to register the namespace:
{{{
$xpath->registerNamespace(""x"", ""http://schemas.microsoft.com/.NetConfiguration/v2.0"");
}}}
and then in `$xpath->query` to check also for `/x:configuration/x:system.webServer/x:rewrite/x:rules/x:rule[starts-with(@name,\'WordPress\')]`
In this way it works without problem and does not break the site." boychev
Future Releases 19493 post and archive pagination don't work with custom endpoints Rewrite Rules 2.1 normal normal Awaiting Review defect (bug) new 2011-12-09T23:55:09Z 2018-01-25T20:22:02Z "Archive pagination and post pagination are not endpoint-aware, so they break when endpoints are added to them.
The following example code creates an endpoint, and then uses a filter to add that endpoint to various links on the rendered page:
{{{
add_action( 'init', function() {
global $wp_rewrite;
add_rewrite_endpoint( 'foo', EP_ALL );
$wp_rewrite->flush_rules(false);
} );
add_filter( 'post_link', 'gist_add_endpoint_to_url', 99 );
add_filter( 'get_pagenum_link', 'gist_add_endpoint_to_url', 99 );
function gist_add_endpoint_to_url( $url_base ) {
$endpoint = 'foo';
$url_parts = parse_url( $url_base );
$url = ( isset($url_parts['scheme']) && isset($url_parts['host']) ) ? $url_parts['scheme'] . '://' . $url_parts['host'] : '';
$url .= isset($url_parts['path']) ? $url_parts['path'] : '';
$url = user_trailingslashit( $url );
if ( '' === get_option('permalink_structure') ) {
$url .= isset($url_parts['query']) ? '?' . $url_parts['query'] : '';
$url = add_query_arg( $endpoint, 'true', $url );
} else {
$url .= $endpoint . '/true';
$url = user_trailingslashit( $url );
$url .= isset($url_parts['query']) ? '?' . $url_parts['query'] : '';
}
$url .= isset($url_parts['fragment']) ? '#' . $url_parts['fragment'] : '';
return $url;
}
}}}
You'll see that it works perfectly using the theme unit test, except that paginated posts produce URLs like this:
http://example.com/2008/09/layout-test/foo/true/2/
...which doesn't work. The inverse -- http://example.com/2008/09/layout-test/2/foo/true/ -- also doesn't work, and produces a 404 on top of it.
Also, the older posts / newer posts produce this format of link:
http://example.com/page/2/foo/true/
.. .which also doesn't work.
If you change gist_add_endpoint_to_url() to add a querystring param, older posts/newer posts links work fine, but post pagination still breaks:
{{{
function gist_add_endpoint_to_url( $url_base ) {
$endpoint = 'foo';
$url_base = add_query_arg( $endpoint, 'true', $url_base );
return $url_base;
}
}}}
If you don't use a permalink structure at all, it works fine, since the pagination params are passed directly in the URL.
I'm not sure if the fix lies in modifying add_rewrite_endpoint() so that it creates pagination urls in wp_rewrite, or modifying the way _wp_link_page() and get_next_posts_link() work. " mintindeed
Future Releases 34136 Allow register_post_type's rewrite to remove CPT slug Rewrite Rules 4.3.1 normal normal Awaiting Review enhancement new 2015-10-02T23:20:58Z 2022-06-24T18:55:50Z "Not sure if there are reasons (outside of naming conflicts) why register_post_type's rewrite does not allow an empty value as an argument to remove the post type slug from its future post URL's.
After a lot of research and some code from @JanBeck at my wordpress.stackexchange question: [http://wordpress.stackexchange.com/questions/203951/remove-slug-from-custom-post-type-post-urls] its clear that naming conflicts between a CPT and Page type URL's are being avoided.
I propose:
{{{
'rewrite' => array( 'slug' => '', 'with_front' => false ),
'has_archive' => 'something', // will now default to false to avoid possible conflict
}}}
then proper rewrite rules should be added to allow for the removal of this CPT slug and disallow the CPT to create conflicting URLs in the future. eg publishing ones that match page URL's the same as native posts append a '-1' to a conflicting URL.
This will solve a large problem where users are trying to hack around this by creating their own rewrite rules, hacking post.php, and pre_get_posts solutions.
" BenRacicot
Future Releases 14502 Enable /post-type/taxonomy/term/ permalinks Rewrite Rules normal normal Future Release enhancement reopened 2010-08-01T22:57:29Z 2019-06-04T13:51:29Z After we get /post-type/ handled (see #13818), it would be nice if we also had /post-type/taxonomy/term/ mapped to ?post_type=post-type&taxonomy=term scribu
Future Releases 41946 Option to delete_with_markers Rewrite Rules 4.8.2 normal normal Awaiting Review enhancement new 2017-09-21T18:14:48Z 2017-09-21T18:14:48Z "I was trying to develop a plugin for adding speed optimisation code to htaccess using builtin functions . I happened to find options to insert_with_markers and extract_with_markers. But I found there was not a direct option to delete_with_markers. I tried searching as much as possible and finally came out with delete_with_markers myself which I have used in my plugin (which I will be submitting in a day for review).I have refered the insert_with_markers and extract_with_markers to retain the WP style. I thought to share , if this could be integrated in WP as well for it could be of use to many.
function delete_with_markers( $filename, $marker ) {
if ( ! file_exists( $filename ) ) {
if ( ! is_writable( dirname( $filename ) ) ) {
return false;
}
if ( ! touch( $filename ) ) {
return false;
}
} elseif ( ! is_writeable( $filename ) ) {
return false;
}
$start_marker = ""# BEGIN {$marker}"";
$end_marker = ""# END {$marker}"";
$fp = fopen( $filename, 'r+' );
if ( ! $fp ) {
return false;
}
// Attempt to get a lock. If the filesystem supports locking, this will block until the lock is acquired.
flock( $fp, LOCK_EX );
$lines = array();
while ( ! feof( $fp ) ) {
$lines[] = rtrim( fgets( $fp ), ""\r\n"" );
}
if ( $markerdata = explode( ""\n"", implode( '', file( $filename ) ) ));
{
$state = false;
foreach ( $markerdata as $markerline ) {
if (strpos($markerline, '# BEGIN ' . $marker) !== false)
$state = true;
if (! $state )
$result[] = $markerline;
if (strpos($markerline, '# END ' . $marker) !== false)
$state = false;
}
}
// Generate the new file data
$new_file_data = implode( ""\n"", array_merge(
$result
) );
// Write to the start of the file, and truncate it to that length
fseek( $fp, 0 );
$bytes = fwrite( $fp, $new_file_data );
if ( $bytes ) {
ftruncate( $fp, ftell( $fp ) );
}
fflush( $fp );
flock( $fp, LOCK_UN );
fclose( $fp );
return (bool) $bytes;
}" shivi66
Future Releases 19747 Roles add_cap should call update_user_level_from_caps() Role/Capability 3.3.1 normal normal Awaiting Review defect (bug) reopened 2012-01-05T11:17:32Z 2022-05-13T22:08:51Z "Hey guys,
I've created a new user role, which didn't appear in the Author drop down list due to #16841. The workaround is to add a level_1 capability to that user, but because wordpress doesn't call update_user_level_from_caps() function when you add_cap, that isn't actually applied to existing users on the role, and you have to move them to a different role and back again if you want to apply the changed user role.
I'd suggest adding a call to update_user_level_from_caps() to add_cap (and remove_cap) to fix this in wp-includes/capabilities.php" lgladdy
Future Releases 40214 Some WP instances prematurelly try to do capability tests, before the user object is loaded Role/Capability 4.7.3 normal normal Awaiting Review defect (bug) new 2017-03-21T08:22:29Z 2017-03-21T08:22:29Z "What happens is that an empty deserialized stdObject is passed (probably too early) to the WP_user object and the _wp_get_current_user function mistakenly presumes the WP_user object to be properly initialized, thus it prevents the administrators (in fact anyone from doing anything that need capability checking) from accesing the protected page.
A quick fix for the solution was this:
users.php 2487
changed from:
if ( ! empty( $current_user )) {
changed to:
if ( ! empty( $current_user ) && isset($current_user->data->id)) {
This is a strange bug... it didn't effect my staging boxes running on 7.0.8 but it did effect all my boxes running 7.0.15+
It seems to me very unbeliavable that such little change can do harm, but I can reproduce it everytime I try to move the project to a box.
Sorry I'm not a WP boy but do move sites requllary and I haven't experienced such behavior with 4.6 or earlier." dffnbfee
Future Releases 49345 User with admin privileges cannot edit some pages/posts Role/Capability 5.3.2 normal normal Awaiting Review defect (bug) new 2020-02-02T20:05:29Z 2020-02-02T20:05:29Z "It happened to me when I deleted the admin user with ID = 1 and moved all its posts and pages to another user with admin privileges. As soon as I did it, some older pages could not be edited anymore (only seen or deleted).
In order to regain control of those pages, I had to patch wp-includes/capabilities.php as follows:
{{{
function current_user_can( $capability, ...$args ) {
$current_user = wp_get_current_user();
if ( empty( $current_user ) ) {
return false;
}
if ($current_user->has_cap(‘create_users')) return true; // line added
return $current_user->has_cap( $capability, ...$args );
}
}}}
" malamiao
Future Releases 47338 is_super_admin() should check a different capability Role/Capability normal normal Awaiting Review defect (bug) new 2019-05-21T14:07:18Z 2019-09-23T09:56:35Z "Currently is_super_admin() returns true in case the user has the delete_users cap (in case of a single site).
Since admins may want to delegate users managemente capability, IMHO a more appropriate capability to check is 'activate_plugins' or, better, check more than a single capability." lllor
Future Releases 42136 manage_links should be a custom capability not a default Role/Capability 4.8.2 normal minor Awaiting Review defect (bug) new 2017-10-07T19:36:23Z 2017-10-07T20:05:55Z "I just noticed the capability manage_links still gets added to the default administrator capabilities upon a clean install.
If you check that with current_user_can it returns as false, even when a user has this capability, like an administrator. This is when the plugin link manager is not installed.
If you have the plugin link manager installed, it returns as true (as expected).
So I think it should be removed out of the core and inserted into the https://wordpress.org/plugins/link-manager/." Beee
Future Releases 36691 "Ability to disable ""Password Protected"" post option" Role/Capability normal normal Awaiting Review enhancement new 2016-04-27T19:19:02Z 2018-03-10T17:59:50Z "We don't want any of our posts accidentally being published as ""password protected.""
It would be helpful to have a filter to disable that part of the UI." paulschreiber
Future Releases 20152 Multisite simplify option name to user_roles Role/Capability 3.3.1 normal normal Future Release enhancement new 2012-03-01T21:44:28Z 2018-09-18T16:24:40Z "Currently each blog in a MS install of WP stores an array of user roles in it's [prefix]_[$blog_id]_options table as an entry with the key [prefix]_[$blog_id]_user_roles
This makes it much harder to migrate MS install of WP to a different db prefix, etc. because not only do you need to change the table prefixes you need to go into each blog's options table and then properly update that option's key.
Because the table itself is sufficiently unique there isn't a need for this. The user roles array could be stored in an option called ""user_roles"" for each blog." colind
Future Releases 23391 User in contributor role can add images to post only via the text editor Role/Capability normal normal Awaiting Review enhancement new 2013-02-05T07:34:26Z 2018-10-03T12:18:01Z "1. Create a user with contributor role
2. start new post with it
3. notice there is no ""add media"" button anywhere
4. switch to text editing
5. use the img button to insert a URL to a valid img on the web
6. request approval for the post
7. let admin/editor approve it
8. go the the post's URL and notice that the image is shown
So, it is not that contributors are not allowed to use images, it is just that WP makes it hard to do so.
Either HTML needs to be sanitized and have all img tags removes for contributors, or access to the media library should be allowed for contributors denying only access to uploading. I vote for the second option." mark-k
Future Releases 5942 Add Owner role Role/Capability 3.1 normal normal Awaiting Review feature request reopened 2008-02-21T10:13:08Z 2017-11-06T17:05:19Z "This patch adds a new 'owner' role. The owner is an administrator who cannot be demoted, deleted or edited by other administrators. Owner is a secondary role - the user is both an administrator and an owner.
In the current implementation there is only one owner at a time. The current owner can transfer ownership of the blog to another administrator on the Transfer Ownership tab (under Users). I implemented this as a plugin because some site owners won't want the feature there at all.
This is of most interest for MU, but it's also probably useful for some regular WordPress blogs with multiple users.
This would be particularly useful in conjunction with the user_role table from #5541, but it works fine with or without it." tellyworth
Future Releases 41778 Archive page for user roles Role/Capability 4.8.1 normal normal Awaiting Review feature request new 2017-09-01T17:22:55Z 2017-09-02T21:23:07Z "If possible, implement userroles in the author archive page or create a seperate user archive for it. Along with an option to modify the base/slug.
For example, subscribers should have their own archive page. While subscribers don't hold any rights inside wordpress, in themes such as an ecommerce website or membership website, these subscriber roles are quite important as they are considered as 'customers'.
" mireillesan
Future Releases 37616 Replace `is_super_admin()` calls with real capability checks Role/Capability normal normal Future Release task (blessed) reviewing 2016-08-09T18:18:57Z 2017-05-08T17:18:40Z "As discussed in Multisite office hours (https://wordpress.slack.com/archives/core-multisite/p1470762377000454), there are plans to improve capability handling in WordPress, to also support network-wide (and possibly global) capabilities. The current `is_super_admin()` check system is no actual role- and capability-based system which makes it impractical to refine roles and capabilities on this level.
While a super admin should have access to all capabilities, we should get rid of all `is_super_admin()` checks that happen outside of `WP_User` and the `map_meta_cap()` function and replace those calls with dedicated capabilities. There might be a few other occurrences where `is_super_admin()` is actually the right choice, but generally it shouldn't be used in other locations anymore. This will open up new possibilities to think about how we can implement a true role- and capability-based system beyond the scope of a site.
The hardest part of this ticket will probably be finding names for the new capabilities. The good thing is that we most likely won't need to touch any roles or adjust `map_meta_cap()` since the new capabilities should only be granted to the super admin for now anyway.
We should probably create a list of occurrences and think about names for the capabilities (or whether we can use existing capabilities) first." flixos90
Future Releases 37362 @font-face errors with dashicons in Microsoft Edge Script Loader normal normal Awaiting Review defect (bug) new 2016-07-14T12:08:36Z 2017-12-11T23:04:04Z "I encountered the following errors in Microsoft Edge console when enter admin dashboard:
CSS3113:@font-face font format not recognized
dashicons.eot
CSS3120: No fonts available for @font-face rule
load-styles.php (0,37)
This is the following explanation of error code https://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k%28VS.WebClient.Help.CSS3113%29#cssCodes
" jevuska
Future Releases 43900 Add hint about blocked Javascript as possible error reason in script-loader.php Script Loader normal normal Awaiting Review defect (bug) new 2018-04-29T18:52:58Z 2018-05-02T09:41:14Z "When trying to do various things with a new site, I got the same error message over and over:
{{{Connection lost or the server is busy. Please try again later.}}}
I even reinstalled, but the error didn't go away. When I revisited the issue next day, finally realized what silly mistake i had made.
In order to help other people with same issue, we only need to change the string above in /wp-includes/script-loader.php (around row 840) into:
{{{Connection lost, the server is busy, or you may have blocked JavaScript. Please try again later.}}}
" tobifjellner
Future Releases 55184 Custom style handle attached to a custom block style is never load even if the block is in the page. Script Loader 5.9 normal normal Awaiting Review defect (bug) new 2022-02-17T11:12:39Z 2024-01-30T05:12:10Z "== Description
I have a custom block based theme running on WP 5.9 that declares custom styles for certain blocks via the register_block_style function, but when I specify a style_handle the style is never enqueue even though the block is present in the page content (and core block assets are only loaded when they are rendered).
This issue ref to ticket #54457 https://core.trac.wordpress.org/ticket/54457
== Step-by-step reproduction instructions
1. Create a theme
2. Register a custom ""Display"" block style for the ""Heading"" block via register_block_style with ""my-theme-block-style-css"" style_handle
3. Register a ""my-theme-block-style-css"" style via wp_register_style
4. Add ""Heading"" block in page content with our ""Display"" style
5. Check CSS, ""my-theme-block-style-css"" is not loaded
== The relevant code
It seems that the render_block filter callback in enqueue_block_styles_assets from script-loader.php never fire.
script-loader.php
[https://github.com/WordPress/wordpress-develop/blob/master/src/wp-includes/script-loader.php#L2463-L2477]
[https://core.trac.wordpress.org/changeset/52262]
" alexandrebuffet
Future Releases 40134 Invalid data for scripts in footer Script Loader normal normal Awaiting Review defect (bug) new 2017-03-12T16:37:24Z 2017-03-12T16:37:24Z "During register scripts via wp_register_script in last param I can choose that script should be in footer. In function we see:
{{{#!php
add_data( $handle, 'group', 1 );
}
}}}
so footer scripts I should check use this code:
{{{#!php
get_data( $handle, 'group' ) ) {
echo 'in footer';
} else {
echo 'in header';
}
}}}
I check for this: admin-bar and I have false -> `in header`. We can see this code:
{{{#!php
add( 'admin-bar', ""/wp-includes/js/admin-bar$suffix.js"", array(), false, 1 );
}}}
This should be in footer (and is, but I can't check it via my script).
I think that this is bug." sebastian.pisula
Future Releases 15833 Script concatenation fails to take external dependencies into account. Script Loader 3.0 normal normal Future Release defect (bug) new 2010-12-15T17:35:17Z 2019-05-21T10:42:05Z "Script concatenation places the concatenated script include first, before any scripts loaded separately. If one of the scripts in the concatenation relies on a script outside the concatenation the dependency order is ignored.
When the dependencies are all internal to the concatenation things work fine (for example script4 relies on script3):
* concat=script1,script2,script3,script4,script5
But when script3 is loaded externally, script4 will break:
* concat=script1,script2,script4,script5
* external-script3
This becomes apparent if jQuery is loaded from a non-standard location (via a plugin or the [http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_a_default_WordPress_script_from_a_non-default_location code from the Codex]) in that the visual editor fails to function correctly because source:/trunk/wp-admin/js/editor.js uses jQuery (which it fails to register as a dependency, see ticket:15830, but when I fixed that locally the results were the same).
I'm working around this in [http://wordpress.org/extend/plugins/use-google-libraries/ Use Google Libraries] by globally disabling concatenation, but it would be nice if this was fixed.
If possible, it would be nice if the loader was smart enough to do something like:
* concat=script1,script2
* external-script3
* concat=script4,script5
Or at least flagged the script with the dependency as unsafe for concatenation:
* concat=script1,script2,script5
* external-script3
* script4
" jczorkmid
Future Releases 49470 Script loader: simplify maintenance Script Loader 5.0 normal normal Future Release defect (bug) new 2020-02-18T22:11:18Z 2020-07-21T19:03:13Z "The main functionality of script-loader is to provide a list of all WordPress scripts and stylesheets together with their dependencies, translation objects and extra/inline code.
During the WP 5.0 development a few (shorthand) functions were introduced that output hard-coded data used to ""construct"" that list by running several loops instead of the simpler, one-line definitions like in the pre-existing list. This makes it harder to ""see"" and maintain the entries in the list, and doesn't bring any benefits (all data is still hard-coded, but is now in separate places). It also makes it harder to ""dynamically"" extract and construct the scripts list like in #48154.
For best results and easier maintenance the ""helper functions"" introduced in WP 5.0 should be removed and the list of scripts in `wp_default_scripts ()` should include all entries." azaozz
Future Releases 52879 The SCRIPT_DEBUG constant is ignored when concatenating scripts Script Loader 2.8 normal minor Future Release defect (bug) new 2021-03-22T03:39:16Z 2022-04-27T04:53:22Z Happens because `SCRIPT_DEBUG` is usually defined in `wp-config.php` however that file is not used in `load-scripts.php` and `load-styles.php`. This results in non-minified files being concatenated and outputted when SCRIPT_DEBUG is false and WP runs from /src. azaozz
Future Releases 42440 Uncaught TypeError: $(...).wpColorPicker is not a function Script Loader 4.8.3 normal normal Awaiting Review defect (bug) new 2017-11-05T23:30:56Z 2017-11-06T00:56:47Z "I can't edit my page using Page Builder because the next Error
{{{
gdlr-admin-panel-html.js?ver=f63693efb5b9a5e10ac3abbd57323a6b:192 Uncaught TypeError: $(...).wpColorPicker is not a function
at HTMLDocument. (gdlr-admin-panel-html.js?ver=f63693efb5b9a5e10ac3abbd57323a6b:192)
at i (load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,plupload&ver=f63693efb5b9a5e10ac3abbd57323a6b:2)
at Object.fireWith [as resolveWith] (load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,plupload&ver=f63693efb5b9a5e10ac3abbd57323a6b:2)
at Function.ready (load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,plupload&ver=f63693efb5b9a5e10ac3abbd57323a6b:2)
at HTMLDocument.K (load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,plupload&ver=f63693efb5b9a5e10ac3abbd57323a6b:2)
}}}
Can you help please?" shamstarek
Future Releases 47322 scenario based-bug in the file load-style.php Script Loader 5.2 normal normal Awaiting Review defect (bug) new 2019-05-20T01:29:27Z 2019-05-20T12:04:06Z "Technically the file load-style.php has a bug, however it is a scenario based-bug so it rarely occurred. Not going in to so much details of PHP the problem is with the variable $out concatenation of ""$contents"" used in the foreach loop, i.e., O(n) complexity issue - the allocated buffer is exhausted assigned by PHP during the single http request execution.
The better and optimized way is:
move the ""header"" just the above ""foreach ( $load as $handle )"" loop statement.
remove ""$out"" , i.e., echo $content rather concatenating into $out.
I had this issue during installing app on my local machine, and solved it happily by doing changes that way." asimbaki
Future Releases 58075 wp_enqueue_scripts action not firing at the right time with block themes Script Loader 6.2 normal major Awaiting Review defect (bug) new 2023-04-04T05:01:44Z 2023-05-26T09:44:21Z "How to reproduce:
Use this piece of code somewhere in the (child) theme or a plugin
{{{#!php
` and `