Opened 9 years ago
Closed 9 years ago
#34661 closed enhancement (invalid)
add filter to WP_Upgrader::install_package() to filter $this->result
Reported by: |
|
Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 4.4 |
Component: | Upgrade/Install | Keywords: | has-patch |
Focuses: | Cc: |
Description
If a plugin or theme updates from a source outside of the .org repo the downloaded plugin/theme is often in a format that requires renaming so that it can be correctly moved to a corrected directory structure. As an example, GitHub downloads are in the format of user-my-plugin-name-hash.zip
and when expanded have the format user-my-plugin-name-hash/my-plugin-name.php
From here the outside updater code must rename the directory and move the files or plugin or theme deactivation will be an issue. Currently there are 2 filters within the WP_Upgrader::install_package()
that can be used to assist upgrader_source_selection
and upgrader_post_install
. Both of these have drawbacks.
upgrader_source_selection
only allows to change the $source
and while this is helpful, it does not allow for changing of any of the other destination parameters. upgrader_post_intall
has a more convenient parameter in $hook_extra
to aid in renaming of the directory structure but it's return value is either an error or an array and nothing happens with a non-error return value.
Manipulating these many of the destination parameters of $this->result
is needed to allow for seamless renaming of these directories and to allow for these renamed values to be saved. It is the ability to save these values for use elsewhere that is the principal benefit of this proposed filter.
As an example, in order to update, move, and keep active the current theme the $source
needs to be updated and saved. Though this can be currently achieved using upgrader_source_selection
no other parameters can be saved. As #34617 explains, the version information for plugin updated via shiny updates returns an empty string if the destination_name
of $this->result
is not the updated destination name. Currently, there is no method of changing the destination name in the following line from wp_ajax_update_plugin()
$plugin_data = get_plugins( '/' . $result[ $plugin ]['destination_name'] );
This results in a cosmetic bug when updating via shiny updates, missing version information.
Adding this filter would allow for a simple consistent ability to manipulate any of the values of the destination in $this->result
and have them saved for when they may be referenced elsewhere in code.
I'm not certain how this would effect #27365. This would supersede #34617.
Attachments (1)
Change History (8)
This ticket was mentioned in Slack in #core by afragen. View the logs.
9 years ago
#4
follow-up:
↓ 5
@
9 years ago
- Milestone Awaiting Review deleted
- Resolution set to duplicate
- Status changed from new to closed
Duplicate of #34617.
This is the wrong way to go about fixing this. See comment:25:ticket:34617
#5
in reply to:
↑ 4
@
9 years ago
- Resolution duplicate deleted
- Status changed from closed to reopened
Replying to dd32:
Duplicate of #34617.
This is the wrong way to go about fixing this. See comment:25:ticket:34617
This way really does provide for a solution to all circumstances.
- Ability to move files to correct location.
- Ability to discover destination_name for shiny updates.
- Ability to have better parameters for parsing download package name to the correct name.
Please reconsider. This is a more versatile solution to all of these issues.
#34617 was marked as a duplicate.