Opened 6 years ago
Last modified 12 months ago
#46418 reviewing enhancement
Use wp_die() instead of die() function in wordpress
Reported by: | immeet94 | Owned by: | |
---|---|---|---|
Milestone: | Future Release | Priority: | normal |
Severity: | normal | Version: | |
Component: | Administration | Keywords: | has-patch close |
Focuses: | Cc: |
Description
When use the wp_json_encode() function that time you should use wp_die function instead of die() function.
Because wp_die() function do Kill WordPress execution and display HTML message with error message.
Attachments (7)
Change History (28)
#3
@
5 years ago
- Component changed from General to Administration
- Keywords needs-refresh added
- Milestone changed from Awaiting Review to Future Release
Hi @immeet94,
Welcome to Trac!
Thanks for this ticket. It seems that there are several more occurrences of die()
in WP_List_Table
. Are you able to look into fixing those as well?
#4
@
5 years ago
- Keywords needs-testing added; needs-refresh removed
In 46418.2.diff I've replaced all instances of die
with wp_die
in class-wp-list-table.php
#6
@
5 years ago
- Milestone changed from Future Release to 5.4
- Owner set to SergeyBiryukov
- Status changed from new to reviewing
#7
@
5 years ago
- Keywords commit added; needs-testing removed
Thanks for testing @sncoker I uploaded 46418.3.diff just because the offset was starting to get larger.
Marking for committer review, @SergeyBiryukov I see you were just looking at this as well, will leave in your hands.
Sidenote - In the affected lines I noticed the use of sub-class and over-ridden which are incorrect and should be subclass and overridden. To address this I've setup #48676 as those strings are seen in several other files as well so best to address seperately.
#8
@
5 years ago
With r46739 updating the version being committed (thanks @SergeyBiryukov) I've updated the patch in 48676.4.diff.
While looking at this I wonder what other instances of die in core should become wp_die;
wp-activate.php line#18
wp-admin/admin-footer.php line#11
wp-admin/async-upload.php line#34
wp-admin/comment.php lines#95,100,106
wp-admin/edit-form-advanced.php line#11
wp-admin/edit-form-blocks.php line#13
wp-admin/edit-form-comment.php line#11
wp-admin/edit-link-form.php line#11
wp-admin/edit-tag-form.php line#11
wp-admin/export.php line#122
wp-admin/includes/class-pclzip.php line#221
wp-admin/includes/class-wp-site-health.php line#196
wp-admin/includes/image-edit.php line#28
wp-admin/includes/network.php lines#120,133,148
wp-admin/install.php lines#217,264,269,282
wp-admin/link-parse-opml.php line#10
wp-admin/upgrade.php line#35
wp-admin/user-edit.php lines#109,117
wp-admin/user-new.php lines#44,50,150,174,217
wp-cron.php lines#32,81,152
wp-includes/canonical.php lines#349,394,611
wp-includes/class-simplepie.php line#665
wp-includes/class-wp-ajax-response.php line#160
wp-includes/class-wp-widget.php line#113
wp-includes/comment.php line#716,930
wp-includes/embed.php line#728
wp-includes/functions.php lines#3419,3459,3499,3541,3573,3617,3639,3641,4513
wp-includes/IXR/class-IXR-server.php line#47
wp-includes/load.php lines#35,219,614,1449
wp-includes/ms-deprecated.php lines#116,615
wp-includes/ms-files.php lines#15,24,30
wp-includes/pluggable.php lines#1130,1184
wp-includes/rest-api.php line#308
wp-includes/theme-compat/comments.php line#20
wp-includes/wp-db.php line#1678
wp-settings.php line#530
wp-signup.php lines#14,34,39,412
wp-trackback.php line#35
#9
@
5 years ago
@SergeyBiryukov The latest patch still good. Is this still a commit
candidate for 5.4 with Beta 1 in a few days?
#11
@
4 years ago
Hello
as per the @garrett-eclipse suggestion try to replace the wp_die() in all files so please review the patch @SergeyBiryukov and @davidbaumwald
Thanks.
#12
@
4 years ago
Thanks @immeet94 taking a look one thing to be cautious about is when wp_die the function becomes available which is in wp-includes/functions.php. In index.php the wp-includes/load.php is required before the functions one so the changes there may fail so I would ensure especially the changes in wp-includes/load.php are tested thoroughly.
#13
@
4 years ago
Hello @garrett-eclipse
i miss the file wp-includes/functions.php for the wp_die so updated with wp_die
please check the patch
thanks
This ticket was mentioned in Slack in #core by immeet94. View the logs.
4 years ago
#16
@
4 years ago
- Keywords needs-refresh added; commit removed
Taking a look my main hesitation is load order and when wp_die becomes available. It seems to be loaded here;
https://github.com/WordPress/wordpress-develop/blob/master/src/index.php#L25
So to my understanding anything loaded before this such as the WPINC/load.php will give an error and shouldn’t use wp_die.
This ticket was mentioned in Slack in #core by david.baumwald. View the logs.
4 years ago
#18
@
4 years ago
The comment above is right, we need to consider from which point on the wp_die function is available.
There are instances of wp_die being used in load.php already, but the functions.php file is loaded in just in that spot each time.
The index.php file in trunk is actually only used in development, so in production where _index.php is used, it actually seems to be loaded from https://core.trac.wordpress.org/browser/trunk/src/wp-load.php#L54 if wp-config.php doesn't exist, and from https://core.trac.wordpress.org/browser/trunk/src/wp-settings.php#L111 if wp-config.php exists. And there are quite a bit of files that are loaded in before wp_die is available, especially in the case where wp-config.php is available.
So if we're going to start using wp_die in all or most instances, my suggestion is to move the function to the load.php file. There already seems to be other functions in load.php that were moved in from other files including functions.php.
#21
@
12 months ago
- Keywords close added; needs-refresh removed
- Owner SergeyBiryukov deleted
As previously noted in comment:5:ticket:58420, replacing die()
with wp_die()
everywhere does not seem to work as expected in my testing, as the $message
parameter in wp_die()
is an empty string by default, so it just displays an empty page without any message.
Looking at 46418.diff, unless I'm missing something, the usage of die()
is intentional in pretty much all of these instances, as the output is already handled in a different way and we only need to terminate the script.
Using wp_die()
there would cause unexpected output, additional overhead, or lead to "headers already sent" warnings when called after wp_redirect()
. It also does not display any helpful error messages by itself, as the message is empty by default.
I believe there are no plans for replacing all the instances of die()
at this time. If there are instances where wp_die()
would be particularly helpful, those may be better addressed on a case-by-case basis.
Please see this file for patch