text:
__group__,ticket,summary,owner,component,_version,priority,severity,milestone,type,_status,workflow,_created,modified,_description,_reporter Next Release,30344,Curly Quotes Missing for Strange Input,,Formatting,4.0,normal,trivial,4.2,defect (bug),new,has-patch,2014-11-14T18:17:34Z,2015-02-19T21:27:57Z,"wptexturize() gives unexpected results if an Administrator uses a post body like this: {{{ <> ""Hello world"" <> }}} This was caused by a small mistake in the new regexp.",miqrogroove Future Releases,16993,wp-mail.php doesn't account for half-hour and quarter-hour timezones.,,Mail,3.1,normal,trivial,Future Release,defect (bug),new,has-patch,2011-03-29T06:55:06Z,2014-02-02T06:10:04Z,"To reproduce the problem, install Wordpress and set it to post by email. Send a post from an email address which is configured to use a half-hour or quarter-hour timezone (like Afghanistan, +0430). wp-mail.php calculates the timezone by multiplying the timezone offset by 36. This works fine for whole-hour timezones (Pacific Time -0800, -800 * 36 = -28800 seconds). For half-hour and quarter-hour time zones this does not work (Afghanistan +0430, 430 * 36 = 15480, should be 16200). The reason this happens is because an hour has 60 minutes as opposed to 100 minutes. 430 / 100 = 4.3 hours, not 4.5 hours. 450 * 36 result in 16200 minutes, but timezones are represented as hours and minutes, not fractional hours. This results in posts that are posted via email from a half-hour or quarter-hour timezone to be posted in the future or in the past from when it was actually posted.",neoscrib Future Releases,24795,OS X Treatment,,Permalinks,3.6,normal,trivial,Future Release,enhancement,new,has-patch,2013-07-18T15:54:01Z,2014-09-15T12:57:54Z,"Just a minor annoyance. Certain things are inherently different about using a Mac over any other Operating system. Specific to my case is keymappings. While I suspect most Mac users are smart enough to read ""Ctrl + A"" and translate that to ""CMD + A"", we should be explicit when we can. This patch inrtroduces pluggable function is_osx() that is really basic. Sadly, relies on User Agents and so is inherently flawed, but mainly useful anyway. Using this function, the Permalinks Options screen uses Command A instead of CTRL A when .htaccess is not writable. A little thing but annoying enough to warrant a patch.",technosailor Future Releases,15394,"Ancient ""Are you sure you want to do this"" now confusing",,Security,3.1,normal,trivial,Future Release,defect (bug),new,,2010-11-11T21:51:26Z,2014-06-27T04:19:48Z,"The default failing nonce message did not pass the wife test. Asking ""Are you sure you want to do this?"" now that there is no longer ""OK"" and ""Cancel"" buttons is confusing and my wife just asked me ""How do I tell I'm sure?"" Not sure about the best wording, I took the same approach as Twitter's expired OAuth token links with a message that does not let user think there is something to confirm.",ozh Future Releases,29385,wpview: selecting all the content with ctrl/cmd + A when there's a view on top doesn't work,,TinyMCE,4.0,normal,trivial,Future Release,defect (bug),new,has-patch,2014-08-26T20:21:36Z,2014-09-03T07:11:55Z,,iseulde Next Release,9777,Usability : add delete button to edit-tags.php,,Taxonomy,2.7.1,normal,minor,4.2,enhancement,new,has-patch,2009-05-09T22:56:39Z,2015-02-13T17:10:59Z,"Add ""delete"" button to ""edit category"" menu so i can delete the category and not only edit it. this is a very useful feature that is missing in this menu. '''LOCATION:''' Admin -> Posts -> Categories -> Edit Category '''URL:''' http://www.site.org/wp-admin/categories.php?action=edit&cat_ID=302 ",ramiy Future Releases,21650,replace serialize() with print_r() in stats() function in wp-includes/cache.php,,Cache API,3.4.1,low,minor,Future Release,defect (bug),new,has-patch,2012-08-21T13:42:29Z,2014-08-29T22:59:25Z,"In PHP 5.3 it is no longer possible to serialize data that contains a SimpleXMLElement object. It produces a fatal error. See https://bugs.php.net/bug.php?id=49800 The stats() function attempts to determine the allocated space for objects in the cache by using strlen() of the serialized object. This can fail for the reason above. Given that the figure returned is simply an estimation of the space I propose that the code is changed to use print_r( $cache, true ) instead of serialize( $cache ) ie. to become `echo ""
tags from few more translatable string,,I18N,,normal,normal,4.2,defect (bug),new,has-patch,2014-12-06T14:09:06Z,2015-02-14T17:31:33Z,"See ticket #30612.
I found few more strings that use tags inside of translatable string. This patch fixes the string.
Remove tags from translatable string",ramiy
Next Release,29892,get_available_languages() can alternately too and not enough permissive,,I18N,4.0,normal,normal,4.2,defect (bug),new,has-patch,2014-10-08T15:03:45Z,2015-02-13T16:30:44Z,"Since 4.0, it's possible to switch site languages from the language dropdown in options-general.php. This is a great feature.
But i think there can be cases when get_available_languages() is too permissive and others not enough.
1/ Too permissive
If for some reason, a theme or plugin language file is added at the root of {{{WP_LANG_DIR}}}, then the theme or plugin language file will be listed in the dropdown because it names does not start with 'continents-cities' or 'ms-' or 'admin-'. It can be confusing for the site admin.
2/ Not enough (might be an edge case)
{{{get_available_languages()}}} accepts a {{{$dir}}} param. So although it's not used in core, i guess plugins/themes can use this function to list language files of a given directory. In this case, if one of the file starts with 'continents-cities' or 'ms-' or 'admin-' then it won't be listed.
The attached patch is suggesting a way to be sure only site language files will be listed if the $dir param is null or == {{{WP_LANG_DIR}}} else to list all language files.",imath
Next Release,30596,Transparent background of .png not preserved when rotating picture,markoheijnen,Media,3.5,normal,normal,4.2,defect (bug),assigned,,2014-12-04T16:15:14Z,2015-01-13T14:29:13Z,Rotating .png picture with transparent background does not preserve transparency. Resulting picture has partially black background. ,frankpw
Next Release,21295,Retrospectively generate new images sizes if requested,,Media,,low,normal,4.2,feature request,reopened,has-patch,2012-07-17T10:12:01Z,2015-02-13T17:17:54Z,"At present the image variations are created at the moment the image is uploaded to the server. If a new image size is later added, or the default ones changed after an image is uploaded then the existing images are not adjusted.
Whilst there are plugins that provide - regenerate thumbnail functionality it might be neater if an image size is requested that doesn't exist that the system generates it at the time it is requested. This only need happen once per image as once it is created it doesn't need to be created again.",TwoThirdsWater
Next Release,30380,get_transient doesn't check the return of get_option,,"Options, Meta APIs",2.8,normal,normal,4.2,defect (bug),new,has-patch,2014-11-18T06:48:48Z,2015-02-18T23:04:05Z,"When calling get_transient on a key that doesn't exist, notoptions[$key] is set so it won't do any further queries, but it doesn't go far enough. Since the get_option( $transient_timeout ) doesn't check the return well enough it will always cause 2 more queries. (SELECT autoload FROM wp_options ...)
If get_options( $transient_timeout ) is returning false, what is the point of trying to delete it.
Next Release,30577,Allow plugins to bypass wp_options when saving transients,,"Options, Meta APIs",2.8,normal,normal,4.2,enhancement,new,commit,2014-12-02T20:25:32Z,2015-02-07T14:28:21Z,"In `set_transient()`, the only way to prevent transients from using the wp_options table is by using a custom object-cache.php drop-in.
This isn't consistent with `get_transient()`, which does have a filter to short-circuit transient retrieval (pre_transient_*).
This patch allows plugins to bypass the options table when saving transients.
'''Full disclosure:''' I'm writing a plugin to store transients in a separate table, instead of cluttering wp_options. Reference: https://github.com/mgibbs189/better-transients",mgibbs189
Next Release,30501,Prevent flushing rewrites during page load,SergeyBiryukov,Permalinks,,normal,normal,4.2,defect (bug),reopened,dev-feedback,2014-11-25T22:15:16Z,2015-01-14T07:22:26Z,Flushing rewrites during the pageload breaks a lot of plugins. They might not have registered their rewrite yet which would cause issues. I propose preventing the flushing from working and forcing it to be run on shutdown instead.,joostdevalk
Next Release,17817,do_action/apply_filters/etc. recursion on same filter kills underlying call,,Plugins,2.2,normal,normal,4.2,defect (bug),reopened,needs-docs,2011-06-16T18:04:04Z,2015-02-25T21:46:05Z,"Affects @wp-includes/plugin.php: do_action, do_action_ref_array, apply_filters, apply_filters_ref_array, _wp_call_all_hook
When calling a specific hook from a function that was called through that same hook, the remaining hooked functions from the first iteration will be discarded.[[BR]]
This is due to the handling of the array of registered functions using internal array pointers instead of a more robust approach.
In my example, this problem arose when I tried to programmatically delete a menu in reaction to the removal of a category. I hooked into the delete_term action to do so, upon which another function hooked into delete_term would no longer fire.[[BR]]
The obvious workaround is to adjust the priorities accordingly, but it shouldn't be necessary.
The current implementation as in apply_filters is:
reset( $wp_filter[ $tag ] );
if ( empty($args) )
$args = func_get_args();
do {
foreach( (array) current($wp_filter[$tag]) as $the_ )
if ( !is_null($the_['function']) ){
$args[1] = $value;
$value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
} while ( next($wp_filter[$tag]) !== false );
Using the following method instead, both iterations would develop properly:
if ( empty($args) )
$args = func_get_args();
foreach ( $wp_filter[$tag] as $filters )
foreach( (array) $filters as $the_ )
if ( !is_null($the_['function']) ){
$args[1] = $value;
$value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
Next Release,15459,Need Better Page Hierarchy Display Algorithm,johnbillion*,"Posts, Post Types",3.0.1,normal,normal,4.2,enhancement,accepted,needs-unit-tests,2010-11-18T00:33:16Z,2015-02-24T20:07:27Z,"WordPress 3.0.1
File: /wp-admin/includes/post.php
Lines: 904-912
// Hierarchical types require special args.
if ( is_post_type_hierarchical( $post_type ) ) {
$query['orderby'] = 'menu_order title';
$query['order'] = 'asc';
$query['posts_per_page'] = -1;
$query['posts_per_archive_page'] = -1;
wp( $query );
The code in the area mentioned above causes our site to use over 170mb of memory on each load of the Pages index. This really should be improved to accommodate sites that have large amounts of hierarchical data. Looks to me like it's pulling all the data for all the pages on the site. Perhaps a solution where unnecessary data is not included might be better here (such as content or excerpt).",truthmedia
Next Release,30354,get_posts_by_author_sql doesn't also return prefixed where is asked to,,Query,3.0,normal,normal,4.2,defect (bug),new,has-patch,2014-11-15T22:39:54Z,2015-01-23T17:55:05Z,In get_posts_by_author_sql() if you set the full to false it doesn't return the post type element of the query,pbearne
Next Release,18788,Remove redundant type attributes from script and style tags,,Script Loader,3.3,normal,normal,4.2,enhancement,reopened,has-patch,2011-09-27T06:54:02Z,2015-02-06T18:38:14Z,"Now that the admin is using the HTML5 doctype everywhere, the `type=""text/javascript""` and `type=""text/css""` attributes on script and style tags are unnecessary (if they weren't anyway), and I think they can be safely removed to trim a few hundred bytes from core. Should be a simple search and replace exercise.",solarissmoke
Next Release,30021,Admin bar font appears thin in Firefox when themes turn on font-smoothing in body element,,Toolbar,4.0,normal,normal,4.2,defect (bug),new,commit,2014-10-17T15:43:15Z,2015-01-13T14:06:48Z,"Font bug in admin bar when theme turns on font smoothing in Firefox
Looks good when in dashboard, or theme does not use font smoothing
Propose solution to declare proper font smoothing in CSS when declaring font in admin elements.
font: 400 13px/32px ""Open Sans"",sans-serif;
-webkit-font-smoothing: subpixel-antialiased;
-moz-osx-font-smoothing: auto;
Next Release,24916,"XML-RPC ""wp_author_id"" ignored when changing author to self",markoheijnen,XML-RPC,3.8,normal,normal,4.2,defect (bug),assigned,has-patch,2013-08-01T20:40:00Z,2015-01-13T14:06:48Z,"When using the MetaWeblog mw_editPost method to change the author of an existing post from another user to the logged in user, the wp_author_id"" field is not read from the content_struct because of a logic error in mw_editPost().
The logic error is in this line:
if ( isset($content_struct['wp_author_id']) && ($user->ID != $content_struct['wp_author_id']) )
Here it is assumed that if the supplied author ID is the same as the logged in user, then the supplied ID does not need to be read. However, this is not true when the post being edited is in fact not currently in the logged in user's authorship.
The attached patch fixes the problem and also clarifies the permissions test so that it will reject any effort to change the author ID either to another user's ID or from another user's ID, unless the logged in user has permission to editor others' posts.
Future Releases,25408,"Ability to specify that a list table column is ""primary""",,Administration,,normal,normal,Future Release,enhancement,new,has-patch,2013-09-24T17:28:19Z,2014-08-07T15:47:01Z,"List tables have a ""primary"" column of sorts; that is, the one with the row actions. We should be able to specify which column is the primary one via API, apply an appropriate class, and display the row actions in cells in that column. Currently, developers customizing the list table columns often need to re-create row actions if they do not use the post name column, or just live with the row actions appearing in a less sensible spot.
This thought stems from three things in particular:
1. The above customization example.
2. Old experiments (nearly exactly 2 years ago) in making list tables responsive: http://cl.ly/3F1L0N3z1M0F0Z3t0X3W in #18198.
3. The assortment of selectors in [25595] that are not particularly robust and not easily reused by developers. We should be able to target something like `.has-row-actions` instead.",helen
Future Releases,26502,Dashboard Activity dates conditionally need the year,,Administration,3.8,normal,normal,Future Release,enhancement,new,has-patch,2013-12-09T13:25:45Z,2013-12-09T13:57:50Z,"If you import the Theme Unit Test data, one of the posts is scheduled for Jan 1st 2050. The Dashboard Activity widget doesn't indicate what year this is scheduled for though, and leaves the date as ambiguous - I suspect most people would assume it would be in a few weeks time, given no other information. The same would apply if the Recent Activity doesn't have a limit on it, where the last post was more than a year ago.
Since these might be moving towards edge cases compared to activity on a lot of sites, I'd like to see a year included only if the timestamp is more than 1 year before or after the current date (rather than on each date).
Screenshots included for clarification.
Future Releases,18179,WP_Meta_Box,,Administration,,normal,normal,Future Release,feature request,new,has-patch,2011-07-20T01:05:50Z,2014-10-21T13:13:04Z,"Ryan, Nacin, and I would like to see a Meta Box class in 3.3. Let's make it happen.
Attached is a first pass (in plugin form, for ease). It provides a basic API and supports multiple instances. Instances are stored in a static meta box registry, which should require minimal interaction.
Keep in mind that meta boxes are not just registered on CPT pages — they are also used on the dashboard, in menus, and in custom UIs. The parent class should be suitable for each of these cases.
I think we should move caps to the main Meta Box class (and allow subclasses/instances to specify/override the cap through $args), and also provide $args to enable/disable any checks we perform before saving (e.g. autosave, etc).
It would also be interesting to integrate this with the proposed metadata API improvements.
See #15066 for prior discussion.",koopersmith
Future Releases,29386,Autosave message should disappear when the next autosave happens,,Autosave,,normal,normal,Awaiting Review,defect (bug),new,has-patch,2014-08-26T21:17:58Z,2014-10-02T22:56:45Z,"An autosave overwrites the previous autosave, so the message is no longer relevant. It will just display the same content as the current editor.",iseulde
Future Releases,12400,"Add a wp_loaded hook, an ob_start hook, and an front end ajax hook",,Bootstrap/Load,3.0,normal,normal,Future Release,feature request,reopened,dev-feedback,2010-02-27T01:08:08Z,2014-10-28T19:43:59Z,"Requests for some kind of wp_loaded hook have crept up here and there in trac over the years.
Typically, the requester is looking into doing front-end ajax requests and the like. There are other use cases, such as wanting to catch specific URIs -- e.g. a trailing /print/ to the url, which the permalink API is incapable of catching.
They all got rejected on grounds that there is the init hook that can be used just as well for ajax. Or the template_redirect hook in place of an ob_start hook. The list goes on.
When you want WP and plugins to be loaded '''and''' fully initialized, instantiated and ready to go, setting a priority to obscene levels on the init hook works (I typically use 1000000)... but it always feels like you're working around a crippled API.
Starting output buffers on template_redirect with a priority -1000000 feels equally clunky.
Then, there is the front-end ajax. Yes, admin-ajax.php can be used unauthenticated... But the fact of the matter is, you can end up with SSL turned on when it's not useful, and the lack of an wp-ajax.php file makes many a plugin dev wonder where in the bloody hell he should catch his own requests.
It would be sweet if this all got fixed in WP 3.0.
The argument that goes ""a hook already exists"" seems extremely invalid to me. There are many places in WP where two hooks (and oftentimes many more) can be used to achieve the same result. Think wp_headers and send_headers, for instance. What they have in common is some kind of before/after flow, which init and template_redirect are currently lacking.
One could argue that parse_request is nearby init, and that wp is nearby template_redirect, so they'd be good enough. But the first of these parses expensive regular expressions before firing, and both are only known to WP junkies.
Suggested hooks for WP 3.0:
- a wp-ajax.php file built similarly to admin-ajax.php.
- an wp_loaded hook at the very end of wp-settings.php, with a commentary that tells plugin authors that init should be used to instantiate, wp_loaded should be used to act once everything is instantiated, and that wp-ajax.php has hooks that are specific to ajax requests.
- an ob_start (or pre_load_template, or whatever...) hook at the very beginning of template-loader.php, with a commentary that tells plugin authors that the new hook should be used to instantiate such as output buffering once WP is fully loaded, while the second is traditionally used to pick an arbitrary template.",Denis-de-Bernardy
Future Releases,30686,Twenty Fourteen/Thirteen/Twelve Navbar submenu behaviour,,Bundled Theme,4.0.1,normal,normal,Future Release,defect (bug),new,,2014-12-12T08:11:58Z,2014-12-15T17:45:49Z,"As you all may know, both 2014/13/12 themes require you to hover over a menu item in order to access the submenu item. This isn't a problem for desktops but for touchscreen devices this may pose a problem.
I notice this problem has largely been addressed at least for the 2013 and 2012 themes for Android, iOS and Windows Phone devices (see https://core.trac.wordpress.org/ticket/24767#comment:35). However, on my Windows 8 tablet, it still registers the first tap as a click on both Internet Explorer 11 and Mozilla Firefox (Google Chrome works fine). I believe both browsers somehow do not declare whether the device is a touchscreen.
In addition, for the 2014 theme, the (partial) fix isn't even implemented (I don't know how it got implemented for both 2013 and 2012 themes but was overlooked for 2014), therefore you will still find it hard to click on sub-menus if you're using an Android device.
As for the 2013 and 2012 themes, I know that the Windows 8 tablet userbase is comparatively small, but I believe it will grow over the years. I'm not sure how this can be fixed in the mean time (since the hover/click behaviour seems to rely on a touchscreen detection), but I would like to suggest the following:
- In the Twenty Fifteen theme, this issue seems to be fixed once and for all, as the dropbox arrow next to the menu item is a separate link. Clicking on the arrow itself will maximise/minimise the sub-menu, instead of linking you to the menu item itself.
- However, the Twenty Fifteen theme's menu is only available at the side, instead of the top.
- Thus, if the improvements made in the Twenty Fifteen theme could be backported to Fourteen, Thirteen and Twelve. It would be great!
P.S. I'm not sure what to classify this ticket under, but I guess I will leave it as a 'bug' since the hover and click issues have not been completely addressed, especially on the Twenty Fourteen theme. The same behaviour occurs on WordPress 4.0.1 and 4.1 RC.",trenzterra
Future Releases,26379,Twenty Fourteen: Featured Content Slider problems in IE10+ with touch,,Bundled Theme,3.8,low,normal,Future Release,defect (bug),new,,2013-12-03T18:41:18Z,2014-02-09T04:18:41Z,"Copied over from #26189 (screenshots available there)
= IE 9 Mobile (Windows Phone 7.5) =
- Surprisingly, only one issue: no Genericons. We might want to consider adding fallbacks for the menu and search icons; I think the others are non-essential. In Twenty Thirteen the search icon was a png at least, and we had more colors to deal with (#23985).
= IE 10 Mobile (Windows Phone 8) =
- When featured content slider is in use, impossible to scroll down the homepage in landscape mode (swiping up and down moves the slider, but doesn't scroll and the slider and header fill the entire screen). Can sometimes get past it by pulling down, then quickly up on the header area and relying on kinetic scrolling.
- It takes a very particular technique to avoid the link being activated instead of activating the slider when swiping left/right on the homepage featured content area. The link is almost always activated instead.
= IE 11 ""Immersive"" (Windows 8.1) =
- Same slider interaction issue as above -- swiping results in triggering the link unless you go super slow.
- Touch targets are generally good, but I consistently have trouble with the category links. I think we need to either add some more spacing or bump the font size there to optimize the experience for touch users (literally everywhere else was good).",celloexpressions
Future Releases,21267,Kill the serialization of $wp_filter in get_terms(),,Cache API,,normal,normal,Future Release,defect (bug),new,has-patch,2012-07-13T21:35:11Z,2015-01-16T04:02:02Z,"We use this as part of a persistent cache key:
See [8225].
This is not good for two reasons. First, well, it's a not fun to reach into our internal API like that. But worse, it's broken whenever an object method is used, because spl_object_hash() will be unique to that object, thus rendering the cache invalidated on the next pageload.
As an aside, we should probably have _wp_filter_build_unique_id() create a delimiter when dealing with a static class method — `$function[0].$function[1]` can conflict with a legitimate function name.
I'm not sure how this should be fixed.",nacin
Future Releases,20875,Introduce wp_cache_get_multi(),,Cache API,,normal,normal,Future Release,enhancement,new,has-patch,2012-06-07T13:56:28Z,2013-09-18T00:11:45Z,"Both options (see #10274) and themes (see #20103) could benefit from a cache backend that implements get_multi(). For options, this means we can use individual keys. For both themes and options, we'd be able to make fast multiple gets.
Both APC and Memcached (but not Memcache) implement multiple-get. A fallback would be looping over get().
Separately, as this would be a new function we use in core, we probably need to start doing some kind of versioning for drop-ins like db.php and object-cache.php.",nacin
Future Releases,15565,More context for clean_post_cache(),,Cache API,3.1,normal,normal,Future Release,enhancement,new,,2010-11-24T17:41:07Z,2013-09-24T15:45:43Z,"I'd like more context to be available when the clean_post_cache hook is run.
Scenario: I have a plugin caches the post_IDs of most post queries that go through WP_Query. Invalidating that cache is done via the clean_post_cache hook, but requires a bunch of fragile hacks to prevent cache invalidation for things like comment inserts, which update the post's comment_count (which could, in theory, affect a WP_Query, but that's another story).
Option 1: Add extra actions to provide context. This is the simpler option. Patch 1 does this for the above scenario.
Option 2: Add an optional context parameter to clean_post_cache(). This is more general, but I can't think of anyplace else WordPress uses as similar approach. Patch two.",mdawaffe
Future Releases,23327,Cache incrementors for get_bookmarks(),,Cache API,3.5.1,low,normal,Future Release,task (blessed),new,has-patch,2013-01-30T18:24:08Z,2015-01-24T16:30:50Z,"Make use of a caching incrementor and store queries in individual cache buckets to avoid memory exhaustion.
Pattern this after #23167, which does the same thing for get_pages().
See #23173 for an explanation of the motivation behind this.",ryan
Future Releases,14773,Error in slug parsing leads to unlimited URLs for the same article = duplicate content,dd32,Canonical,2.5,normal,normal,Future Release,defect (bug),reviewing,has-patch,2010-09-03T14:20:45Z,2013-12-03T19:15:12Z,"an example says more than 1000 words:
right url:
wrong urls:
Wordpress returns the article with HTTP status code 200 for the wrong URLs.
This is a serious issue for people regarding search engine optimization (duplicate content).
Expected results:
Wordpress returns HTTP Status code 301 with Location-Header and right URL to the client.",thermoman
Future Releases,12456,Canonical URL redirect issue with post_id/postname permalink structure,dd32*,Canonical,2.9.2,normal,normal,Future Release,enhancement,accepted,tested,2010-03-02T14:06:38Z,2014-07-07T19:58:05Z,"The issue:
Using /%post_id%/%postname%/ as permalink structure,
Most canonical redirects work fine, except:
domain.com/post_id/ brings you to the post but does not redirect to the canonical domain.com/post_id/postname/
Additional info:
The above permalink structure conforms to best practice as described in the codex:
Therefore I figured this was a bug, given the attention given to redirecting to the canonical url ""So to avoid confusing search engines and to consolidate your rankings for your content, there should only be one URL for a resource.""
Future Releases,10422,Answering to comment from Dashboard does not update Dashboard statistics,,Comments,2.8.1,normal,normal,Future Release,defect (bug),new,has-patch,2009-07-16T05:18:48Z,2014-02-02T13:44:28Z,"Hi there,
there is a short statistics ""Right now/At a Glance"" box in Dashboard, containing number of posts, pages, comments etc.
There is also a box with list of most recent comments in the Dashboard.
If a user answers to a comment in this ""Recent comments"" box in Dashboard, which uses AJAX, so it does not reload the whole page, it creates a new comment, but the number of comments in the ""Right now"" box is not updated.
I know this is not a critical bug, but it would be really nice if it works.
Take care, Honza
P.S.: As there is no ""Dashboard"" component in the Trac, I did not know whether to assign it to Administration or Comments component. I put it into Administration, if you think it better suits to Comments or any other component, please feel free to change it.",honza.skypala
Future Releases,16134,Check capabilities/role before adding comment links to email,,Comments,3.0.4,normal,normal,Future Release,defect (bug),new,has-patch,2011-01-07T10:23:06Z,2013-08-09T00:47:09Z,"Currently the Trash it, Delete it, Spam it are added to comment notifcation emails, which are sent to the author.
However, the author may have had their role changed down to a lower-role (or had capability removed) since they wrote the post, and no longer would have permissions to use the links added to the email.
It may also be the case that a subscriber user was assigned as the Post Author (perhaps as a sort of Guest Author) for a post, and never had the permissions to use those links.
Can some sort of check be added, before these links be added to the email?",GaryJ
Future Releases,761,Add hook to conditionally disable comment notifications,matt,Comments,1.2.2,normal,normal,Future Release,enhancement,reopened,reporter-feedback,2005-01-27T07:42:58Z,2014-11-26T12:16:35Z,"E-mail notifications for posted comments are controlled by the 'comments_notify' setting. E-mail notifications for comments needing modification are controlled by the 'moderation_notify' setting. Each is an all or nothing setting, i.e. if 'on', ALL post authors will receive notifications when appropriate. AFAIK, there isn't a clean way for a plugin to insert itself into the notification process.",coffee2code
Future Releases,6286,"Proposed changes to ""E-mail me whenever"" Discussion Options",,Comments,2.5,normal,normal,Future Release,enhancement,new,has-patch,2008-03-18T19:14:55Z,2014-11-17T20:52:29Z,"WRT the ""E-mail me whenever"" options on the Discussion options page:
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,13820,AJAX update the comment bubbles on edit-comments.php,,Comments,3.0,normal,normal,Future Release,task (blessed),assigned,has-patch,2010-06-10T13:45:27Z,2014-09-29T10:45:49Z,"We update the bubble in the Comments admin menu item. We should also update the counts in the ""In Response To"" bubbles, as well as the bubble color.",matt
Future Releases,24160,ALTERNATE_WP_CRON runs wp_cron() too early,,Cron API,3.4,normal,normal,Future Release,defect (bug),new,has-patch,2013-04-22T17:48:44Z,2014-07-29T13:02:00Z,"See #19818 for full details.
Then, [https://core.trac.wordpress.org/ticket/19818#comment:8 read my comment in that ticket]. Was advised to create a new ticket.
We need to run 'wp_cron' later than the default priority of 10 to allow plugins that run on this hook to properly initialize.
In the patch, I've bumped the priority to 99. Let me know what you think.",r-a-y
Future Releases,13310,Extend option_name to varchar(255),pento,Database,3.4.2,normal,normal,Future Release,defect (bug),assigned,has-patch,2010-05-09T13:34:25Z,2015-01-29T21:39:52Z,"option_name is currently set to varchar(64). This raises problems when one tries to use transients with slightly longer names and a timeout:
{{{_transient_timeout_feed_mod_23a137101df6920fbf6047...}}} has 60 chars already.",scribu
Future Releases,29306,Missing i18n in wp-db.php,,Database,3.9,normal,normal,Future Release,defect (bug),new,has-patch,2014-08-21T15:54:40Z,2014-08-25T16:01:11Z,"There's an [source:tags/3.9.2/src/wp-includes/wp-db.php#L1473 """"Error reconnecting to the database""""] string (introduced in [27075]).
Unlike the [source:tags/3.9.2/src/wp-includes/wp-db.php#L1387 """"Error establishing a database connection""""] string, it does not use the `__()` function.
This looks like an omission.",SergeyBiryukov
Future Releases,15499,Add an index for get_lastpostmodified query,,Database,3.0.1,normal,normal,Future Release,enhancement,new,dev-feedback,2010-11-19T18:20:31Z,2015-02-15T15:07:40Z,"I had a friend (Jools Wills) look over a WordPress site recently, to get a fresh view on what might be optimised, and he noticed a query which might benefit from an additional index on ```WP_Posts```. The query ```SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1``` in ```get_lastpostmodified``` is run for last modified date in GMT, and currently doesn't use an index. This SQL is run whenever certain types of feed are requested as far as I can see.
We added ```CREATE INDEX type_status_modified ON wp_posts (post_type, post_status, post_modified_gmt);``` and ```CREATE INDEX type_status_modified_no_id ON wp_posts (post_type, post_status, post_date_gmt);``` and the query runs a lot faster now. The following timings were taken running the first query (```post_modified_gmt```) on a 36,362 row posts table. Note that it doesn't use filesort after the index has been added.
mysql> EXPLAIN SELECT post_modified_gmt FROM slgr_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1;
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | SIMPLE | slgr_posts | ref | type_status_date | type_status_date | 124 | const,const | 24718 | Using where; Using filesort |
1 row in set (0.03 sec)
* 0.21290683746338ms
* 0.25690102577209ms
* 0.230553150177ms
* 0.2274341583252ms
* 0.23083996772766ms
mysql> EXPLAIN SELECT post_modified_gmt FROM slgr_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1;
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | SIMPLE | slgr_posts | ref | type_status_date,type_status_modified | type_status_modified | 124 | const,const | 24718 | Using where |
1 row in set (0.00 sec)
* 0.00082707405090332ms
* 0.00072288513183594ms
* 0.00074386596679688ms
* 0.00066494941711426ms
* 0.00066208839416504ms
In ```get_lastpostmodified``` both these queries are run, so the total savings in my case on a quiet server are nearly 0.5 seconds... worth having, I reckon.
I've not created a patch for schema changes before, but I think the only place the change would need to go would be ```scheme.php```? Suggested patch attached.",simonwheatley
Future Releases,28625,Enhancement: Add constants to support SSL connections for mysqli,,Database,4.0,normal,normal,Future Release,enhancement,new,dev-feedback,2014-06-24T22:39:12Z,2014-12-03T18:57:09Z,"In order to support SSL'ed MySQL connections with the `mysqli_*` functions introduced in WordPress 3.9 / PHP 5.5 `mysqli_ssl_set()` must be called to set the path to the SSL certs and keys to be used by the MySQL client before `mysqli_real_connect()` is called.
We should add the following optional constants to allow for users to configure secure connections to the database.
In addition this should only be set if the feature flag `MYSQLI_CLIENT_SSL` is set for the existing `MYSQL_CLIENT_FLAGS` constant.",hypertextranch
Future Releases,16478,"""Get Shortlink"" button disappears if you edit the permalink",,Editor,3.0,normal,normal,Future Release,defect (bug),new,has-patch,2011-02-07T08:44:02Z,2014-03-28T03:03:35Z,"Go to edit a post and change the permalink. The ""Get Shortlink"" button is overwritten by the AJAX response. I think it's a simple case of moving where the shortlink is added, see patch.",solarissmoke
Future Releases,13821,Changing visibility to password-protected without entering a password does not warn user,kapeels*,Editor,,normal,normal,Future Release,defect (bug),accepted,has-patch,2010-06-10T13:48:48Z,2014-03-27T20:26:56Z,"Tested on r15182.
If the status of a post is set to Password Protected, and a password is not specified before the user clicks the OK button in visibility and then either publishes, saves, or updates the post, no warning is given to the user that not setting a password forces the post or page to remain Public.
In fact, if updating a post, and this is the only change made, the success message (1) for updating the post appears instead, even though no change was made to the post.
If the post was previously published as Private, and switched to Password Protected without entering a password, then saved, the post switches to Public on save instead of remaining Private.
Either a failure message upon updating or a warning to the user before saving should be displayed to the user to remind them that they didn't properly set a password.
To reproduce the last case above:
1. Create a post. Publish it as Private.
2. Edit the post. Change the visibility to Password Protected, but do not enter a password. Click OK.
3. Update the post.
4. The post visibility will be changed to Public.",markel
Future Releases,20903,Exporter gets stuck in a loop a loop/break in the category hierarchy,westi,Export,3.1,normal,normal,Future Release,defect (bug),new,has-patch,2012-06-11T11:26:07Z,2012-06-12T08:13:02Z,"Ideally it should be impossible for a loop/incorrect parentage in a category hierarchy to exist.
But sometimes they do.
If one does exist then {{{export_wp()}}} gets stuck :(
It gets stuck in this code:
// put categories in order with no child going before its parent
while ( $cat = array_shift( $categories ) ) {
if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) )
$cats[$cat->term_id] = $cat;
$categories[] = $cat;
Similar to #20635 but different.",westi
Future Releases,19307,"Need ability to export ""All content"" but limited to date range",,Export,3.1,normal,normal,Future Release,enhancement,new,,2011-11-20T23:19:43Z,2012-07-11T07:39:18Z,"Need ability to export ""All content"" but limited to date range
WP 3.3-beta3-19254 (trunk r19367)
==== Additional Details ====
For a larger site is a common scenario to need to export all content, but because of resource limitations or time constraints it cannot be done in a single export.
Exporting individual post types is not a work around, further you lose attachments on posts when exporting just ""posts"", and that breaks features including Featured Images.
==== Also Consider ====
Another common scenario for media and enterprise customer is wanting to export a period of time to further analysis that content, or stage it in their development environment for debugging an issue, or developing new designs and features.",lloydbudd
Future Releases,14493,"do_enclose() can ping the same URL many times, can't filter URLs to ping",nacin*,Feeds,3.0.1,normal,normal,Future Release,enhancement,accepted,has-patch,2010-07-31T18:52:01Z,2013-12-12T02:59:56Z,"If the same URL is included in a post several times, do_enclose() can check that URL for inclusion as a possible enclosure several times.
Additionally, there's no way to filter what URLs do_enclose() should ping for possible inclusion as enclosures.
Attached adds an array_unique() call to do_enclose().
Attached adds a {{{do_action_ref_array( 'pre_enclose', array( &$post_links, &$pung ) )}}} hook to allow filtration of URLs to ping. (Matches the pre_ping hook.)
do_enclose() has several more problems this patch addresses.
1. Correct non-functional DELETE FROM postmeta query (bad use of wpdb::prepare()).
2. Use like_escape() in several LIKE queries.
3. Add an {{{apply_filters( 'enclosure_mime_types', array( 'video', 'audio' ) )}}} hook.
4. Currently do_enclose() doesn't allow root URLs as enclosures (e.g. http://example.com/), only URLs with a non-trivial path or query. Move that functionality to the new pre_enclose filter.
5. Efficiency improvements in conditional logic.
6. Clean up code by reducing control structure nesting depth.",mdawaffe
Future Releases,27733,wpautop(): \s in regex destroys some UTF-8 characters,,Formatting,0.71,normal,normal,Future Release,defect (bug),new,needs-unit-tests,2014-04-09T09:17:39Z,2014-09-03T11:46:12Z,"\s in preg_replace() incorrectly targets some UTF-8 characters.
'''Steps to reproduce:'''
1. Create a post with
new line
as a content.
2. It will be output as
new line
'''Quick Test:'''
$pee = ""ム\n"";
$pee = preg_replace('|(?)\s*\n|', ""
\n"", $pee);
echo $pee; // outputs
Use [\r\n\t ] rather than \s.",tenpura
Future Releases,29608,"wptexturize messes up shortcode with parameter meta_compare="">=""",,Formatting,4.0,normal,normal,Awaiting Review,defect (bug),reopened,,2014-09-09T21:15:40Z,2014-12-16T20:24:54Z,"This is a direct follow on to #28564.
I have a number of shortcodes where I pass args to get_posts() almost directly from the shortcode.
In one particular example I use meta_compare=""<"" to display posts which are earlier than a certain date.
In another I use meta_compare="">="" to show posts on or greater than the date.
In WordPress 4.0 the "">="" meta_compare has stopped working.
'''Expected result:''' WordPress 3.9.1
[shortcode meta_compare="">="" ]
will end up passing a meta_compare value of >= to get_posts(). i.e.
[meta_compare] = >=
'''Unexpected result:''' WordPress 4.0
the array field value passed to get_posts() becomes
[meta_compare] => '>='
This problem is caused by wptexturize(), which converts a double quote to " or a single quote to '
Pragmatic workaround:
remove_filter( ""the_content"", ""wptexturize"" );
Alternatively, I could introduce a specific test on the meta_compare parameter value and strip unexpected entities.
I may have to do this anyway since I've seen a situation where the visual editor has converted > to > which has caused a similar failure.",bobbingwide
Future Releases,30531,Make wptexturize the last filter before output,,Formatting,,normal,normal,Future Release,enhancement,new,,2014-11-27T20:30:22Z,2014-11-27T20:42:59Z,"This will allow it to be simplified/refactored and run faster.
- Not looking at shortcodes as it will run after do_shortcode(). That will make it less complex and faster. This also avoids all edge cases with shortcodes.
- Better detection/handling of quotes around `
` tags as it will run after wpautop(). Also, preg_split() will split the text in more chunks which will be easier to process.
Disadvantage: the `no_texturize_shortcodes` filter will stop working.
Future Releases,20771,esc_url() instead of esc_html() in wp_nonce_url(),SergeyBiryukov,Formatting,3.4,normal,normal,Future Release,enhancement,reopened,dev-feedback,2012-05-29T06:21:37Z,2013-03-18T19:44:48Z,"The `wp_nonce_url()` function currently uses `esc_html()` in its output, which doesn't really seem to be the appropriate escaping function since it's generating a URL.
Attached patch changes the output to use `esc_url()`",jkudish
Future Releases,30706,Add aria-describedby to autofocused fields,,General,,normal,normal,Future Release,defect (bug),new,,2014-12-13T22:57:57Z,2015-01-13T14:28:29Z,"There are various areas in the WordPress admin where autofocus is used to push focus to a particular location on a screen. These need to be reviewed to address whether the context is clear to screen readers, and add an appropriate aria-describedby attribute so that the context of the focused field is adequately clear.
I'll address this early in the 4.2 cycle.",joedolson
Future Releases,17923,add_query_arg() should encode values,,General,3.2,normal,normal,Future Release,defect (bug),new,has-patch,2011-06-28T22:55:50Z,2014-02-14T04:26:53Z,"One (or me at least) would expect that the result of
add_query_arg( 'foobar', 'this&that', 'index.php' )
would be
since the whole purpose of the function is to build a URL. However the actual result is
You're asking to the function to create a URL in which `foobar` is `this&that` but instead it creates a URL in which `foobar` is set to only `this`. You shouldn't have to pre-encode values -- the function should take care of it for you.
The function to ""blame"" for this is our `build_query()` which for some reason does not encode by default.
Semi-related: #16943",Viper007Bond
Future Releases,22405,Easier expression of file sizes and other data amounts,,General,3.5,normal,normal,Future Release,enhancement,new,has-patch,2012-11-10T08:42:05Z,2014-03-11T16:24:18Z,"In the spirit of #20987 writing {{{64 * 1024 * 1024 * 1024 * 1024}}} isn't very readable and cool.
Here is a patch, which adds a couple of constants like {{{KB_IN_BYTES}}}, {{{MB_IN_BYTES}}}, etc.",nbachiyski
Future Releases,23454,_deprecated_function Messages,,General,3.5,normal,normal,Future Release,enhancement,new,has-patch,2013-02-12T11:20:39Z,2013-12-11T14:31:27Z,"Unlike ''_deprecated_file'' and ''_deprecated_argument'', the ''_deprecated_function'' function has no option to append a message to the triggered notice.
I propose adding this to make it consistant with the other 2 functions. Patch to follow.",mikejolley
Future Releases,14966,QuickPress should be a function with alot of hooks,jorbin*,General,,normal,normal,Future Release,feature request,accepted,,2010-09-26T18:12:17Z,2013-07-31T16:18:19Z,"As discussed in IRC, quickpress should be a function that is usable by:
1) Custom Post Types
2) Themes for front end posting ala p2
Future Releases,13841,Some HTTP Transports do not respect transfer timeouts,,HTTP API,3.0,normal,normal,Future Release,defect (bug),new,has-patch,2010-06-11T04:48:30Z,2014-07-07T17:46:09Z,"While doing some testing I found that fopen, fsockopen and streams do not respect transfer timeouts.
Out fopen transport cannot support a transfer timeout properly because we do not pass the 3rd optional parameter to fopen for stream context. We don't do this on purpose because the 3rd parameter was not added until php 5, and that is partially what the streams transport is designed to cover. So in short, unless we want to conditionally use the streams context here for php versions > 5, we cannot reliably use transfer timeouts.
The streams timeout was missing the context for timeout, which does support ""microtime"". However, unsure at this point why, but the timeout needs to be divided by 2, so that the timeout happens requested timeout.
With fsockopen, we need to actually test for the timeout during the while loop, because the stream_set_timeout applies to each pass of fread and not the total process.",sivel
Future Releases,18738,Improving cron spawning and other non-blocking HTTP requests,dd32*,HTTP API,,high,normal,Future Release,enhancement,accepted,has-patch,2011-09-21T17:03:50Z,2013-12-15T18:07:35Z,"The order of preference for transport methods in the HTTP API is cURL, streams, fsockopen. However cURL and streams cannot perform non-blocking requests, but fsockopen can. Therefore, fsockopen should be the highest priority transport method for non-blocking HTTP requests.
Here's an example. I have a script at `http://ctftw.com/sleep.php` which sleeps for 5 seconds.
$start = microtime( true );
wp_remote_get( 'http://ctftw.com/sleep.php', array(
'blocking' => false
) );
$end = microtime( true );
var_dump( $end - $start );
When the cURL or streams transports are used, this request blocks the page for 5 seconds (the default request timeout is 5 seconds).
Let's disable the cURL and streams transports (leaving only fsockopen) and try again:
add_filter( 'use_curl_transport', '__return_false' );
add_filter( 'use_streams_transport', '__return_false' );
$start = microtime( true );
wp_remote_get( 'http://ctftw.com/sleep.php', array(
'blocking' => false
) );
$end = microtime( true );
var_dump( $end - $start );
This request does not block the page because fsockopen returns immediately after sending the request.
== Cron Spawning ==
This is a benefit to core because it improves the cron spawner (and can potentially fix #8923). The cron spawner uses a timeout of 0.01 seconds and a non-blocking request, but actually takes longer than 0.01 seconds.
$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
$start = microtime( true );
wp_remote_post( $cron_url, array(
'timeout' => 0.01,
'blocking' => false
) );
$end = microtime( true );
var_dump( $end - $start );
This request takes around 1.1 seconds on the three servers I've tested it on.
Let's disable cURL and streams again (leaving only fsockopen) and see what we get:
add_filter( 'use_curl_transport', '__return_false' );
add_filter( 'use_streams_transport', '__return_false' );
$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
$start = microtime( true );
wp_remote_post( $cron_url, array(
'timeout' => 0.01,
'blocking' => false
) );
$end = microtime( true );
var_dump( $end - $start );
On each of my three servers I see a time of around 0.001 seconds.
We can therefore improve the cron spawner by setting fsockopen as the preferred transport method for non-blocking HTTP requests.
In an attempt to address #8923, we can change the cron request timeout to 1 second. If fsockopen is used, the request is lightning fast at ~0.001 seconds. If it's not available and the HTTP API falls back to cURL or streams then it takes ~1.1 second, which is the same time it takes currently. (Hopefully that makes sense.)
Patch coming up for those who want to test it.",johnbillion
Future Releases,30434,Update the bundled Root SSL Certificate file,,HTTP API,3.7,normal,normal,Future Release,task (blessed),reopened,,2014-11-21T03:01:21Z,2014-12-17T00:58:03Z,"Previously: #27017
> In #25007 we added a static set of root certificates for usage with WP_HTTP as hosts certificates were often out of date.
> In order for us to not end up in the same boat, we need to keep our certificate file up to date.
Commands run to generate:
wget https://raw.githubusercontent.com/bagder/curl/master/lib/mk-ca-bundle.pl
chmod +x mk-ca-bundle.pl
./mk-ca-bundle.pl src/wp-includes/certificates/ca-bundle.crt
I then manually applied r25569 by moving that same certificate higher in the file.
This is using the Mozilla ""release"" set of certificates (the list included with the latest stable Mozilla release).
The NSS certificates are tracked through [https://bugzilla.mozilla.org/buglist.cgi?order=Last%20Changed&resolution=FIXED&query_format=advanced&component=CA%20Certificates&product=NSS the Mozilla BugZilla].",dd32
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,2014-05-29T01:33:51Z,"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,22172,Localized strings not applied in notification email,,I18N,3.4,normal,normal,Future Release,defect (bug),new,has-patch,2012-10-12T12:02:28Z,2014-08-21T15:58:53Z,"After user registration and activation (multisite), administrator receive email (function wpmu_signup_user_notification() in wp-includes/ms-functions.php). But content of this email is not translated even if localization file contains translated strings.
New User: %1s\n
Remote IP: %2s\n
Disable these notifications: %3s
Email subject is localized, but content not. I am not sure about the cause of this problem...",pavelevap
Future Releases,29480,Remove leading newlines from translatable strings,,I18N,3.8,normal,normal,Future Release,defect (bug),new,,2014-09-03T00:18:10Z,2014-09-03T00:18:10Z,"We have a couple of strings starting with a newline character:
* [http://translate.wordpress.org/projects/wp/dev/admin/ru/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=77939&filters%5Btranslation_id%5D=3906171 """"BETA TESTING?""""]
* [http://translate.wordpress.org/projects/wp/dev/admin/ru/default?filters%5Bstatus%5D=either&filters%5Boriginal_id%5D=142386&filters%5Btranslation_id%5D=8361014 """"UPDATE LOG""""]
They cause a warning in GlotPress:
Warning: Original and translation should both begin on newline.
Let's remove these leading newlines for clarity.",SergeyBiryukov
Future Releases,20974,Remove obsolete locale-specific files on upgrade,dd32,I18N,3.4,low,normal,Future Release,defect (bug),assigned,has-patch,2012-06-15T14:06:43Z,2014-05-21T21:29:59Z,"We used to have `wp-content/languages/ru_RU.css` file in ru_RU package.
Since #19603, it's no longer needed, but is still left over on upgrade. We should probably include it in `$_old_files`.
I suppose the same applies to zh_CN and he_IL packages ([19825]).",SergeyBiryukov
Future Releases,27919,Similar strings for media modal,,I18N,3.9,normal,normal,Future Release,defect (bug),new,,2014-04-19T18:10:24Z,2014-04-20T13:05:02Z,"There are some strings which we use for the same action from different modal windows:
- ""Attachment Display Settings"" x ""Display Settings"" - same settings from different windows
- ""Edit Image"" x ""Edit Original"" - same link from different windows
- ""There are no associated subtitles."" - should be ""items"", I guess (can be inserted also other things then subtitles).",pavelevap
Future Releases,26638,Performance Increase in l10n (9-12%),,I18N,2.9,normal,normal,Future Release,enhancement,new,has-patch,2013-12-16T09:41:22Z,2014-08-17T00:30:04Z,"While doing some writing on profiling I choose Wordpress as my example application and wrote a small patch that in my testing boosts performance of index.php by 9-12% (with the dataset from my 6 year old blog, ~250 posts, lots of plugins and extra stuff).
This performance increase is found by making a small change to the way `translate()` works, effectively cutting out the use of the `NOOP_Translates` class.
Patch is attached.",dshafik
Future Releases,17268,Use native gettext library when available,,I18N,,normal,normal,Future Release,enhancement,new,has-patch,2011-04-28T11:32:30Z,2014-09-29T12:27:33Z,"[http://codex.wordpress.org/Translating_WordPress Here] you say that the GNU gettext-Framework is used. Exactly, ""pomo"" (file: wp-includes/l10n.php) is a complete own php-implementation of the gettext-program.
I've added a patch to solve this problem. Maybe it is not very good, but it works. On my wordpress-sites, the used php-memory returns from about 65% to about 12% and the site is running much faster when patching wp-includes/l10n.php.
I know that gettext is not available on every wordpress-installation, but when it's available, it should be used.
Sorry for my bad english, I'm german.",linushoppe
Future Releases,25280,wp_localize_script unexpectedly converts numbers to strings,,I18N,3.2,normal,normal,Future Release,enhancement,new,dev-feedback,2013-09-11T16:15:53Z,2014-10-26T16:32:36Z,"Running wp_localize_script on an an array has the unexpected result of converting numbers into strings. Core WordPress files work around this issue by explicitly casting variables to int, for example in [http://core.trac.wordpress.org/browser/trunk/src/wp-admin/js/revisions.js#L36 revisions.js].
Although it is easy to work around the issue (if you are expecting it), JavaScript is loosely typed and will merrily add numbers as strings without any warning - introducing potential [http://core.trac.wordpress.org/changeset/23247 bugs] when code that expects a number is instead passed a string. Properly passing numbers as numbers would resolve this issue.
The root of the problem is that in PHP versions before 5.3.3, json_encode encoded numbers as strings. PHP 5.3.3 includes an option [http://php.net/manual/en/function.json-encode.php#refsect1-function.json-encode-changelog JSON_NUMERIC_CHECK] that eliminates this issue.
For example & testing this bug, add the following code to your template's setup function:
wp_enqueue_script( 'localize_test', get_template_directory_uri() . '/localize_script.js', array(), '1.0.0', true );
$array_to_localize = array(
'a_string' => __( 'Some String' ),
'a_number' => 10,
wp_localize_script( 'localize_test', 'localized_variable', $array_to_localize );
Then add a file named localize_script.js in your theme folder containing the following code:
Reloading shows that the number has been converted into a String ([http://cl.ly/image/243R3C3X0H2S console screenshot]).
The attached patch corrects the issue by checking for the presence of the JSON_NUMERIC_CHECK constant and if present, passes it to json_encode - telling it to encode numbers as numbers and resulting in the expected behavior ([http://cl.ly/image/1V3O0v1T0R0D console screenshot]). I checked this under PHP 5.2.17 verifying that no errors are created (although the old behavior of converting numbers still occurs). Under PHP 5.3.3 the variable is now properly passed as a number. The [http://codex.wordpress.org/Function_Reference/wp_localize_script Codex documentation] needs to be updated if this patch is accepted.
Future Releases,14949,Login gives false assurance of having logged out,filosofo,Login and Registration,3.1,normal,normal,Future Release,defect (bug),new,has-patch,2010-09-23T10:39:34Z,2014-03-09T10:09:52Z,"If you visit `wp-login.php?loggedout=true` while logged in, WordPress falsely tells you that ""You are now logged out.""
This is a problem because it could lead you to think, e.g., that a public computer is no longer authenticated with access to your WP admin.
Patch redirects a still-authenticated user back to the admin from the login page if she requests the above page without actually having logged out.",filosofo
Future Releases,13655,Login/Install/User Edit should stripslashes() $_POST data,,Login and Registration,3.0,normal,normal,Future Release,defect (bug),new,has-patch,2010-05-31T11:33:17Z,2014-03-05T23:44:43Z,"Following on from #13654 All Login/Registration/Install/User Edit functionality should stripslash $_POST data.
At present, it seems that we do not stripslash at all.
For existing user passwords, we should migrate passwords to their non-stripslashed versions:
[5/31/10 6:34:11 AM] Mark Jaquith: We could migrate people.[[BR]]
[5/31/10 6:34:13 AM] Dion (dd32): Perhaps oughta just add proper stripslashing in 3.1, and add back-compat to change password from non-stripslashed to stripslashed.. similar to the md5->phpass implementation..[[BR]]
[5/31/10 6:35:13 AM] Mark Jaquith: Yep. If the PW doesn't match, addslashes() and compare again. If that matches, set the new PW hash. Right?[[BR]]
[5/31/10 6:35:19 AM] Dion (dd32): yep
Future Releases,15384,wp-login.php refactor,,Login and Registration,,normal,normal,Future Release,enhancement,new,,2010-11-11T12:40:35Z,2014-03-05T21:33:01Z,"wp-login.php needs some serious work. When looking to do some improvements in #5919, I realized I literally needed a goto in order to achieve the goals outlined in this comment:
I am thinking a WP_Login class with some methods that can handle various different forms, POST handling, and rerouting.",nacin
Future Releases,22942,Deprecate Post by Email,,Mail,3.5,normal,normal,Future Release,enhancement,new,dev-feedback,2012-12-14T16:48:46Z,2014-02-02T06:10:04Z,"We said last year that we'd remove the post by email functionality from core as it was better suited for plugins. The Jetpack plugin has already added this functionality and, honestly, includes better functionality than the core version.
We should move forward with our plans to remove this feature.
I recommend ''deprecating'' it similar to the way the link manager was removed in 3.5. Essentially:
* New WordPress installations will never see the core feature
* Existing installations that aren't using it won't see it any more
* Existing installations that ''are'' using it will see a notice explaining they should switch to a plugin instead as the feature will be completely removed in the future
Basically, I want the option to go away, but I don't want anyone to start a riot if we remove a tool they're actively using.",ericmann
Future Releases,18493,HTML E-Mails,westi,Mail,3.2,normal,normal,Future Release,enhancement,reviewing,,2011-08-22T00:29:44Z,2013-04-13T16:33:09Z,"Wojtek worked on the Enhanced E-Mails project for GSoC this summer. It's definitely something that would be nice to have in core. The plugin already exists in the repository - [http://wordpress.org/extend/plugins/enhanced-emails/ Enhanced Emails]. There are still some things that need to be cleaned up in the code, but it works pretty well.
I'm hoping we can clean it up, test it, and get it in core. ",aaroncampbell
Future Releases,23291,wp_mail should handle phpmailer exceptions instead of ignoring them,,Mail,3.5,normal,normal,Future Release,enhancement,new,has-patch,2013-01-25T07:04:37Z,2013-09-25T15:46:07Z,"Right now code in wp_mail that call phpmailer looks like
try {
} catch ( phpmailerException $e ) {
return false;
or worse (not failing at all).
Yesterday had to hack core files to find out that an email address did not have a valid email format. Exceptions should either propagate in some way, or be reported to an error log.
Future Releases,24688,Memory exhaustion caused by very many unattached media,,Media,2.5,normal,normal,Future Release,defect (bug),new,has-patch,2013-07-04T18:20:09Z,2014-05-27T07:53:17Z,"A blog with over 30,000 unattached images was exhausting available memory on unattached attachment pages. The exhaustion occurred in `previous_image_link() -> adjacent_image_link() -> get_children()` due to the large number of rows selected with `post_parent=0`.
This is not the only place where `get_posts()` might be called with `post_parent=0`. A similar query appears in `twentythirteen_the_attached_image()` but the effect is wisely mitigated by `fields=ids`. Earlier, `twentyten/loop-attachment.php` called `get_children()` with `post_parent=0` on unattached image pages which is horribly inefficient when there are many unattached images.
Attached patch depends on #24687. The change to `adjacent_image_link()` creates a MySQL query which selects only the desired row. This fixes the memory exhaustion error on the blog with 30,000 unattached images. The once-only filters would be unnecessary if WP_Query accepted arbitrary extra WHERE strings.",andy
Future Releases,13822,Menu items that get unpublished still appear,nacin,Menus,3.0,normal,normal,Future Release,defect (bug),reopened,has-patch,2010-06-10T16:30:12Z,2013-10-07T18:54:55Z,"We need to properly account for menu items linked to unpublished/pending post type objects.
My thought is they should probably be hidden from the frontend with an indication on the backend (like ""(Pending)"") that they are are unpublished/pending.
We need to properly handle private posts too.",nacin
Future Releases,21534,Walker: has_children is only set if $args[0] is an array,betzster,Menus,3.0,normal,normal,Future Release,defect (bug),new,commit,2012-08-10T02:12:33Z,2013-10-09T19:50:50Z,"You can't depend on `has_children` because it doesn't get set if `$args[0]` is an object. This is obviously an easy fix, just check if it's an object and set it in that case.
Related: #15214",betzster
Future Releases,15335,register_setting() filter for sanitization callback needs to indicate 2 arguments accepted,markjaquith,"Options, Meta APIs",3.1,normal,normal,Future Release,defect (bug),reopened,has-patch,2010-11-08T01:10:46Z,2014-08-12T14:17:07Z,"'''register_setting()''' adds the function for sanitization of the option with the following line (wp-admin/includes/plugin.php):
add_filter( ""sanitize_option_{$option_name}"", $sanitize_callback );
For users wanting to declare a function for option sanitization, use of the option name within the function is sometimes desired, and is provided for in the filter application inside the '''sanitize_option()''' declaration as such (wp-includes/formatting.php):
$value = apply_filters(""sanitize_option_{$option}"", $value, $option);
With the filter always being applied with the option name as the second argument, I see no reason not to propose that the '''add_filter()''' call in register_setting() include ""2"" as the number of accepted arguments, allowing the option name to be passed.",lumination
Future Releases,22781,setUserSetting cannot handle hyphens,,"Options, Meta APIs",2.7,normal,normal,Future Release,defect (bug),new,,2012-12-06T06:18:39Z,2014-01-19T17:37:36Z,"sanitize_key() can, setUserSetting should be able to as well. It's not that sanitize_key() plays a role, but it sets expectations for what is allowed in keys across core. Both keys and values should be able to accept a hyphen.
The post-thumbnail image size cannot be remembered, for example, if it is added to image_size_names_choose.",nacin
Future Releases,21989,update_option() calls sanitize_option() twice when option does not exist,,"Options, Meta APIs",,normal,normal,Future Release,defect (bug),new,dev-feedback,2012-09-25T05:04:34Z,2014-07-28T15:21:02Z,"
I just spent several hours tracking down an issue when using the Settings API where `sanitize_option()` is called twice which is unnecessary execution especially if sanitization includes calling an external API for username/password authorization ''(this was how another developer set it up for a plugin I was debugging.)''
What happens is that a call to `update_option()` will call `sanitize_option()` and then if the option wasn't previously in the options table `update_option()` will delegate to `add_option()` which calls `santize_option()` a second time. This would normally be easy to workaround by first calling `get_option()` and testing for `false` and calling `add_option()` instead of `update_option()` if `false`, but not when the Settings API chooses how to call it.
I've looked at the problem and can envision several different ways to solve it such but don't know which the core developers would choose ''(or if they'd choose yet another option I haven't envisioned)'' so I didn't submit a patch:
- Adding a 3rd parameter `$mode` to `sanitize_option()` that identifies the mode ''('add', 'edit', default = 'unknown')'' and thus allow the hook to ignore one of the options ''(this would be more backward compatible but would put the onus on the developer to know to do this)'',
- Adding a 5th parameter `$bypass_sanitize` to `add_option()` defaulted to `false` that is only passed as `true` in `update_option()` allowing `update_option()` to disable the call to `sanitize_option()` found in `add_option()` ''(this would be less backward compatible and hacky, but seemless to the developer)''
- Adding a 3rd parameter `$bypass_sanitize` to `update_option()` defaulted to `false` that is only passed as `true` from `/wp-admin/options.php` allowing `update_option()` to bypass the call to `sanitize_option()` if an `add_option()` will happen ''(this would be less backward compatible and hacky, but seemless to the developer)''
- Have `/wp-admin/options.php` test for no pre-existing option and then call `add_option()` or `update_option()`, respectively ''(this would be seemless to the developer but less backward compatible and not hacky, and it wouldn't handle the general case.)''
So is this worth fixing to save other users and developers debugging time, and to reduce the chance of subtle errors in new code? If yes, how best to approach?",MikeSchinkel
Future Releases,21970,404 error when a post has the same slug as with a deleted (trash) page.,,Permalinks,3.4.2,normal,normal,Future Release,defect (bug),new,needs-unit-tests,2012-09-22T20:25:04Z,2014-12-05T18:29:21Z,"I don't know if this is a bug/issue but I'll share this anyway.
A user creates a new '''Page''', for example, with a title ""New Garden"". But decides to delete it/""Move to Trash"" without deleting it permanently. Then creates a new '''Post''' with the same title ""New Garden"". Viewing that post will result to a ""404"" page not found.",janintia
Future Releases,14867,HTTPS related issues in ms-blogs.php (with fix),johnbillion*,Permalinks,,normal,normal,Future Release,defect (bug),accepted,,2010-09-14T15:09:14Z,2014-08-07T16:05:10Z,"Two functions in ms-blogs.php have issues due to hard-coding ""http://"" versus using the is_ssl() check. I have corrected them below. Just copy and paste these over the ones in your ms-blogs.php.
function get_blogaddress_by_id( $blog_id ) {
$protocol = is_ssl() ? 'https://' : 'http://';
$bloginfo = get_blog_details( (int) $blog_id, false ); // only get bare details!
return esc_url( $protocol . $bloginfo->domain . $bloginfo->path );
function get_blogaddress_by_domain( $domain, $path ){
$protocol = is_ssl() ? 'https://' : 'http://';
if ( is_subdomain_install() ) {
$url = $protocol.$domain.$path;
} else {
if ( $domain != $_SERVER['HTTP_HOST'] ) {
$blogname = substr( $domain, 0, strpos( $domain, '.' ) );
$url = $protocol . substr( $domain, strpos( $domain, '.' ) + 1 ) . $path;
// we're not installing the main blog
if ( $blogname != 'www.' )
$url .= $blogname . '/';
} else { // main blog
$url = $protocol . $domain . $path;
return esc_url( $url );
Future Releases,9102,Inverse proxy breaks permalinks,,Permalinks,2.7,normal,normal,Future Release,defect (bug),assigned,has-patch,2009-02-12T01:58:37Z,2014-07-11T13:22:14Z,"I have a WP installation at my university's webspace (on an apache server), say http://myuni.ac.at/mydir/wordpress/ , and an inverse proxy domain http://mydomain.at/ for it.
This means that any request to the latter, eg for http://mydomain.at/2009/02/12/inverse-proxy-trouble/ , is forwarded to http://myuni.ac.at/mydir/wordpress/ , which in turn means that the REQUEST_URI there becomes /mydir/wordpress/2009/02/inverse-proxy-trouble/ . My ''home'' variable is of course set to http://mydomain.at/ (''siteurl'' is set to http://myuni.ac.at/mydir/wordpress/ -- otherwise I wouldn't be able to login to WP).
Unfortunately, when analyzing REQUEST_URI, wordpress chops off the ''home'' path, not the ''siteurl'' one. This may be okay for some purposes, but in the inverse proxy case, permalinks break. For a fix, I had to hack two wordpress core files, namely
in function parse_request: change line 162 from
$home_path = parse_url(get_option('home'));
$home_path = parse_url(get_option('siteurl'));
and wp-includes/rewrite.php, in function get_pagenum_link, line 987, same modification.
This is a dirty hack, of course; so I wonder if in general, using the ''siteurl'' path is valid in any case where the ''home'' host differs from the ''siteurl'' host. If so, I suggest changing the affected files in such a manner.",Bernhard Reiter
Future Releases,4463,Strange paging links,,Permalinks,2.3,normal,normal,Future Release,defect (bug),assigned,needs-unit-tests,2007-06-14T03:00:49Z,2014-07-11T13:22:14Z,"Ryan:
In trunk, with cruft free links, I get stuff like this:
That's not right. Maybe we should revert back to pre [5454] to fix the trunk problems.
[5454] was the commit for #3930
If at all possible, I'd like to work with the new code.",markjaquith
Future Releases,23915,discover_pingback_server_uri cases an error when discovery URI sets multiple Content-type headers,dd32,Pings/Trackbacks,2.7,low,normal,Future Release,defect (bug),assigned,,2013-04-01T14:25:25Z,2013-12-05T02:17:00Z,"Line 1673 in wp-includes/comment.php uses preg_match() on the output of wp_remote_retrieve_header(). When multiple headers are set of the same name, wp_remote_retrieve_header() returns an array.
Thus occasionally the following error occurs:
PHP Warning: preg_match() expects parameter 2 to be string, array given in xxxxxxx/wp-includes/comment.php on line 1673
I have no idea how to make pingbacks happen so to reproduce, add this line to functions.php: discover_pingback_server_uri('http://localhost:8080/');
And in a terminal window run this (you may need to install the netcat-openbsd package in Debuntu):
`while true; do echo -en 'HTTP/1.1 200 OK\r\nContent-type: text/html\r\nContent-type: text/plain\r\n\r\n' | nc -lp 8080; done`
Then visit your WP installation and you shall get the aforementioned error message.",tomdxw
Future Releases,10535,_wp_filter_build_unique_id issues with the first time a filter is hooked by a class,,Plugins,2.9,normal,normal,Future Release,defect (bug),reopened,has-patch,2009-08-02T12:22:18Z,2013-01-10T20:02:38Z,"Ref #8723
The first time _wp_filter_build_unique_id is used to generate an ID the ID returned is different to the second time it is called. This presents a problem if the first ID is used when adding a filter which then needs to be removed later in the app flow... as the IDs don't match the filter is unremovable.
One workaround proposed is to set a wp_filter_id property before add the filter, and this will cause _wp_filter_build_unique_id to bypass the problem code and effectively forces the ""unique"" ID which is generated... this workaround feels unpoetic. ;)",simonwheatley
Future Releases,14881,do_action should not pass empty string by default,,Plugins,,normal,normal,Future Release,defect (bug),new,has-patch,2010-09-15T20:44:56Z,2012-05-17T21:09:41Z,"{{{
function test( $a = true ) {
var_dump( $a );
add_action( 'test', 'test' );
add_action( 'test', 'test', 10, 0 );
do_action( 'test' );
Second example is bool(true) as expected, but the first is a zero-length string.
In this case, since do_action() is not passing any arguments, then no arguments should be passed to test() -- even if by default, one argument gets passed.
The issue here is how do_action() is defined: `function do_action( $tag, $arg = '' );`. There's our zero-length string. Of note, apply_filters() does not have this same issue.
The solution looks something like what I have attached. Has yet to be benchmarked.
Of note, this does not appear to have any direct implications for passing all args by default, as proposed in #14671, but I wanted to reference it anyway.",nacin
Future Releases,26479,unregister_setting not working,,Plugins,2.6,normal,normal,Future Release,defect (bug),new,commit,2013-12-08T10:43:12Z,2014-02-02T07:53:24Z,"The unregister_setting function is not working, there's a bug at line 1743 of the plugin.php file:
$pos = array_search( $option_name, (array) $new_whitelist_options );
should be
$pos = array_search( $option_name, (array) $new_whitelist_options[$option_group] );
Future Releases,22487,Adding priority to settings sections.,,Plugins,,normal,normal,Awaiting Review,enhancement,new,has-patch,2012-11-17T09:08:34Z,2014-02-02T07:53:24Z,"Currently there is no way (at least that I could find) to specify the order of settings sections on a settings page (for example, a theme options page). Use case: a child theme adding a settings section to the parent theme's ""Theme Options"" page has no way of specifying where on the page the new section should be placed.
I've modified the add_settings_section() function to allow for a priority to be set (much like when adding sections to the theme customizer). I also added `uasort($wp_settings_sections[$page], 'compare_priority');` to the do_settings_section() function, where 'compare_priority' is a slightly modified version of the compare function used to set the priority of the theme customizer sections. The patch is based on version 3.4.2, but I'd be happy to make another for the development version if that would help.
This is my first patch submitted, so please let me know if I need to do anything differently. Thanks!",alexmansfield
Future Releases,10441,Show warning when deprecated hook is registered,nacin*,Plugins,,normal,normal,Future Release,feature request,accepted,dev-feedback,2009-07-18T14:48:47Z,2013-05-27T08:48:58Z,At this moment WP shows warning when someone tries to use deprecated function or file. It will be good to do the same for deprecated hooks. My suggestion is to do this check in add_action()/add_filter() functions. They should compare hook name against list of deprecated ones and show warning if necessary.,sirzooro
Future Releases,23257,Add plural versions of Post Format strings,,Post Formats,3.5,normal,normal,Future Release,enhancement,new,has-patch,2013-01-22T00:59:30Z,2013-12-05T17:57:42Z,"To make it easier for theme authors to create meaningful titles for post format archive pages, we could extend `get_post_format_strings()` to also provide a standardized set of plurals.
I'm not entirely sure whether the plurals I used in the diff are the ones we actually want to go with (apparently there is no plural of 'Audio'?), but the change is fairly simple and is backwards compatible.
See [https://github.com/Automattic/_s/pull/137 this discussion] for additional context.",obenland
Future Releases,19949,Make update_post_thumbnail_cache() work for any instance,,Post Thumbnails,,normal,normal,Future Release,enhancement,new,has-patch,2012-02-02T22:40:03Z,2014-01-24T05:40:18Z,"It would be useful if update_post_thumbnail_cache() [17883] would accept an optional $wp_query parameter, so that users aren't forced to use query_posts() in order to benefit from it.",scribu
Future Releases,22080,add_theme_support should merge post-thumbnail post types by default (currently stomps),,Post Thumbnails,2.9,normal,normal,Future Release,enhancement,new,has-patch,2012-10-02T19:44:59Z,2014-03-02T10:10:58Z,"As documented in the Codex:
you can pass a second param to `add_theme_support( 'post-thumbnails' )` to specify the post types you want support enabled for. I expected any post types I passed in to be added to the currently specified post types, instead the passed value stomps the existing value. This means that if you create plugin that registers a post type and enables post-thumbnails for it, you need to write code like this:
instead of a simple:
`add_theme_support( 'post-thumbnails', array( 'my-new-post-type' ) );`
The latter makes more sense to me, and I think it's likely other devs might make the same mistake and accidentally stomp on the previous value for post-thumbnails.
The attached patch enables a merge or stomp behavior for post-thumbnails. It defaults to ""merge"". Passing a `bool true` as a 3rd param will cause the second param to replace the existing value (current behavior).",alexkingorg
Future Releases,24248,'guid' not properly escaped,,"Posts, Post Types",2.5,normal,normal,Future Release,defect (bug),new,needs-unit-tests,2013-05-02T14:03:35Z,2014-11-14T14:36:17Z,"Probably related issues: #18274 #19248
'guid' being saved in database not properly escaped, example:
{{{http://www.wordpress.dev/?post_type=changeset&p=57}}} , see the ampersand encode {{{&}}}
It supposed to be {{{&}}} or at least {{{&}}}
Once 'auto-draft' saved, 'guid' is correct: {{{http://www.wordpress.dev/?post_type=changeset&p=57}}}
Once post is saved as 'draft' or published (triggered 'update post' on auto-draft), 'guid' gets malformed.
Source of issue: inappropriate usage of {{{get_post_field()}}} function in the {{{wp_insert_post()}}}
{{{get_post_field()}}} defaults to 'display' context, we not specify context while obtaining field, and in the {{{wp_insert_post()}}} we are not going to display it anywhere, just get, check, and save again, correct?
Attached patch adds the 'raw' context to usage of {{{get_post_field()}}} with 'guid'
Future Releases,16567,Can't create categories with different names but similar slugs on Edit Post screen,,"Posts, Post Types",3.0.5,normal,normal,Future Release,defect (bug),new,needs-unit-tests,2011-02-15T18:29:10Z,2014-02-02T09:38:11Z,"We run a blog that deals with programming languages. Today we were creating a post concerning the C programming language and attempted to create a new category for it, called ""C"" (just one character). This angered WordPress; it appeared to create a superfluous ""Uncategorized"" category, but it wound up not actually creating any categories for the post.
I've attached a screenie so you can see what this looks like after I attempt to create the category.
If it's for some reason forbidden to create categories comprised of a single character, maybe a validation error message of some kind would be in order?",jeffreymcmanus
Future Releases,16956,Comments Being Pulled from Non-Existent Post Types,,"Posts, Post Types",3.1,normal,normal,Future Release,defect (bug),new,commit,2011-03-24T01:30:32Z,2014-11-17T22:11:42Z,"Originally on: #10461
I'm running standard LAMP on the latest trunk.
Just viewing the dashboard with no plugins activated:
Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 918 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 918 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 918 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 918 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 918 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 918 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 919 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922 Notice: Trying to get property of non-object in /Users/grok/Projects/Local Development/wordpress/trunk/wp-includes/capabilities.php on line 922
It's not recognizing ""$post_type->cap"" as valid.
And...here's why - I added this (/wp-includes/capabilities.php):
918 echo ""POST TYPE: Y U NO OBJECT?\n"";
919 var_dump($post_type);
And got:
So in this context...the post type is null and the code was not expecting that.
Opening the actual $post object:
stdClass Object
[post_author] => 1
[post_date] => 2011-01-28 19:46:23
[post_date_gmt] => 2011-01-28 19:46:23
[post_content] => CONTENT!
[post_title] => I have it all!
[post_excerpt] =>
[post_status] => publish
[comment_status] => open
[ping_status] => open
[post_password] =>
[post_name] => i-have-it-all
[to_ping] =>
[pinged] =>
[post_modified] => 2011-01-28 19:46:28
[post_modified_gmt] => 2011-01-28 19:46:28
[post_content_filtered] =>
[post_parent] => 0
[guid] => http://dev.wordpress.local/?post_type=staff_listing&p=60
[menu_order] => 0
[post_type] => staff_listing
[post_mime_type] =>
[comment_count] => 6
[ancestors] => Array
[filter] => raw
I think the problem might be custom post types or custom taxonomies...
So my custom post type in another plugin is creating: ""?post_type=staff_listing"".
And this post does show ""[post_type] => staff_listing"". BUT the plugin that had created these comments...is de-activated.
Activating the plugin resolves this issue.
So, whats a viable solution? Telling a developer to clean up after the plugin (removing content just because of deactivation), OR having WordPress not pull data (e.g. comments) that are assigned to other data (e.g. post types) that don't exist?
Old Code: Give me all comments.
New Code: Give me all comments that are tied to existing objects.",sterlo
Future Releases,18402,Confused page ordering if filter drops parent pages,nacin,"Posts, Post Types",3.2.1,normal,normal,Future Release,defect (bug),reviewing,dev-feedback,2011-08-14T15:34:07Z,2014-02-02T09:48:12Z,"= Problem =
In Wordpress's page management section, the page ordering is confused if a page filter drops a page parent.
Originally, I experienced this with the User Access Manager Plugin:
This plugin only shows allowed pages to the user.
= Example =
Page A
- Page A1
-- Page A1.1
-- Page A1.2
By dropping page A, the ordering becomes for example:
-- Page A1.1: Parent Page is Page A1
-- Page A1.2: Parent Page is Page A1
- Page A1: Parent Page is A
But should become:
Page A1: Parent Page is A
-- Page A1.1
-- Page A1.2
= Solution =
The confusion results from the function `_display_rows_hierarchical`
in `wp-admin/includes/class-wp-posts-list-table.php` which only adds pages to $top_level_pages whose parent is 0 – the wrong assumption here.
By adding pages to $top_level_pages whose parent is either 0 or doesn't exist in $pages we get a usable order:
So I added to the above-mentioned file:
function is_parent_in_pages( $parent, $pages ) {
foreach ( $pages as $page ) {
if ( $page->ID == $parent ) return true;
return false;
and changed `_display_rows_hierarchical`
if ( 0 == $page->post_parent )
$top_level_pages[] = $page;
$children_pages[ $page->post_parent ][] = $page;
if ( 0 == $page->post_parent || !$this->is_parent_in_pages( $page->post_parent, $pages ))
$top_level_pages[] = $page;
$children_pages[ $page->post_parent ][] = $page;
And finally - in order to remove the leading dash of $top_level_pages - I removed
the $level++ in function `single_row` (same file) below ""`case 'title':`""
Small change, better user experience :)
Future Releases,15963,Don't try to add orphaned pages' parents' slugs to the page URL,,"Posts, Post Types",3.1,normal,normal,Future Release,defect (bug),new,dev-feedback,2010-12-23T11:08:55Z,2014-01-19T07:54:35Z,"If a page becomes orphaned---in other words, if a page points to a parent object that doesn't exist any more---`get_page_uri()` doesn't sanity check that the parent object actually exists.
Patch does the check without any extra work, by moving stuff around.",filosofo
Future Releases,25879,Add filter to page_template_dropdown(),,"Posts, Post Types",3.8,normal,normal,Future Release,enhancement,new,has-patch,2013-11-08T11:40:57Z,2014-02-01T07:37:37Z,"{{{page_template_dropdown()}}} is used in 'Page Attributes' metabox to list available page templates. The filter hook will give ability to adjust what's displayed in this box.
Our issue:
We use many custom templates to perform some specific tasks like building frontend dashboards, submit/edit forms, login pages, etc.
As far it works well, but the 'Page Attributes' metabox fulfill with page templates that in most of cases are not intended for any other use, and some administrators get confused seeing full list of available templates while creating a new page.
Future Releases,26605,Appearance of recent/future posts in dashboard looks off on mobile.,,"Posts, Post Types",3.8,normal,normal,Future Release,enhancement,new,has-patch,2013-12-13T13:24:18Z,2014-02-02T08:12:34Z,"When viewing the dashboard on a small screen device, the layout of the date and post title in the recent/future post section of the layout of the site activity widget looks funny when the title is fairly long.
I think it might be better to have the date on a separate line.
Future Releases,12821,Merge get_posts() and get_pages(),garyc40,"Posts, Post Types",3.0,normal,normal,Future Release,enhancement,assigned,needs-unit-tests,2010-04-02T21:10:54Z,2014-07-01T20:05:55Z,"get_pages() should wrap get_posts() the same way get_page() wraps get_post(). Arguments of different names need to be retained for back compat.
Reasoning for this includes #14823. Querying a nonhierarchical post type should still be allowed with child_of for example, to allow for cross-type relationships.",mikeschinkel
Future Releases,17737,Be better at forcing data types for query vars,,Query,3.0,normal,normal,Future Release,defect (bug),new,has-patch,2011-06-09T21:59:41Z,2014-10-16T07:47:27Z,"I already email this flaw to firstname.lastname@example.com but Andrew Nacin told me that this is not a WordPress flaw, but php server config flaw. So i post this here now.[[BR]]
''Exploit'' : http://WEBSITE.COM/?author[]=1 [[BR]]
''Problem'' : FPD (https://www.owasp.org/index.php/Full_Path_Disclosure) [[BR]]
''Solution'' : Add this ""@ini_set('display_errors', 0);"" or this ""error_reporting(0);"" in the end of wp-config.php file. [[BR]]
''Patch'' : [[BR]]
1) wp-includes/query.php line 2239 [[BR]]
$q['author'] = (string)urldecode($q['author']);
if ( is_array( $q['author'] ) ) {
$q['author'] = $q['author'][0];
$q['author'] = (string)urldecode($q['author']);
2) wp-includes/canonical.php line 142 [[BR]]
} elseif ( is_author() && !empty($_GET['author']) && preg_match( '|^[0-9]+$|', $_GET['author'] ) ) {
} elseif ( is_author() && !empty($_GET['author']) && preg_match( '|^[0-9]+$|', !is_array($_GET['author']) ? $_GET['author'] : $_GET['author'][0] ) ) {
'''Julio''' - [http://www.boiteaweb.fr]",juliobox
Future Releases,15949,WP 3.0.x comments popup on pages returning 404 [including posible solution],,Query,3.0,normal,normal,Future Release,defect (bug),new,close,2010-12-22T17:04:42Z,2013-08-10T20:24:18Z,"comments-popup does not work on pages (but still working on blog entries) since the 3.0.x upgrade.
i confirm bug and sollution on both: my own theme and on default them after adding comments_popup_link and comments_popup_script functions.
after a long time looking for a solution i found that the new ""handle_404"" method in class WP (wp-includes/classes.php line 475) is the responsable, substituing this method with an older one from wp 2.x brunch solves the problem.
looks like the new method ""think"" that there is no content when the index file is called with comments_popup parameter on a page id, so it returns a 404 status, as said the old one solves the problem.
Future Releases,21790,When set a static front page WP main query isn't set correctly,,Query,3.4.1,normal,normal,Future Release,defect (bug),reopened,needs-unit-tests,2012-09-04T13:50:26Z,2014-12-04T06:38:13Z,"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,17025,wp_list_authors() is not filterable,,Query,,normal,normal,Future Release,enhancement,new,has-patch,2011-04-02T17:30:10Z,2014-07-07T17:39:10Z,"The template function wp_list_authors() is not filterable. Plugins may use existing WP_Query hooks to filter some authors' posts out of the result set, making the unfiltered authors list invalid.
The corresponding patch adds query filter 'list_authors_query'",kevinB
Future Releases,23016,Allow plugins to manipulate WP_Roles ($wp_roles global) on construct,,Role/Capability,3.5,normal,normal,Future Release,defect (bug),new,,2012-12-20T08:38:46Z,2014-03-11T17:39:08Z,"The WP_Roles class is difficult to extend. There are no actions, filters, or intercept points to allow plugins to target it. Because the $wp_roles global can be created anytime (even doing_it_wrong on plugins_loaded) there's no reliable way to modify any part of $wp_roles.
(The only place WP_Roles actually has any action at all is in the set_role() method, which is the least useful function in the class since it noops all user roles if a user has more than one.)
The specific use case I have is bbPress's dynamic roles.
bbPress is unable to add its dynamic roles to the $wp_roles global on switch_to_blog(). Neither of WP_Roles's initialization methods have actions to allow bbPress to add its roles on.
* switch_to_blog() calls $wp_roles->reinit()
* then wp_get_current_user()
* finally $current_user->for_blog()
At no point can bbPress reliably append its roles to $wp_roles->roles, causing the current user to incorrectly be missing their bbPress role for that site.
More over, the WP_Roles::reinit() method seems like a one-use stop-gap to fix a specific problem, that ends up introducing other issues with trying to extend it. If the use_db flag is set to false, it bails early, and there's no way for plugins that don't use database roles to reinitialize their roles correctly again.
The attached patch does two things:
* Removes the reinit() method completely, and instead re-instantiates the $wp_roles global inside switch_to_blog(). WP_Roles::_init() is not a heavy function, and the guts are basically identical between the two methods.
* Adds a byref action to WP_Roles::init() that allow plugins like bbPress to add their dynamic roles anytime $wp_roles is created.",johnjamesjacoby
Future Releases,16719,Remove vestige add_users capability,,Role/Capability,,normal,normal,Future Release,defect (bug),new,has-patch,2011-03-01T20:17:38Z,2012-10-25T20:18:37Z,"Listed in populate_roles_300() and added in [14174], it was never used. The situation it was presumably introduced for now falls on promote_users.",nacin
Future Releases,16118,Support for wp_enqueue_style with negative conditional comments,,Script Loader,3.0.4,normal,normal,Future Release,enhancement,new,dev-feedback,2011-01-06T06:18:40Z,2015-02-24T17:45:12Z,"Please refer to #10891. It refers to the support for conditional comments using the global variable, wp_styles.
I have noticed that if you pass a negative conditional comment, however, this breaks. E.g. Let's say you have a lot of CSS3 rules, which don't apply to IE. You would not include that CSS:
I know that IE9 supports CSS3, but I am using the above for illustrative purposes. One would expect that to include the conditional comment above you would do this between the register and the enqueue commands:
$GLOBALS['wp_styles']->add_data('my-handle', 'conditional', '!IE');
If you add a conditional tag to wp_styles, however, the generated markup is incorrect:
Note the missing --> after [if !IE]>, and tag. Publish, and browse the post's *third* page.
WP should return a 404 here, rather than the last page of the post.
Along the same lines, it should return the correct canonical urls for paginated posts. Currently, rel=canonical will only ever return the post's first page.",Denis-de-Bernardy
Future Releases,16001,Invited but not activated users can get lost,,Users,3.0,normal,major,Future Release,defect (bug),new,has-patch,2010-12-27T22:37:15Z,2015-01-27T21:09:08Z,"Steps to reproduce:
* In ''Site Admin'', go to Users > Add New
* Add a new user
* You get a message to the effect of, said user needs to respond to an invitation.
Now the user has disappeared. There's no way for a super admin or anybody to search for that user and add her directly, or delete her, or anything like that. If the user doesn't get the email, she's out of luck: that username and email are now reserved for ""a couple of days.""",filosofo
Future Releases,17541,Blogger-XMLPRC API does not work with Multisite/SSL/DMZ combination,westi*,XML-RPC,3.2,normal,major,Future Release,defect (bug),accepted,has-patch,2011-05-23T07:26:29Z,2012-12-14T23:12:02Z,"I have the following setup:
My WordPress Blogs (multisite) are set up behind a firewall that exposes the public address via SSL. Inside my DMZ I'm only using HTTP, so that's what WordPress sees. When I now try to access the blogger.getUsersBlogs XMLPRC-API, I get an empty result back.
I analyzed the WordPress source code and found out that the blogger.getUsersBlogs method in the file wp-includes\class-wp-xmlrpc-server.php uses another XMLRPC call to the wp.getUsersBlogs method in case of the multisite. I further checked and found out that this appears to be the only case in which WordPress executes a remote call itself to sevice the request. I then replaced the logic in _multisite_getUsersBlogs with the multisite part from wp_getUsersBlogs and it worked.
I aso found an issue that might be related: http://core.trac.wordpress.org/ticket/16402
But since the source code in the trunk still uses the regular IXR_Client, I'm not sure if this would fix the issue.
I attached my fix as a patch, but it's not refactored to remove code duplication since I don't have a dev-environment set up for WordPress.