Plugin Check (PCP)

Descrizione

Plugin Check è uno strumento per verificare se il tuo plugin soddisfa gli standard necessari per la directory dei plugin di WordPress.org. Con questo plugin sarai in grado di eseguire la maggior parte dei controlli utilizzati per i nuovi invii e verificare se il tuo plugin soddisfa i requisiti.

Inoltre, lo strumento segnala violazioni o preoccupazioni relative alle migliori pratiche di sviluppo dei plugin, dai requisiti di base come il corretto utilizzo delle funzioni di internazionalizzazione alle migliori pratiche di accessibilità, prestazioni e sicurezza.

I controlli possono essere eseguiti utilizzando l’interfaccia utente WP Admin o WP-CLI:

  • Per controllare un plugin usando WP Admin, vai al menu Strumenti > Plugin Check. Devi essere in grado di gestire i plugin sul tuo sito per poter accedere a quella schermata.
  • 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
    • Nota che per impostazione predefinita, quando si usa WP-CLI, possono essere eseguiti solo i controlli statici. Per includere anche i controlli di runtime, è attualmente necessario un workaround utilizzando l’argomento --require di WP-CLI, per caricare manualmente il file cli.php all’interno della directory del controllo dei plugin prima che WordPress venga caricato. Per esempio: wp plugin check hello.php --require=./wp-content/plugins/plugin-check/cli.php
    • È possibile utilizzare un percorso o un URL arbitrario per controllare un plugin. Ad esempio, per controllare un plugin da un URL: wp plugin check https://example.com/plugin.zip o per verificare un plugin da un percorso: wp plugin check /path/to/plugin

I controlli sono raggruppati in diverse categorie, in modo che tu possa personalizzare il tipo di controlli che desideri eseguire su un plugin.

Tieni presente che questo plugin non sostituisce ancora il processo di revisione manuale, ma ti aiuterà ad accelerare il processo di approvazione del tuo plugin per il repository dei plugin di WordPress.org e ti aiuterà anche a evitare alcuni errori comuni.

Anche se non intendi ospitare il tuo plugin nella directory WordPress.org, ti invitiamo a utilizzare Plugin Check in modo che il tuo plugin segua i requisiti di base e le migliori pratiche per i plugin WordPress.

Installazione

Installazione da WordPress

  1. Visita Plugin > Aggiungi nuovo.
  2. Cerca Plugin Check.
  3. Installa e attiva il plugin Plugin Check.

Installazione manuale

  1. Carica l’intera cartella plugin-check nella directory /wp-content/plugins/.
  2. Visita Plugin.
  3. Attiva Plugin Check.

FAQ

Dove posso contribuire al progetto del plugin?

Tutto lo sviluppo di questo plugin viene gestito tramite GitHub, eventuali problemi o richieste pull devono essere pubblicati lì.

Cosa succede se il plugin segnala qualcosa di corretto come “errore” o “avviso”?

Ci sforziamo di scrivere un plugin in modo da ridurre al minimo i falsi positivi, ma se ne trovi uno, segnalalo nel repository GitHub. Per alcuni falsi positivi, come quelli rilevati da PHPCodeSniffer, potresti essere in grado di annotare il codice per ignorare il problema specifico per una riga specifica.

Perché lo segnala come errato?

Non segnala necessariamente cose “negative”. Il controllo del plugin è progettato per essere un modo non perfetto per verificare la conformità alle linee guida per la revisione dei plugin. Non tutti i plugin devono attenersi a queste linee guida. Lo scopo dello strumento di controllo è garantire che i plugin caricati nel repository centrale dei plugin di WordPress.org rispettino gli standard più recenti dei plugin di WordPress e funzionino su una vasta gamma di siti.

Molti siti utilizzano plugin personalizzati, e questo va benissimo. Ma i plugin destinati all’uso su molti diversi tipi di siti da parte del pubblico devono avere un certo livello minimo di funzionalità, al fine di garantirne il corretto funzionamento in molti ambienti diversi. Le linee guida per la revisione dei plugin sono create con questo obiettivo in mente.

Questo strumento di verifica dei plugin non è perfetto e non lo sarà mai. È solo uno strumento per aiutare chi sviluppa i plugin o chiunque desideri rendere il proprio plugin più completo. Tutti i plugin inviati a WordPress.org sono sottoposti a una revisione manuale da parte di un team di esperti. Il controllore automatico dei plugin è pensato solo come uno strumento utile, non come un sistema di misurazione assoluto.

Un plugin deve superare tutti i controlli per essere approvato nella directory dei plugin di WordPress.org?

Per essere approvato nella directory dei plugin di WordPress.org, un plugin deve superare tutti i controlli nella categoria “Plugin repo”. Altri controlli sono aggiuntivi e potrebbero non essere necessari per esser approvato.

In ogni caso, superare i controlli in questo strumento probabilmente aiuta a ottenere un processo di revisione dei plugin fluido, ma non garantisce che un plugin venga approvato nella directory dei plugin di WordPress.org.

Recensioni

19 Gennaio 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 Gennaio 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 Dicembre 2024 1 risposta
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 Novembre 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?
Leggi tutte le recensioni di 24

Contributi e sviluppo

“Plugin Check (PCP)” è un software open source. Le persone che hanno contribuito allo sviluppo di questo plugin sono indicate di seguito.

Collaboratori

“Plugin Check (PCP)” è stato tradotto in 12 lingue. Grazie ai traduttori per i loro contributi.

Traduci “Plugin Check (PCP)” nella tua lingua.

Ti interessa lo sviluppo?

Esplora il codice segui il repository SVN, segui il log delle modifiche tramite RSS.

Changelog

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.
  • Miglioramento – Nuovo filtro wp_plugin_check_default_categories per modificare le categorie selezionate per impostazione predefinita.
  • Miglioramento – Nuovo filtro wp_plugin_check_ignore_files per consentire di ignorare file specifici.
  • Fix – Corretto il rilevamento dei file readme in Windows normalizzando i percorsi dei file.

1.0.1

  • Fix: aggiunta della cartella test-content mancante, necessaria per i controlli di runtime.
  • Fix: non inviare email durante la configurazione dell’ambiente di test.
  • Fix: Evita l’avviso PHP quando la variabile argv non è impostata.

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

  • Aggiunta – Link ‘Visualizza nell’editor del codice’ sotto ciascun errore o avvertimento PHPCS. Crediti a @EvanHerman, @westonruter, @felixarntz, @mukeshpanchal27 #262
  • Fix – Assicurarsi che readme.txt abbia la priorità su readme.md quando entrambi sono presenti. Crediti a @bordoni, @afragen #258
  • Fix – Assicurarsi che il controllo PHPCS venga eseguito anche quando il binario PHPCS non è eseguibile. Crediti a @bordoni, @shawn-digitalpoint, @mrfoxtalbot #254
  • Fix – Modifiche al README e correzione di errori di battitura. Crediti a @aaronjorbin. #261
  • Fix – Le lunghe righe di codice con il controllo PHPCS non si espandono più oltre le dimensioni dell’avviso. Crediti a @bordoni, @felixarntz. #263
  • Fix – Assicurati di avere la compatibilità con PHP 7.2 e rimuovi la virgola finale. Crediti a @bordoni, @leoloso. #265
  • Fix – Includi tutte le stringhe che erano state trascurate nella precedente versione. Crediti a @bordoni, @pixolin. #270

0.2.0

  • Funzionalità – Abilita la modifica del percorso binario PHP utilizzato dal plugin con la costante PLUGIN_CHECK_PHP_BIN.
  • Funzionalità – Include una verifica dell’uso di ALLOW_UNFILTERED_UPLOADS su qualsiasi file PHP – Crediti a EvanHerman su #45
  • Funzionalità: include un controllo per la presenza dei file dell’applicazione (.a, .bin, .bpk, .deploy, .dist, .distz, .dmg, .dms, .DS_Store, .dump, .elc, .exe, .iso, .lha, .lrf, .lzh, .o, .obj, .phar, .pkg, .sh, '.so`) - sostiene EvanHerman su #43
  • Funzionalità - Includere un controllo per la presenza del file readme.txt o readme.md - Crediti a EvanHerman su #42
  • Fix - Controllo che l'analisi del file Readme sia inclusa correttamente quando è presente un file readme.md o readme.txt. Crediti a Bordoni su #52
  • Modifica - Vietare le funzioni move_uploaded_file, passthru, proc_open - Crediti a alexsanford su #50
  • Modifica - Cambia il tipo di messaggio per l'uso di funzioni già incluse da WordPress da Avviso a Errore. Crediti a davidperezgar su #18
  • Modifica - Cambia il tipo di messaggio per l'uso errato della 'Stable tag' da Notifica/Avviso a Errore. Crediti a davidperezgar su #3

[0.1] 2011-09-04

Versione originale dello strumento di controllo del plugin, non una versione rilasciata del plugin, questo changelog è qui solo per scopi storici.