This commit is contained in:
Javier Casares 2026-08-17 16:01:48 +00:00
commit e7a4a45a74
9 changed files with 170 additions and 89 deletions

View file

@ -2,10 +2,10 @@
/** /**
* Admin page view: ROBOTSTXT Plugins catalog. * Admin page view: ROBOTSTXT Plugins catalog.
* *
* Available variables: * Catalog table (Plugin · Version · Requires WP · Requires PHP · Price ·
* $catalog list<array<string,mixed>> Catalog entries from Core. * Action · Status) with an always-open detail row under each plugin
* $local array<string, array{installed:bool, active:bool, version:string}> * (website link + description), an intro paragraph, and Support /
* Local install state, keyed by slug. * Payments sections below the table.
* *
* @package Robotstxt_Manager * @package Robotstxt_Manager
*/ */
@ -57,6 +57,10 @@ $compat_warnings = 0;
<div class="wrap"> <div class="wrap">
<h1><?php esc_html_e( 'Manager (by ROBOTSTXT) — Plugins', 'robotstxt-manager' ); ?></h1> <h1><?php esc_html_e( 'Manager (by ROBOTSTXT) — Plugins', 'robotstxt-manager' ); ?></h1>
<p class="description">
<?php esc_html_e( 'This is the ROBOTSTXT plugin store: the catalog of plugins published by ROBOTSTXT, installable and updatable straight from your own wp-admin. Free plugins install with one click; premium plugins require an annual subscription that you purchase on our website.', 'robotstxt-manager' ); ?>
</p>
<?php if ( $refreshed ) : ?> <?php if ( $refreshed ) : ?>
<div class="notice notice-success is-dismissible"><p><?php esc_html_e( 'Catalog refreshed.', 'robotstxt-manager' ); ?></p></div> <div class="notice notice-success is-dismissible"><p><?php esc_html_e( 'Catalog refreshed.', 'robotstxt-manager' ); ?></p></div>
<?php endif; ?> <?php endif; ?>
@ -95,12 +99,12 @@ $compat_warnings = 0;
<thead> <thead>
<tr> <tr>
<th scope="col"><?php esc_html_e( 'Plugin', 'robotstxt-manager' ); ?></th> <th scope="col"><?php esc_html_e( 'Plugin', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Type', 'robotstxt-manager' ); ?></th> <th scope="col"><?php esc_html_e( 'Version', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Price', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Requires WP', 'robotstxt-manager' ); ?></th> <th scope="col"><?php esc_html_e( 'Requires WP', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Requires PHP', 'robotstxt-manager' ); ?></th> <th scope="col"><?php esc_html_e( 'Requires PHP', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Local state', 'robotstxt-manager' ); ?></th> <th scope="col"><?php esc_html_e( 'Price', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Action', 'robotstxt-manager' ); ?></th> <th scope="col"><?php esc_html_e( 'Action', 'robotstxt-manager' ); ?></th>
<th scope="col"><?php esc_html_e( 'Status', 'robotstxt-manager' ); ?></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -129,8 +133,7 @@ $compat_warnings = 0;
$req_php = is_string( $raw_rphp ) ? $raw_rphp : ''; $req_php = is_string( $raw_rphp ) ? $raw_rphp : '';
$website_url = '' !== $page_url ? $page_url : $homepage; $website_url = '' !== $page_url ? $page_url : $homepage;
$expandable = ( '' !== $desc || '' !== $website_url ); $has_detail = ( '' !== $website_url || '' !== $desc );
$toggle_id = 'robotstxt-manager-toggle-' . esc_attr( $slug );
// Compatibility checks. // Compatibility checks.
$wp_ok = '' === $req_wp || version_compare( $local_wp_version, $req_wp, '>=' ); $wp_ok = '' === $req_wp || version_compare( $local_wp_version, $req_wp, '>=' );
@ -157,25 +160,9 @@ $compat_warnings = 0;
?> ?>
<tr class="<?php echo esc_attr( ltrim( $row_class ) ); ?>"> <tr class="<?php echo esc_attr( ltrim( $row_class ) ); ?>">
<td class="robotstxt-manager-name-cell"> <td class="robotstxt-manager-name-cell">
<?php if ( $expandable ) : ?>
<input type="checkbox" class="robotstxt-manager-toggle" id="<?php echo esc_attr( $toggle_id ); ?>" aria-label="<?php esc_attr_e( 'Show more information', 'robotstxt-manager' ); ?>" />
<label class="robotstxt-manager-toggle-label" for="<?php echo esc_attr( $toggle_id ); ?>"><span class="robotstxt-manager-toggle-arrow"></span></label>
<?php endif; ?>
<strong><?php echo esc_html( $name ); ?></strong> <strong><?php echo esc_html( $name ); ?></strong>
<?php if ( '' !== $remote_v ) : ?>
<br /><span class="description"><?php echo esc_html( sprintf( 'v%s', $remote_v ) ); ?></span>
<?php endif; ?>
</td>
<td><?php echo esc_html( 'premium' === $kind ? __( 'Premium', 'robotstxt-manager' ) : __( 'Free', 'robotstxt-manager' ) ); ?></td>
<td>
<?php
if ( $cost > 0.0 ) {
echo esc_html( sprintf( '€%s / year', number_format_i18n( $cost, 0 ) ) );
} else {
echo '&mdash;';
}
?>
</td> </td>
<td><?php echo '' !== $remote_v ? esc_html( $remote_v ) : '&mdash;'; ?></td>
<td> <td>
<?php if ( '' !== $req_wp ) : ?> <?php if ( '' !== $req_wp ) : ?>
<span class="<?php echo $wp_ok ? 'robotstxt-manager-compat--ok' : 'robotstxt-manager-compat--fail'; ?>"> <span class="<?php echo $wp_ok ? 'robotstxt-manager-compat--ok' : 'robotstxt-manager-compat--fail'; ?>">
@ -202,21 +189,16 @@ $compat_warnings = 0;
</td> </td>
<td> <td>
<?php <?php
if ( ! $l_installed ) { if ( $cost > 0.0 || 'premium' === $kind ) {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--not-installed">' . esc_html__( 'Not installed', 'robotstxt-manager' ) . '</span>'; echo esc_html(
} elseif ( ! $l_active ) {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--inactive">' . esc_html__( 'Installed (inactive)', 'robotstxt-manager' ) . '</span>';
} elseif ( $update_available ) {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--update">' . esc_html(
sprintf( sprintf(
/* translators: 1: installed version, 2: available version. */ /* translators: %s: formatted price number. */
__( 'Update available (v%1$s → v%2$s)', 'robotstxt-manager' ), __( '€%s / year', 'robotstxt-manager' ),
$l_version, number_format_i18n( $cost, 0 )
$remote_v
) )
) . '</span>'; );
} else { } else {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--ok">' . esc_html__( 'Up to date', 'robotstxt-manager' ) . '</span>'; echo esc_html__( 'Free', 'robotstxt-manager' );
} }
?> ?>
</td> </td>
@ -239,16 +221,36 @@ $compat_warnings = 0;
<a class="button button-secondary" href="<?php echo esc_url( Robotstxt_Manager_Admin::action_url( 'update', $slug ) ); ?>"><?php esc_html_e( 'Update', 'robotstxt-manager' ); ?></a> <a class="button button-secondary" href="<?php echo esc_url( Robotstxt_Manager_Admin::action_url( 'update', $slug ) ); ?>"><?php esc_html_e( 'Update', 'robotstxt-manager' ); ?></a>
<?php endif; ?> <?php endif; ?>
</td> </td>
<td>
<?php
if ( ! $l_installed ) {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--not-installed">' . esc_html__( 'Not installed', 'robotstxt-manager' ) . '</span>';
} elseif ( ! $l_active ) {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--inactive">' . esc_html__( 'Installed (inactive)', 'robotstxt-manager' ) . '</span>';
} elseif ( $update_available ) {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--update">' . esc_html(
sprintf(
/* translators: 1: installed version, 2: available version. */
__( 'Update available (v%1$s → v%2$s)', 'robotstxt-manager' ),
$l_version,
$remote_v
)
) . '</span>';
} else {
echo '<span class="robotstxt-manager-state robotstxt-manager-state--ok">' . esc_html__( 'Up to date', 'robotstxt-manager' ) . '</span>';
}
?>
</td>
</tr> </tr>
<?php if ( $expandable ) : ?> <?php if ( $has_detail ) : ?>
<tr class="robotstxt-manager-detail-row"> <tr class="robotstxt-manager-detail-row">
<td colspan="7"> <td colspan="7">
<?php if ( '' !== $desc ) : ?>
<p class="robotstxt-manager-detail-description"><?php echo esc_html( $desc ); ?></p>
<?php endif; ?>
<?php if ( '' !== $website_url ) : ?> <?php if ( '' !== $website_url ) : ?>
<a href="<?php echo esc_url( $website_url ); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Visit website', 'robotstxt-manager' ); ?> <span class="screen-reader-text"><?php echo esc_html( sprintf( /* translators: %s: plugin name. */ __( '(about %s)', 'robotstxt-manager' ), $name ) ); ?></span></a> <a href="<?php echo esc_url( $website_url ); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Visit website', 'robotstxt-manager' ); ?> <span class="screen-reader-text"><?php echo esc_html( sprintf( /* translators: %s: plugin name. */ __( '(about %s)', 'robotstxt-manager' ), $name ) ); ?></span></a>
<?php endif; ?> <?php endif; ?>
<?php if ( '' !== $desc ) : ?>
<span class="robotstxt-manager-detail-description"><?php echo esc_html( $desc ); ?></span>
<?php endif; ?>
</td> </td>
</tr> </tr>
<?php endif; ?> <?php endif; ?>
@ -256,6 +258,16 @@ $compat_warnings = 0;
</tbody> </tbody>
</table> </table>
<h2><?php esc_html_e( 'Support', 'robotstxt-manager' ); ?></h2>
<p class="description">
<?php esc_html_e( 'Need help with a ROBOTSTXT plugin? Visit the plugin\'s website (the link in its row above) for documentation and guides, or contact us through our website — we are happy to help.', 'robotstxt-manager' ); ?>
</p>
<h2><?php esc_html_e( 'Payments, and how it works', 'robotstxt-manager' ); ?></h2>
<p class="description">
<?php esc_html_e( 'Free plugins install instantly at no cost. Premium plugins are annual subscriptions: you pay once on our website and the subscription renews automatically every year until you cancel. You can cancel at any time from your ROBOTSTXT account page — access keeps working until the end of the paid period. All payments are processed securely by Mollie; we never see or store your card details.', 'robotstxt-manager' ); ?>
</p>
<?php if ( $compat_warnings > 0 ) : ?> <?php if ( $compat_warnings > 0 ) : ?>
<div class="notice notice-warning inline" style="margin-top:1em"> <div class="notice notice-warning inline" style="margin-top:1em">
<p> <p>
@ -290,12 +302,7 @@ $compat_warnings = 0;
.robotstxt-manager-compat-warning { cursor: help; } .robotstxt-manager-compat-warning { cursor: help; }
.robotstxt-manager-row--incompatible { background-color: #fef7f0 !important; } .robotstxt-manager-row--incompatible { background-color: #fef7f0 !important; }
/* Expandable detail rows (CSS-only toggle). */ /* Detail rows (always open): muted, attached to the row above. */
.robotstxt-manager-toggle { display: none; } .robotstxt-manager-detail-row td { border-top: none !important; padding-top: 0; }
.robotstxt-manager-toggle-label { cursor: pointer; display: inline-block; width: 1.4em; } .robotstxt-manager-detail-description { color: #50575e; }
.robotstxt-manager-toggle-arrow::before { content: "\25B8"; /* ▸ */ }
.robotstxt-manager-detail-row { display: none; }
.robotstxt-manager-detail-row td { border-top: none !important; }
tr:has(.robotstxt-manager-toggle:checked) + tr.robotstxt-manager-detail-row { display: table-row; }
tr:has(.robotstxt-manager-toggle:checked) .robotstxt-manager-toggle-arrow::before { content: "\25BE"; /* ▾ */ }
</style> </style>

View file

@ -1,5 +1,22 @@
== Changelog == == Changelog ==
= 1.0.0 =
_Release date: 2026-08-15_
**Highlights**
* Catalog page redesign. The table columns are now Plugin · Version · Requires WP · Requires PHP · Price · Action · Status: the Type column is merged into Price ("Free" for cost-0 plugins, the annual price for premium), the version moved into its own column, the action buttons sit before the status, and "Local state" is renamed "Status". Each plugin's detail row — website link first, then its description — is now **always open** (the click-to-expand toggle is gone). An intro paragraph after the page title explains the store, and Support + Payments sections below the table describe how to get help and how the annual-subscription model works (automatic renewal, cancellation from the account page, Mollie processing).
**Changed**
* Plugin version 0.6.0 → 1.0.0 — first stable release. No database schema changes (no custom tables).
**Compatibility**
* WordPress: 4.4 - 7.1 (scan-verified: wp-compat clean from 4.4)
* PHP: 8.0 - 8.5 (scan-verified: PHPCompatibility + manual feature audit)
= 0.6.0 = = 0.6.0 =
_Release date: 2026-08-15_ _Release date: 2026-08-15_

Binary file not shown.

View file

@ -129,8 +129,6 @@ msgstr "Instal·lat (inactiu)"
msgid "Insufficient permissions." msgid "Insufficient permissions."
msgstr "Permisos insuficients." msgstr "Permisos insuficients."
msgid "Local state"
msgstr "Estat local"
msgid "Manager (by ROBOTSTXT) — Plugins" msgid "Manager (by ROBOTSTXT) — Plugins"
msgstr "Manager (by ROBOTSTXT) — Plugins" msgstr "Manager (by ROBOTSTXT) — Plugins"
@ -153,8 +151,6 @@ msgstr "El plugin no està instal·lat."
msgid "Plugin not found in catalog." msgid "Plugin not found in catalog."
msgstr "Plugin no trobat al catàleg." msgstr "Plugin no trobat al catàleg."
msgid "Premium"
msgstr "Premium"
msgid "Price" msgid "Price"
msgstr "Preu" msgstr "Preu"
@ -177,8 +173,6 @@ msgstr "Requereix WP"
msgid "Settings" msgid "Settings"
msgstr "Paràmetres" msgstr "Paràmetres"
msgid "Show more information"
msgstr "Mostra més informació"
msgid "Store URL" msgid "Store URL"
msgstr "URL de la botiga" msgstr "URL de la botiga"
@ -210,8 +204,6 @@ msgstr "Aquest lloc funciona amb WordPress %1$s i PHP %2$s."
msgid "Too many refreshes. Please wait a minute before refreshing again." msgid "Too many refreshes. Please wait a minute before refreshing again."
msgstr "Massa actualitzacions. Espera un minut abans de tornar a actualitzar." msgstr "Massa actualitzacions. Espera un minut abans de tornar a actualitzar."
msgid "Type"
msgstr "Tipus"
msgid "Up to date" msgid "Up to date"
msgstr "Actualitzat" msgstr "Actualitzat"
@ -233,3 +225,27 @@ msgstr "El teu servidor funciona amb PHP"
msgid "Your site runs WordPress" msgid "Your site runs WordPress"
msgstr "El teu lloc funciona amb WordPress" msgstr "El teu lloc funciona amb WordPress"
msgid "This is the ROBOTSTXT plugin store: the catalog of plugins published by ROBOTSTXT, installable and updatable straight from your own wp-admin. Free plugins install with one click; premium plugins require an annual subscription that you purchase on our website."
msgstr "Aquesta és la botiga de plugins de ROBOTSTXT: el catàleg de plugins publicats per ROBOTSTXT, instal·lables i actualitzables directament des del teu propi wp-admin. Els plugins gratuïts s'instal·len amb un clic; els plugins premium requereixen una subscripció anual que es compra al nostre lloc web."
msgid "Version"
msgstr "Versió"
msgid "Status"
msgstr "Estat"
msgid "€%s / year"
msgstr "%s €/any"
msgid "Support"
msgstr "Suport"
msgid "Need help with a ROBOTSTXT plugin? Visit the plugin's website (the link in its row above) for documentation and guides, or contact us through our website — we are happy to help."
msgstr "Necessites ajuda amb un plugin de ROBOTSTXT? Visita el lloc web del plugin (l'enllaç a la seva fila de dalt) per veure la documentació i les guies, o contacta amb nosaltres a través del nostre lloc web: estarem encantats d'ajudar-te."
msgid "Payments, and how it works"
msgstr "Pagaments, i com funciona"
msgid "Free plugins install instantly at no cost. Premium plugins are annual subscriptions: you pay once on our website and the subscription renews automatically every year until you cancel. You can cancel at any time from your ROBOTSTXT account page — access keeps working until the end of the paid period. All payments are processed securely by Mollie; we never see or store your card details."
msgstr "Els plugins gratuïts s'instal·len a l'instant i sense cost. Els plugins premium són subscripcions anuals: pagues una vegada al nostre lloc web i la subscripció es renova automàticament cada any fins que la cancellis. Pots cancel·lar-la en qualsevol moment des de la teva pàgina de compte de ROBOTSTXT; l'accés segueix funcionant fins al final del període pagat. Tots els pagaments els processa de manera segura Mollie; nosaltres mai no veiem ni desem les dades de la teva targeta."

Binary file not shown.

View file

@ -129,8 +129,6 @@ msgstr "Instalado (inactivo)"
msgid "Insufficient permissions." msgid "Insufficient permissions."
msgstr "Permisos insuficientes." msgstr "Permisos insuficientes."
msgid "Local state"
msgstr "Estado local"
msgid "Manager (by ROBOTSTXT) — Plugins" msgid "Manager (by ROBOTSTXT) — Plugins"
msgstr "Manager (by ROBOTSTXT) — Plugins" msgstr "Manager (by ROBOTSTXT) — Plugins"
@ -153,8 +151,6 @@ msgstr "El plugin no está instalado."
msgid "Plugin not found in catalog." msgid "Plugin not found in catalog."
msgstr "Plugin no encontrado en el catálogo." msgstr "Plugin no encontrado en el catálogo."
msgid "Premium"
msgstr "Premium"
msgid "Price" msgid "Price"
msgstr "Precio" msgstr "Precio"
@ -177,8 +173,6 @@ msgstr "Requiere WP"
msgid "Settings" msgid "Settings"
msgstr "Ajustes" msgstr "Ajustes"
msgid "Show more information"
msgstr "Mostrar más información"
msgid "Store URL" msgid "Store URL"
msgstr "URL de la tienda" msgstr "URL de la tienda"
@ -210,8 +204,6 @@ msgstr "Este sitio funciona con WordPress %1$s y PHP %2$s."
msgid "Too many refreshes. Please wait a minute before refreshing again." msgid "Too many refreshes. Please wait a minute before refreshing again."
msgstr "Demasiadas actualizaciones. Espera un minuto antes de volver a actualizar." msgstr "Demasiadas actualizaciones. Espera un minuto antes de volver a actualizar."
msgid "Type"
msgstr "Tipo"
msgid "Up to date" msgid "Up to date"
msgstr "Actualizado" msgstr "Actualizado"
@ -233,3 +225,27 @@ msgstr "Tu servidor funciona con PHP"
msgid "Your site runs WordPress" msgid "Your site runs WordPress"
msgstr "Tu sitio funciona con WordPress" msgstr "Tu sitio funciona con WordPress"
msgid "This is the ROBOTSTXT plugin store: the catalog of plugins published by ROBOTSTXT, installable and updatable straight from your own wp-admin. Free plugins install with one click; premium plugins require an annual subscription that you purchase on our website."
msgstr "Esta es la tienda de plugins de ROBOTSTXT: el catálogo de plugins publicados por ROBOTSTXT, instalables y actualizables directamente desde tu propio wp-admin. Los plugins gratis se instalan con un clic; los plugins premium requieren una suscripción anual que se compra en nuestro sitio web."
msgid "Version"
msgstr "Versión"
msgid "Status"
msgstr "Estado"
msgid "€%s / year"
msgstr "%s €/año"
msgid "Support"
msgstr "Soporte"
msgid "Need help with a ROBOTSTXT plugin? Visit the plugin's website (the link in its row above) for documentation and guides, or contact us through our website — we are happy to help."
msgstr "¿Necesitas ayuda con un plugin de ROBOTSTXT? Visita el sitio web del plugin (el enlace en su fila de arriba) para ver la documentación y las guías, o contáctanos a través de nuestro sitio web: estaremos encantados de ayudarte."
msgid "Payments, and how it works"
msgstr "Pagos, y cómo funciona"
msgid "Free plugins install instantly at no cost. Premium plugins are annual subscriptions: you pay once on our website and the subscription renews automatically every year until you cancel. You can cancel at any time from your ROBOTSTXT account page — access keeps working until the end of the paid period. All payments are processed securely by Mollie; we never see or store your card details."
msgstr "Los plugins gratis se instalan al instante y sin coste. Los plugins premium son suscripciones anuales: pagas una vez en nuestro sitio web y la suscripción se renueva automáticamente cada año hasta que la canceles. Puedes cancelarla en cualquier momento desde tu página de cuenta de ROBOTSTXT; el acceso sigue funcionando hasta el final del periodo pagado. Todos los pagos los procesa de forma segura Mollie; nosotros nunca vemos ni guardamos los datos de tu tarjeta."

View file

@ -128,8 +128,6 @@ msgstr ""
msgid "Insufficient permissions." msgid "Insufficient permissions."
msgstr "" msgstr ""
msgid "Local state"
msgstr ""
msgid "Manager (by ROBOTSTXT) — Plugins" msgid "Manager (by ROBOTSTXT) — Plugins"
msgstr "" msgstr ""
@ -152,8 +150,6 @@ msgstr ""
msgid "Plugin not found in catalog." msgid "Plugin not found in catalog."
msgstr "" msgstr ""
msgid "Premium"
msgstr ""
msgid "Price" msgid "Price"
msgstr "" msgstr ""
@ -176,8 +172,6 @@ msgstr ""
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
msgid "Show more information"
msgstr ""
msgid "Store URL" msgid "Store URL"
msgstr "" msgstr ""
@ -209,8 +203,6 @@ msgstr ""
msgid "Too many refreshes. Please wait a minute before refreshing again." msgid "Too many refreshes. Please wait a minute before refreshing again."
msgstr "" msgstr ""
msgid "Type"
msgstr ""
msgid "Up to date" msgid "Up to date"
msgstr "" msgstr ""
@ -232,3 +224,27 @@ msgstr ""
msgid "Your site runs WordPress" msgid "Your site runs WordPress"
msgstr "" msgstr ""
msgid "This is the ROBOTSTXT plugin store: the catalog of plugins published by ROBOTSTXT, installable and updatable straight from your own wp-admin. Free plugins install with one click; premium plugins require an annual subscription that you purchase on our website."
msgstr ""
msgid "Version"
msgstr ""
msgid "Status"
msgstr ""
msgid "€%s / year"
msgstr ""
msgid "Support"
msgstr ""
msgid "Need help with a ROBOTSTXT plugin? Visit the plugin's website (the link in its row above) for documentation and guides, or contact us through our website — we are happy to help."
msgstr ""
msgid "Payments, and how it works"
msgstr ""
msgid "Free plugins install instantly at no cost. Premium plugins are annual subscriptions: you pay once on our website and the subscription renews automatically every year until you cancel. You can cancel at any time from your ROBOTSTXT account page — access keeps working until the end of the paid period. All payments are processed securely by Mollie; we never see or store your card details."
msgstr ""

View file

@ -3,9 +3,9 @@ Contributors: javiercasares, robotstxt
Tags: dashboard, catalog, updates, subscriptions, management Tags: dashboard, catalog, updates, subscriptions, management
Requires at least: 4.4 Requires at least: 4.4
Tested up to: 7.1 Tested up to: 7.1
Stable tag: 0.6.0 Stable tag: 1.0.0
Requires PHP: 8.0 Requires PHP: 8.0
Version: 0.6.0 Version: 1.0.0
License: GPL-3.0-or-later License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.txt License URI: https://www.gnu.org/licenses/gpl-3.0.txt
@ -42,11 +42,14 @@ Configure at **ROBOTSTXT → Settings**:
| Column | Description | | Column | Description |
|---|---| |---|---|
| Plugin | Name and current version from the store. Click ▸ to expand the description and website link. | | Plugin | Name from the store. The row below each plugin carries its website link and description (always visible). |
| Type | Free or Premium. | | Version | Current version in the store. |
| Price | Annual price in EUR, or — for free plugins. | | Requires WP / Requires PHP | Minimum requirements, checked against this site (warning icon when not met). |
| Local state | Not installed / Installed (inactive) / Up to date / Update available (vX → vY). | | Price | "Free", or the annual price for premium plugins. |
| Action | Install / Activate / Update / Buy, depending on local state. | | Action | Install / Activate / Update / Buy, depending on local state. |
| Status | Not installed / Installed (inactive) / Up to date / Update available (vX → vY). |
Below the table: a Support section and an explanation of Payments (annual subscriptions, automatic renewal, cancellation, Mollie processing).
Click "Refresh catalog" to force a fresh fetch from Core. Install, Activate, and Update run on a classic page load (no JavaScript) and report the result as a standard admin notice. Click "Refresh catalog" to force a fresh fetch from Core. Install, Activate, and Update run on a classic page load (no JavaScript) and report the result as a standard admin notice.
@ -89,6 +92,12 @@ Encrypted at rest using AES-256-CBC with a key derived from your site's WordPres
== Changelog == == Changelog ==
= 1.0.0 =
_Release date: 2026-08-15_
* Catalog redesign: columns Plugin · Version · Requires WP · Requires PHP · Price · Action · Status; Type merged into Price ("Free" or the annual price); per-plugin website link + description always open under each row; intro text after the title; Support and Payments sections below the table. First stable release.
= 0.6.0 = = 0.6.0 =
_Release date: 2026-08-15_ _Release date: 2026-08-15_

View file

@ -3,7 +3,7 @@
* Plugin Name: Manager (by ROBOTSTXT) * Plugin Name: Manager (by ROBOTSTXT)
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-manager * Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-manager
* Description: Client-side dashboard for the ROBOTSTXT plugin ecosystem. Lists the catalog from a remote Plugins Core install, resolves local install/update state, and installs, activates, and updates plugins directly from the store. * Description: Client-side dashboard for the ROBOTSTXT plugin ecosystem. Lists the catalog from a remote Plugins Core install, resolves local install/update state, and installs, activates, and updates plugins directly from the store.
* Version: 0.6.0 * Version: 1.0.0
* Requires at least: 4.4 * Requires at least: 4.4
* Requires PHP: 8.0 * Requires PHP: 8.0
* Author: ROBOTSTXT * Author: ROBOTSTXT
@ -21,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
} }
/** Plugin version. */ /** Plugin version. */
define( 'ROBOTSTXT_MANAGER_VERSION', '0.6.0' ); define( 'ROBOTSTXT_MANAGER_VERSION', '1.0.0' );
/** Absolute path to the plugin directory, with trailing slash. */ /** Absolute path to the plugin directory, with trailing slash. */
define( 'ROBOTSTXT_MANAGER_DIR', plugin_dir_path( __FILE__ ) ); define( 'ROBOTSTXT_MANAGER_DIR', plugin_dir_path( __FILE__ ) );