Automattic / Automattic/VIP-Coding-Standards

Add check for register_uninstall_hook

未关闭
#716 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Standard: VIP-Go Type: Enhancement
主要语言
PHP
星标
261
派生
44
平均合并
19 分钟
30 天内合并 PR
1

描述

## 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_

贡献指南

打开贡献指南

调研方向

首先找到现有的 PHP_CodeSniffer sniff 和用于检测函数调用的测试,然后以该 issue 中的 register_uninstall_hook 示例作为切入点。当 register_uninstall_hook 调用被报告为错误,且 issue 中未发现误报案例时,即视为完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
php
领域
tooling
Issue 类型
功能
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
42/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。