Make WordPress Core

Opened 4 years ago

Last modified 3 months ago

#14955 new enhancement

Themes should support uninstall.php or uninstall hook

Reported by: WraithKenny Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: Themes Keywords: has-patch
Focuses: Cc:

Description (last modified by scribu)

Related tickets on extending Themes to have Plugin features: #7795 and #14849 but those deal primarily with activation and deactivation centering around 'switch_themes' action.

From looking at /wp-admin/includes/plugin.php, adding support for uninstall is a separate concern (and it doesn't have the issue blocking activation/deactivation).

Should is_uninstallable_plugin, register_uninstall_hook and uninstall_plugin be extended to check theme directory or should versions (is_uninstallable_theme, register_uninstall_theme_hook and uninstall_theme) be added to theme.php?

Advantage of the first method is that the register_uninstall_hook could be reused for Themes where in the second, a new, less attractive name would be needed (register_uninstall_theme_hook?) Also, there's no theme_basename as it was reverted/removed.

Attachments (2)

14955.diff (1013 bytes) - added by greuben 3 years ago.
14955.1.diff (1.2 KB) - added by obenland 8 months ago.
Refreshed patch

Download all attachments as: .zip

Change History (21)

comment:1 scribu4 years ago

We shouldn't attempt to reuse register_*_hook() functions because there's only one theme running at a time, so the underlying logic would be very different.

That's why there's no theme_basename() and why the $file parameter wouldn't be needed.

comment:2 scribu4 years ago

  • Description modified (diff)

comment:3 scribu4 years ago

Forget what I said, as it doesn't apply to the uninstall process.

comment:4 scribu3 years ago

  • Keywords needs-patch 3.2-early added
  • Milestone changed from Awaiting Review to Future Release

comment:5 WraithKenny3 years ago

  • Cc Ken@… added

comment:6 scribu3 years ago

Related: #7795

(duh, it's in the ticket description)

Last edited 3 years ago by scribu (previous) (diff)

comment:7 chipbennett3 years ago

  • Cc chip@… added

So, at Scribu's prompting, I'm going to attempt to create a patch for this. I'm thinking of creating analogous functions in themes.php, unless either of you think I should go the route of extending the existing Plugin hooks?

(Should I assign this to myself? I am still mostly unfamiliar with Trac workflow.)

comment:8 scribu3 years ago

You can assign it to yourself, if you want, but it's not mandatory.

Extending register_uninstall_hook() is not an option.

The available options are:

  • uninstall.php file
  • register_theme_uninstall_hook()

greuben3 years ago

comment:9 greuben3 years ago

  • Keywords 3.3-early has-patch added; needs-patch 3.2-early removed

Instead of register_theme_uninstall_hook() we can use 'uninstall_theme' hook.

14955.diff makes use of uninstall.php and introduces 'uninstall_theme' hook.

comment:10 scribu2 years ago

  • Keywords early added; 3.3-early removed

comment:11 DrewAPicture2 years ago

  • Cc xoodrew@… added

#19505 closed as duplicate.

comment:12 oncletom19 months ago

  • Cc thomas@… added

Any progress on this topic?

comment:13 DeanMarkTaylor10 months ago

  • Cc DeanMarkTaylor added

obenland8 months ago

Refreshed patch

comment:14 obenland8 months ago

  • Keywords early removed
  • Milestone changed from Future Release to 3.7

comment:16 follow-up: nacin8 months ago

This doesn't seem like functionality I'd want themes to have.

comment:17 WraithKenny8 months ago

@nacin Theme's can add options, create tables, and do all sorts of things that plugins can do, but has little opportunity to clean up after themselves. Shouldn't themes clean up like plugins are expected to?

comment:18 in reply to: ↑ 16 helen7 months ago

  • Milestone changed from 3.7 to Awaiting Review

Replying to nacin:

This doesn't seem like functionality I'd want themes to have.

comment:19 Apiweb3 months ago

  • Version 3.0.1 deleted

As the WraithKenny said, has many themes that add tables, alter the structure of WordPress, and with all the powerful API of WordPress they can do a lot more, I believe this would be an interesting option to be implemented.

Note: See TracTickets for help on using tickets.