Plugin Check (PCP)

Descripción

Plugin Check es una herramienta para comprobar si tu plugin cumple las normas requeridas para el directorio de plugins de WordPress.org. Con este plugin podrás ejecutar la mayoría de las comprobaciones utilizadas para nuevos envíos, y comprobar si tu plugin cumple los requisitos.

Además, la herramienta señala infracciones o problemas relacionados con las mejores prácticas de desarrollo de plugins, desde requisitos básicos como el uso correcto de las funciones de internacionalización hasta las mejores prácticas de accesibilidad, rendimiento y seguridad.

Las comprobaciones pueden ejecutarse desde el escritorio de WordPress o mediante WP-CLI:

  • Para comprobar un plugin utilizando WP Admin, navega hasta el menú Herramientas > Comprobación de plugins. Necesitas poder gestionar plugins en tu sitio para acceder a esa pantalla.
  • To check a plugin using WP-CLI, please use the wp plugin check command. For example, to check the «Hello Dolly» plugin: wp plugin check hello.php
    • Ten en cuenta que, por defecto, al utilizar WP-CLI sólo se pueden ejecutar comprobaciones estáticas. Para incluir también comprobaciones en tiempo de ejecución, actualmente es necesaria una solución mediante el argumento --require de WP-CLI, para cargar manualmente el archivo cli.php dentro del directorio del comprobador de plugins antes de que se cargue WordPress. Por ejemplo wp plugin check hello.php --require=./wp-content/plugins/plugin-check/cli.php
    • Puedes utilizar una ruta o URL arbitraria para comprobar un plugin. Por ejemplo, para comprobar un plugin desde una URL: wp plugin check https://example.com/plugin.zip o para comprobar un plugin desde una ruta: comprobar plugin php /ruta/a/plugin

Las comprobaciones se agrupan en varias categorías, para que puedas personalizar qué tipos de comprobaciones quieres ejecutar en un plugin.

Ten en cuenta que este plugin aún no sustituye al proceso de revisión manual, pero te ayudará a acelerar el proceso de aprobación de tu plugin en el repositorio de plugins de WordPress.org, y también te ayudará a evitar algunos errores comunes.

Aunque no tengas intención de alojar tu plugin en el directorio de WordPress.org, te animamos a que utilices Plugin Check para que tu plugin cumpla los requisitos básicos y las mejores prácticas para los plugins de WordPress.

Instalación

Instalación desde WordPress

  1. Visita Plugins > Añadir nuevo.
  2. Busca Plugin Check.
  3. Instala y activa el plugin Plugin Check.

Instalación manual

  1. Sube toda la carpeta plugin-check al directorio /wp-content/plugins/.
  2. Visita Plugins.
  3. Activa el plugin Plugin Check.

FAQ

¿Dónde puedo contribuir al plugin?

Todo el desarrollo de este plugin se lleva a cabo a través de GitHub. Cualquier problema o pull request debe publicarse allí.

¿Y si el plugin informa de algo que es correcto como «error» o «advertencia»?

Nos esforzamos por escribir un plugin de forma que minimice los falsos positivos, pero si encuentras alguno, por favor, notifícalo en el repositorio de GitHub. Para ciertos falsos positivos, como los detectados por PHPCodeSniffer, es posible que puedas anotar el código para ignorar el problema específico para una línea concreta.

¿Por qué marca algo como malo?

No marca cosas «malas» como tales. Plugin Check está diseñado para ser una forma no perfecta de comprobar el cumplimiento de las directrices de revisión de plugins. No todos los plugins deben cumplir estas directrices. El propósito de la herramienta de comprobación es garantizar que los plugins subidos al repositorio central de plugins de WordPress.org cumplen los últimos estándares de plugins de WordPress y funcionarán en una amplia variedad de sitios.

Muchos sitios utilizan plugins personalizados, y eso está perfectamente bien. Pero los plugins que están destinados a ser utilizados en muchos tipos diferentes de sitios por el público deben tener un cierto nivel mínimo de capacidades, para asegurar un funcionamiento adecuado en diferentes entornos. Las directrices de revisión de plugins se crean con ese objetivo en mente.

Este comprobador de plugins no es perfecto y nunca lo será. Es solo una herramienta para ayudar a los autores de plugins, o a cualquier otra persona que quiera hacer que su plugin sea más capaz. Todos los plugins enviados a WordPress.org son revisados manualmente por un equipo de expertos. El comprobador de plugins automatizado está destinado a ser solo una herramienta útil, no un sistema absoluto de medición.

¿Es necesario que un plugin pase todas las comprobaciones para ser aprobado en el directorio de plugins de WordPress.org?

Para ser aprobado en el directorio de plugins de WordPress.org, un plugin debe pasar normalmente todas las comprobaciones de la categoría «Plugin repo». Otras comprobaciones son adicionales y puede que no sea necesario aprobarlas.

En cualquier caso, pasar las comprobaciones de esta herramienta probablemente ayude a conseguir un proceso de revisión de plugins sin problemas, pero no es garantía de que un plugin sea aprobado en el directorio de plugins de WordPress.org.

Reseñas

19 de enero de 2025
I’m working on a Block plugin, for the first time in my life, with the intention to share it in the repo. As I’m walking uncharted territory, The PCP is a real blessing! Thank you, dear Review Team, for creating this.
4 de enero de 2025
This plugin is excellent for catching common mistakes before submission. It significantly saves time by reducing the back-and-forth process. I used it for the first time, and I really liked how efficiently it worked.
7 de diciembre de 2024 1 respuesta
This tool is a must for every WordPress plugin developer. You can use phpcs with WordPress standards and other useful tools, but this is an essential step to check your plugin, not only if your intention is to publish to WordPress public repo. Accomplish these standards is a must for everyone who works as plugin developer. Thanks, plugin team, for this powerful tool. Now our developer lives are easier.
15 de noviembre de 2024
Run it on any plugin, including popular ones like Woo and you’ll see tons of nonsense «Error» messages about inescaped output. This doesn’t help anyone. These so-called error messages appear even for static text or well trusted data. Just a random example from Woo:The plugin reports «WordPress.Security.EscapeOutput.ExceptionNotEscaped» for this:throw new \Exception( sprintf( __( ‘Could not find classname for order ID %d’, ‘woocommerce’ ), $order_id ) );$order_id is already int, ensured by the function, and additionally %d ensures it cannot output anything dangerous. You have to either make this smart enough to find real issues or remove these nonsense messages entirely.How is this helping anyone?
Leer todas las 24 reseñas

Colaboradores y desarrolladores

«Plugin Check (PCP)» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«Plugin Check (PCP)» está traducido en 13 idiomas. Gracias a los traductores por sus contribuciones.

Traduce «Plugin Check (PCP)» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

1.3.1

  • Enhancement – Add version utilities.
  • Fix – Escape error messages.
  • Fix – Renamed error type to ERROR_LOW_SEVERITY and WARNING_LOW_SEVERITY.
  • Fix – Fix PHPCS checks on unwritable filesystems.

1.3.0

  • Enhancement – Update disallowed domains for Plugin URI check.
  • Enhancement – Added new checks for Plugin Header fields: missing plugin description, missing plugin version and invalid plugin version.
  • Enhancement – New check for validation of donate link in the readme file.
  • Enhancement – Increased severity for wrong Plugin Requires.
  • Enhancement – Added check Restrict parse_str() without second argument.
  • Enhancement – New check for Disallow usage of HEREDOC and NOWDOC.
  • Enhancement – Added acronyms allowed in Trademark checks.
  • Enhancement – Added option in CLI to add low severity errors and warnings.
  • Enhancement – Change error type for License check error codes.
  • Enhancement – Always use prefixed tables during runtime check requests.
  • Enhancement – Created a new class for checking licenses.
  • Enhancement – Added support for MPL-2.0 license.
  • Enhancement – Implement gherkin linter in GH action.
  • Enhancement – Update check for Contributors in markdown readme files.
  • Enhancement – CLI: Fix confusing runtime environment setup order.
  • Enhancement – Allow custom checks to provide installed_paths.
  • Enhancement – Improved the use of localhost URLs in the Plugin.
  • Enhancement – Documented checks in the plugin.
  • Enhancement – Increased severity for Code obfuscation checks.
  • Enhancement – Diffentiate between no existent readme and default readme file.
  • Enhancement – Encourage developers to use native functions for loading images in templates.
  • Enhancement – Added a check for not allowing include libraries already in WordPress core.
  • Enhancement – Warning for usage of query_posts() in favor of WP_Query.
  • Fix – Fix for the local environment is set up before testing.
  • Fix – Fix addon checks not being executed when running runtime checks.
  • Fix – Allow default as a text domain in the text domain check.
  • Fix – Allow GitHub URLs in the Plugin URI field.
  • Fix – Don’t flag Apache license. It’s allowed in the WordPress.org plugin repository.
  • Fix – Removes the path before the plugin, so it won’t affect to badly named files.

1.2.0

  • Enhancement – Added a check for badly used names in files.
  • Enhancement – Increased severity for BacktickOperator, DisallowShortOpenTag, DisallowAlternativePHPTags, RestrictedClasses, and RestrictedFunctions.
  • Enhancement – Added security checks to the Plugin repository category.
  • Enhancement – Allowed runtime-set in code sniffer checks.
  • Enhancement – Changed warnings to errors in plugin header checks.
  • Enhancement – Detect forbidden plugin headers such as repository URIs in the Directory.
  • Enhancement – Added a new check for development functions that are not allowed in final plugins.
  • Enhancement – Created new images and icons for the plugin.
  • Enhancement – Introduced a slug argument in the CLI.
  • Enhancement – Added a check for discouraged PHP functions.
  • Enhancement – Added validation for Contributors in the readme file.
  • Enhancement – Added a warning for mismatched plugin names in the plugin header and readme file.
  • Enhancement – Checked for validation of Plugin Header fields: Name, Plugin URI, Description, Author URI, Requires at least, Requires PHP, and Requires Plugins.
  • Enhancement – Added a warning if the «Tested up to» value in the readme file exceeds the released version of WordPress.
  • Fix – Display a success message if no errors or warnings are found.
  • Fix – Made table results responsive.
  • Fix – Prevent proceeding to the next check if the Stable Tag value is set to trunk.
  • Fix – Allow runtime initialization even when only add-on checks are requested.
  • Fix – Fixed an SPDX warning for the GPL version 3 license.
  • Fix – Prevent runtime checks in the CLI context when they cannot be used.

1.1.0

  • Feature – New Non_Blocking_Scripts_Check (non_blocking_scripts) runtime check to warn about enqueued scripts that use neither defer nor async.
  • Enhancement – Changed the namespace of included checks.
  • Enhancement – Introduced severity levels for all errors and warnings.
  • Enhancement – CLI: Support checking a plugin from a path or URL.
  • Enhancement – Added short descriptions and URLs for each check.
  • Enhancement – Improved messaging in check results.
  • Enhancement – Updated code obfuscation check with more accurate results.
  • Enhancement – Updated plugin review check to flag missing input sanitization (WordPress.Security.ValidatedSanitizedInput).
  • Fix – Improve readme checks to exclude invalid files.
  • Fix – Only show edit link if files are actually editable.

1.0.2

  • Feature – New Enqueued_Scripts_Scope_Check (enqueued_scripts_scope), Enqueued_Styles_Size_Check (enqueued_styles_size) and Enqueued_Resources_Check (enqueued_resources) performance checks.
  • Enhancement – Improved readme check and added a new wp_plugin_check_ignored_readme_warnings filter.
  • Enhancement – New wp_plugin_check_default_categories filter to change the categories which are selected by default.
  • Enhancement – New wp_plugin_check_ignore_files filter to allow ignoring specific files.
  • Fix – Correct detection of readme files in Windows by normalizing file paths.

1.0.1

  • Fix – Add missing test-content folder needed for runtime checks.
  • Fix – Do not send emails when setting up test environment.
  • Fix – Prevent PHP warning when the argv variable isn’t set.

1.0.0

  • Feature – Complete overhaul of the plugin, its architecture, and all checks.
  • Feature – Added new WP-CLI commands for running checks and listing available options.
  • Enhancement – Added option to only run checks for a specific category.

0.2.3

  • Tweak – Use version 3.8.0 of the PHP_CodeSniffer library, moving away from squizlabs/PHP_CodeSniffer to use PHPCSStandards/PHP_CodeSniffer.
  • Fix – Ensure the plugin works as expected on the WP playground environment to enable reviewers to use PCP. Props @tellyworth.
  • Fix – Undefined array key «argv» when running the plugin check in certain environments. Props @afragen. #340

0.2.2

  • Enhancement – Include support for Windows Servers.
  • Enhancement – Avoid using PHP CLI directly, which enables plugin developers to use PCP in a variety of new environments.
  • Fix – Remove dependency on shell_exec and exec functions, which enables plugin developers to use PCP in a variety of new environments.
  • Fix – Prevent problems with Readme parser warning related to contributor_ignored for when running the check outside WP.org. Props @dev4press. #276
  • Fix – Remove extra period on the end of the sentence for Phar warning. Props @pixolin. #275

0.2.1

  • Añadido: enlace «Ver en editor de código» debajo de cada error o advertencia de PHPCS. Agradecimientos a @EvanHerman, @westonruter, @felixarntz, @mukeshpanchal27 #262
  • Corrección – Asegúrese de que readme.txt tenga prioridad sobre readme.md cuando ambos estén presentes. Agradecimientos a @bordoni, @afragen #258
  • Corrección – Asegurarse de que la comprobación de PHPCS se ejecute incluso cuando el binario de PHPCS no sea ejecutable. Agradecimientos a @bordoni, @shawn-digitalpoint, @mrfoxtalbot #254
  • Corrección – Cambios en el archivo Readme y corrección de errores tipográficos. Agradecimientos a @aaronjorbin. #261
  • Corrección: Las líneas largas de código con la comprobación PHPCS ya no se expanden más allá del tamaño del aviso. Agradecimientos a @bordoni, @felixarntz. #263
  • Corrección – Asegurarse de que tengamos compatibilidad con PHP 7.2 y eliminar la coma final. Agradecimientos a @bordoni, @leoloso. #265
  • Corrección – Incluir todas las cadenas que se omitieron en la versión anterior. Agradecimientos a @bordoni, @pixolin. #270

0.2.0

  • Característica – Habilitada la modificación de la ruta del binario de PHP utilizada por el plugin con la constante PLUGIN_CHECK_PHP_BIN.
  • Característica – Incluída una comprobación del uso de ALLOW_UNFILTERED_UPLOADS en cualquier archivo PHP – Gracias a EvanHerman en #45
  • Característica – Incluida una comprobación de la presencia de los archivos de aplicación (.a, .bin, .bpk, .deploy, .dist, .distz, .dmg, .dms, .DS_Store, .dump, .elc, .exe, .iso, .lha, .lrf, .lzh, .o, .obj, .phar, .pkg, .sh, ‘.so`) – Gracias a EvanHerman en #43
  • Característica: Incluir una comprobación de la presencia del archivo readme.txt o readme.md – Agradecimientos a EvanHerman en #42
  • Corrección – Asegurarse de que el análisis de Readme se incluya correctamente cuando hay un archivo readme.md o readme.txt presente. Agradecimientos a Bordoni #52
  • Retoque – Deshabilitar las funciones move_uploaded_file, passthru, proc_open – Atributos alexsanford en #50
  • Retoque – Cambia el tipo de mensaje para utilizar las funciones que WordPress ya incluye de Advertencia a Error. Agradecimientos a davidperezgar en #18
  • Retoque – Cambiar el tipo de mensaje para el uso incorrecto de la etiqueta Stable de Aviso/Advertencia a Error. Agradecimientos a davidperezgar en #3

[0.1] 2011-09-04

Versión original de la herramienta de comprobación de plugins, no es una versión lanzada del plugin, este registro de cambios está aquí solo con fines históricos.