Automattic / Automattic/VIP-Coding-Standards

Add check for register_uninstall_hook

Offen
#716 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Standard: VIP-Go Type: Enhancement
Vorherrschende Sprache
PHP
Sterne
261
Forks
44
Ø Merge
19 Min.
Gemergte PRs (30 T.)
1

Beschreibung

## What problem would the enhancement address for VIP?

Because the contents of `/wp-content/plugins` and `/wp-content/themes` are setup as `read-only` directories on the VIP Go platform, admin users cannot uninstall plugins from within the `wp-admin`. This results in the [function `register_uninstall_hook `](https://developer.wordpress.org/reference/functions/register_uninstall_hook/) never being able to run.

A VIP customer can deactivate a plugin through the admin, but uninstallation can only be done by removing the plugin from the [GitHub repo](https://docs.wpvip.com/technical-references/vip-codebase/) and deploying the changes. If a customer needs to run any clean-up steps associated with a plugin or theme's use of `register_uninstall_hook`, their development team has to reverse engineer the code to execute any functionality that needs to run.

This is not entirely unique to VIP, but only impacts WordPress environments where the `/wp-content/plugins` and `/wp-content/themes` are `read-only`, so it may not be a good fit for the [WordPress Coding Standards](https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/).

## Describe the solution you'd like

A sniff that will flag places where the [`register_uninstall_hook` function](https://developer.wordpress.org/reference/functions/register_uninstall_hook/) is used. Preferably as an error because it is functionality that will not work.

## What code should be reported as a violation?

```
register_uninstall_hook( __FILE__, 'your_prefix_uninstall' );
```

## What code should *not* be reported as a violation?

I'm unaware of cases where this might be detected as a false positive.

## Additional context

_None applicable_

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die vorhandenen PHP_CodeSniffer-Sniffs und -Tests zum Erkennen von Funktionsaufrufen zu finden, und verwende dann das Beispiel register_uninstall_hook in diesem Issue als Einstiegspunkt. Als erledigt gilt die Aufgabe, wenn Aufrufe von register_uninstall_hook als Fehler gemeldet werden und im Issue keine Fälle mit False Positives identifiziert wurden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.