From 3efcc59fa4d8512e762dc952c4d3a977276edc97 Mon Sep 17 00:00:00 2001 From: frantorres Date: Sun, 14 Jun 2026 20:01:26 +0200 Subject: [PATCH 1/5] Plugin Directory: Rehaul of the "Add your plugin" page. Wording redo, included the checks in the sections and added "Trialware" and "No accepted" plugins sections. --- .../shortcodes/class-upload.php | 164 +++++++++++------- .../patterns/page-developers.php | 8 +- 2 files changed, 107 insertions(+), 65 deletions(-) diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php index ea5d8acb0e..01204dce96 100644 --- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php +++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php @@ -449,70 +449,106 @@ public static function display() { -

- -

- -
- -
- -
- -
- -

- -

-

Generic names that resemble existing plugins in the directory (e.g., “AI Writer”, “Image Optimization”) won’t be accepted, even if the slug is available.', 'wporg-plugins' ) ); ?>

-

start your plugin name with a unique or coined term, such as your brand, alias, or organization name (e.g., “Acme AI Writer”, “WriteralAI - AI Writter”, “Acme Image Optimization”, “Imageralia - Image Optimization”).', 'wporg-plugins' ) ); ?>

- -

-

begin with a project, organization, or trademark are only accepted if submitted by the verified owner. Ownership can be confirmed through the email domain in your user profile - update it before submitting.', 'wporg-plugins' ) - ), - esc_url( 'https://profiles.wordpress.org/profile/edit' ) - ); ?> -
- For example, use an official Acme email domain (e.g., “john@acme.example”) for a plugin named “Acme AI Writer”.', 'wporg-plugins' ) ); ?> -

-

If you don’t own the entity, don’t imply affiliation. Place their name at the end and make the distinction clear.', 'wporg-plugins' ) ); ?> -
- For example, if you don’t own “Acme” use a structure like: “{your-distinguible-plugin-name} for Acme” (e.g., “WriteralAI – AI Writer for Acme”).', 'wporg-plugins' ) ); ?> -

+

+

+ +
+ +
+ + +

+

🏷️ + ".esc_html( 'Guideline 17', 'wporg-plugins' ).""; + ?> +

+

distinctive and should not be confusingly similar to existing plugins, projects, products, organizations, or trademarks that are not owned by you.', 'wporg-plugins' ) ); ?>

+

Choosing a distinctive name: Generic names such as "AI Writer" or "Image Optimization" and/or names similar to existing plugins are unlikely to be accepted, even if the plugin slug is available. Make your plugin stand out by using a unique identifier such as your name, brand, organization, or project name (e.g., “Acme AI Writer”, “WriteralAI – AI Writter”)', 'wporg-plugins' ) ); ?>

+

Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) + ), + esc_url( 'https://profiles.wordpress.org/profile/edit' ) + ); ?> +

+

If you are not the owner: Simply do not imply affiliation with a company, project, or trademark that you do not own. You can do so placing their name at the end and making the distinction clear (e.g., “WriteralAI – AI Writer for Acme”)', 'wporg-plugins' ) ); ?>

+ +
+ + +

🔓 + ".esc_html( 'Guidelines 5 and 6', 'wporg-plugins' ).""; + ?> +

+

may not artificially restrict functionality that is included in the plugin itself.', 'wporg-plugins' ) ); ?>

+

features implemented in the plugin code and/or that the plugin itself can do.', 'wporg-plugins' ) ); ?>

+

open source directory for free to use plugins. Building a business around your plugin is fine, and there are compliant ways of doing so; artificial limitations in built-in code are not one of them.', 'wporg-plugins' ) ); ?>

+ + +

🚫

+

+ + +

+

+ +
+ +

diff --git a/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php b/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php index b67aa32322..d859c81e7c 100644 --- a/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php +++ b/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php @@ -30,9 +30,15 @@
  • GNU General Public License v2, or any later version. We strongly recommend using the same license as WordPress — “GPLv2 or later.”', 'wporg-plugins' ) ), esc_url( 'https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses' ) ); + printf( wp_kses_post( __( 'Your plugin must be compatible with the GNU General Public License v2, or any later version. The plugin should either include its source code or provide a clear link to it. We strongly recommend using the same license as WordPress — “GPLv2 or later.”', 'wporg-plugins' ) ), esc_url( 'https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses' ) ); ?>
  • +
  • + must not impose artificial restrictions on its built-in functionality. This includes license gates, paywalls, time-limited trials, usage quotas, or any other mechanism that limits features included in the plugin code and/or that the plugin code can do.', 'wporg-plugins' ) ), esc_url( 'https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/#5-trialware-is-not-permitted' ) ); + ?> +
  • Date: Sun, 14 Jun 2026 20:11:46 +0200 Subject: [PATCH 2/5] Fix indention and typos. --- .../shortcodes/class-upload.php | 194 +++++++++--------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php index 01204dce96..a86aee0046 100644 --- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php +++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php @@ -449,106 +449,106 @@ public static function display() { -

    -

    - -
    - -
    - - -

    -

    🏷️ - ".esc_html( 'Guideline 17', 'wporg-plugins' ).""; - ?> -

    +

    +

    + +
    + +
    + + +

    +

    🏷️ + ".esc_html( 'Guideline 17', 'wporg-plugins' ).""; + ?> +

    distinctive and should not be confusingly similar to existing plugins, projects, products, organizations, or trademarks that are not owned by you.', 'wporg-plugins' ) ); ?>

    Choosing a distinctive name: Generic names such as "AI Writer" or "Image Optimization" and/or names similar to existing plugins are unlikely to be accepted, even if the plugin slug is available. Make your plugin stand out by using a unique identifier such as your name, brand, organization, or project name (e.g., “Acme AI Writer”, “WriteralAI – AI Writter”)', 'wporg-plugins' ) ); ?>

    -

    Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) - ), - esc_url( 'https://profiles.wordpress.org/profile/edit' ) - ); ?> -

    +

    Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) + ), + esc_url( 'https://profiles.wordpress.org/profile/edit' ) + ); ?> +

    If you are not the owner: Simply do not imply affiliation with a company, project, or trademark that you do not own. You can do so placing their name at the end and making the distinction clear (e.g., “WriteralAI – AI Writer for Acme”)', 'wporg-plugins' ) ); ?>

    - -
    - - -

    🔓 - ".esc_html( 'Guidelines 5 and 6', 'wporg-plugins' ).""; - ?> -

    -

    may not artificially restrict functionality that is included in the plugin itself.', 'wporg-plugins' ) ); ?>

    -

    features implemented in the plugin code and/or that the plugin itself can do.', 'wporg-plugins' ) ); ?>

    -

    open source directory for free to use plugins. Building a business around your plugin is fine, and there are compliant ways of doing so; artificial limitations in built-in code are not one of them.', 'wporg-plugins' ) ); ?>

    - - -

    🚫

    -

    - - -

    -

    - -
    - -
    + +
    + + +

    🔓 + ".esc_html( 'Guidelines 5 and 6', 'wporg-plugins' ).""; + ?> +

    +

    may not artificially restrict functionality that is included in the plugin itself.', 'wporg-plugins' ) ); ?>

    +

    features implemented in the plugin code and/or that the plugin itself can do.', 'wporg-plugins' ) ); ?>

    +

    open source directory for free to use plugins. Building a business around your plugin is fine, and there are compliant ways of doing so; artificial limitations in built-in code are not one of them.', 'wporg-plugins' ) ); ?>

    + + +

    🚫

    +

    + + +

    +

    + +
    + +

    From dd162b4afa0b1ae170e51caa8d3f5c0b99e5336a Mon Sep 17 00:00:00 2001 From: frantorres Date: Sun, 14 Jun 2026 20:20:37 +0200 Subject: [PATCH 3/5] Linting and escaping. --- .../shortcodes/class-upload.php | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php index a86aee0046..79f1690df1 100644 --- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php +++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php @@ -1,6 +1,7 @@ Frequently Asked Questions.', 'wporg-plugins' ), - 'https://developer.wordpress.org/plugins/wordpress-org/plugin-developer-faq/' - ); + printf( wp_kses_post( __( 'I have read the Frequently Asked Questions.', 'wporg-plugins' ) ),'https://developer.wordpress.org/plugins/wordpress-org/plugin-developer-faq/' ); ?>

    @@ -475,9 +470,9 @@ public static function display() { Plugin Check plugin, and all indicated issues resolved (apart from what I believe to be false-positives).', 'wporg-plugins' ), - home_url( '/plugin-check/' ) + /* Translators: URL to plugin-check plugin */ + wp_kses_post( __( 'I confirm that the plugin has been tested with the Plugin Check plugin, and all indicated issues resolved (apart from what I believe to be false-positives).', 'wporg-plugins' )), + esc_url( home_url( '/plugin-check/' ) ) ); ?> @@ -494,7 +489,7 @@ public static function display() {

    Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) + __( 'Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) ), esc_url( 'https://profiles.wordpress.org/profile/edit' ) ); ?> @@ -510,7 +505,7 @@ public static function display() { ' . esc_html( wp_get_current_user()->user_email ) . '' ); ?> @@ -527,7 +522,7 @@ public static function display() {

    open source directory for free to use plugins. Building a business around your plugin is fine, and there are compliant ways of doing so; artificial limitations in built-in code are not one of them.', 'wporg-plugins' ) ); ?>

    🚫

    @@ -541,12 +536,12 @@ public static function display() {



    From 2ba729400968defa9ff3a94a53cdd04978da248f Mon Sep 17 00:00:00 2001 From: frantorres Date: Sun, 14 Jun 2026 20:26:10 +0200 Subject: [PATCH 4/5] Linting --- .../shortcodes/class-upload.php | 24 +++++++++---------- .../patterns/page-developers.php | 12 +++++----- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php index 79f1690df1..f4b9a41735 100644 --- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php +++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php @@ -455,7 +455,7 @@ public static function display() {
    @@ -481,32 +481,32 @@ public static function display() {

    🏷️ ".esc_html( 'Guideline 17', 'wporg-plugins' ).""; + echo ' - '.esc_html( 'Guideline 17', 'wporg-plugins' ).''; ?>

    distinctive and should not be confusingly similar to existing plugins, projects, products, organizations, or trademarks that are not owned by you.', 'wporg-plugins' ) ); ?>

    Choosing a distinctive name: Generic names such as "AI Writer" or "Image Optimization" and/or names similar to existing plugins are unlikely to be accepted, even if the plugin slug is available. Make your plugin stand out by using a unique identifier such as your name, brand, organization, or project name (e.g., “Acme AI Writer”, “WriteralAI – AI Writter”)', 'wporg-plugins' ) ); ?>

    Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) - ), - esc_url( 'https://profiles.wordpress.org/profile/edit' ) - ); ?> + wp_kses_post( + __( 'Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) + ), + esc_url( 'https://profiles.wordpress.org/profile/edit' ) + ); ?>

    If you are not the owner: Simply do not imply affiliation with a company, project, or trademark that you do not own. You can do so placing their name at the end and making the distinction clear (e.g., “WriteralAI – AI Writer for Acme”)', 'wporg-plugins' ) ); ?>


    @@ -514,7 +514,7 @@ public static function display() {

    🔓 ".esc_html( 'Guidelines 5 and 6', 'wporg-plugins' ).""; + echo ' - '.esc_html( 'Guidelines 5 and 6', 'wporg-plugins' ).''; ?>

    may not artificially restrict functionality that is included in the plugin itself.', 'wporg-plugins' ) ); ?>

    diff --git a/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php b/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php index d859c81e7c..ab89854f3c 100644 --- a/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php +++ b/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/patterns/page-developers.php @@ -33,12 +33,12 @@ printf( wp_kses_post( __( 'Your plugin must be compatible with the GNU General Public License v2, or any later version. The plugin should either include its source code or provide a clear link to it. We strongly recommend using the same license as WordPress — “GPLv2 or later.”', 'wporg-plugins' ) ), esc_url( 'https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses' ) ); ?>
  • -
  • - must not impose artificial restrictions on its built-in functionality. This includes license gates, paywalls, time-limited trials, usage quotas, or any other mechanism that limits features included in the plugin code and/or that the plugin code can do.', 'wporg-plugins' ) ), esc_url( 'https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/#5-trialware-is-not-permitted' ) ); - ?> -
  • +
  • + must not impose artificial restrictions on its built-in functionality. This includes license gates, paywalls, time-limited trials, usage quotas, or any other mechanism that limits features included in the plugin code and/or that the plugin code can do.', 'wporg-plugins' ) ), esc_url( 'https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/#5-trialware-is-not-permitted' ) ); + ?> +
  • Date: Sun, 14 Jun 2026 20:29:38 +0200 Subject: [PATCH 5/5] Linting --- .../plugins/plugin-directory/shortcodes/class-upload.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php index f4b9a41735..807227629b 100644 --- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php +++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php @@ -462,7 +462,7 @@ public static function display() {
    @@ -490,8 +490,8 @@ public static function display() { /* translators: 1: User profile URL. */ wp_kses_post( __( 'Demonstrating ownership: Names that begin with a company, project, organization, or trademark name may only be submitted by the verified owner. Ownership is typically verified using the email address associated with your WordPress.org account. If necessary, update your profile before submitting.', 'wporg-plugins' ) - ), - esc_url( 'https://profiles.wordpress.org/profile/edit' ) + ), + esc_url( 'https://profiles.wordpress.org/profile/edit' ) ); ?>

    If you are not the owner: Simply do not imply affiliation with a company, project, or trademark that you do not own. You can do so placing their name at the end and making the distinction clear (e.g., “WriteralAI – AI Writer for Acme”)', 'wporg-plugins' ) ); ?>