v1.2.5
This commit is contained in:
parent
891736d707
commit
0c4fda16c0
26 changed files with 615 additions and 454 deletions
29
assets/js/manager-notice.js
Normal file
29
assets/js/manager-notice.js
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
/**
|
||||||
|
* Persists the dismissal of the Manager (by ROBOTSTXT) admin notice.
|
||||||
|
*
|
||||||
|
* WordPress only hides a dismissible notice for the current page load;
|
||||||
|
* this script stores the dismissal so it does not come back.
|
||||||
|
*/
|
||||||
|
( function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
document.addEventListener( 'click', function ( event ) {
|
||||||
|
var notice = event.target.closest
|
||||||
|
? event.target.closest( '.robotstxt-hello-manager-notice .notice-dismiss' )
|
||||||
|
: null;
|
||||||
|
|
||||||
|
if ( ! notice ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = new FormData();
|
||||||
|
data.append( 'action', 'robotstxt_hello_dismiss_manager_notice' );
|
||||||
|
data.append( 'nonce', window.robotstxthellomanagernotice.nonce );
|
||||||
|
|
||||||
|
window.fetch( window.robotstxthellomanagernotice.ajaxUrl, {
|
||||||
|
method: 'POST',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
body: data
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
}() );
|
||||||
|
|
@ -1,3 +1,63 @@
|
||||||
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.2.5 =
|
||||||
|
|
||||||
|
_Release date: 2026-08-18_
|
||||||
|
|
||||||
|
**Fixed**
|
||||||
|
|
||||||
|
* The Hello menu item is now registered at position 1000 instead of PHP_INT_MAX. Positions are array keys in the WordPress menu array, and on WordPress 4.0-6.4 two top-level items registered at the same position overwrite each other, silently removing one of the menus. PHP_INT_MAX is one of the most popular "bottom" values in the ecosystem, so collisions were likely; 1000 sits past the last core separator (99), keeps the item at the bottom of the menu, and WordPress 6.5+ resolves any remaining collision automatically.
|
||||||
|
|
||||||
|
**Compatibility**
|
||||||
|
|
||||||
|
* WordPress: 4.0 - 7.1
|
||||||
|
* PHP: 5.6 - 8.5
|
||||||
|
* MariaDB: 11.8 (staging)
|
||||||
|
|
||||||
|
**Tests**
|
||||||
|
|
||||||
|
* PHP Coding Standards: 3.13.6
|
||||||
|
* WordPress Coding Standards: 3.4.1
|
||||||
|
* PHPStan: 2.2.8 with wp-compat (Requires at least 4.0)
|
||||||
|
* PHPUnit: 9.6.36 (plugin header tests included, line coverage 88.5%)
|
||||||
|
|
||||||
|
= 1.2.4 =
|
||||||
|
|
||||||
|
_Release date: 2026-08-18_
|
||||||
|
|
||||||
|
**Highlights**
|
||||||
|
|
||||||
|
* Automatic updates are now handled by the ROBOTSTXT ecosystem: the bundled auto-updater was removed in favor of Manager (by ROBOTSTXT).
|
||||||
|
|
||||||
|
**Added**
|
||||||
|
|
||||||
|
* Dismissible notice on the Plugins screen (single site and network) when Manager (by ROBOTSTXT) is not installed and active, with a link to its plugin page.
|
||||||
|
* Permanent, non-dismissible notice on the plugin settings page when Manager (by ROBOTSTXT) is not available.
|
||||||
|
* Setting to remove plugin data on uninstall. Data is preserved by default unless the user explicitly opts in.
|
||||||
|
* Uninstall routine that honors the data-removal setting.
|
||||||
|
|
||||||
|
**Changed**
|
||||||
|
|
||||||
|
* Author, contributor order and plugin URLs now point to the ROBOTSTXT software site (https://www.robotstxt.software/).
|
||||||
|
* Restored the real minimum requirements after a full-range compatibility review: WordPress 4.0+ and PHP 5.6+.
|
||||||
|
|
||||||
|
**Removed**
|
||||||
|
|
||||||
|
* Bundled JSON-based auto-updater (robotstxt-updater.php) and update.json.
|
||||||
|
|
||||||
|
**Compatibility**
|
||||||
|
|
||||||
|
* WordPress: 4.0 - 7.1
|
||||||
|
* PHP: 5.6 - 8.5
|
||||||
|
* MariaDB: 11.8 (staging)
|
||||||
|
|
||||||
|
**Tests**
|
||||||
|
|
||||||
|
* PHP Coding Standards: 3.13.6
|
||||||
|
* WordPress Coding Standards: 3.4.1
|
||||||
|
* PHPStan: 2.2.8 with wp-compat (Requires at least 4.0)
|
||||||
|
* PHPUnit: 9.6.36 (plugin header tests included, line coverage 88.5%)
|
||||||
|
|
||||||
= 1.2.3 =
|
= 1.2.3 =
|
||||||
* Test release for update validation.
|
* Test release for update validation.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Main plugin class responsible for registering the Hello admin page.
|
* Main plugin class responsible for registering the Hello admin page
|
||||||
|
* and the Manager (by ROBOTSTXT) dependency notices.
|
||||||
*
|
*
|
||||||
* @package Robotstxt_Hello
|
* @package Robotstxt_Hello
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
||||||
/**
|
/**
|
||||||
* Handles registration of the Hello menu and page.
|
* Handles registration of the Hello menu, page and notices.
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
@ -22,6 +23,33 @@ if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
||||||
*/
|
*/
|
||||||
const MENU_SLUG = 'robotstxt-hello';
|
const MENU_SLUG = 'robotstxt-hello';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL of the Manager (by ROBOTSTXT) plugin page.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const MANAGER_PLUGIN_URL = 'https://www.robotstxt.software/plugins/robotstxt-manager/';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Option name for the "delete plugin data on uninstall" setting.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const OPTION_DELETE_DATA = 'robotstxt_hello_delete_data';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User meta key that stores the dismissal of the manager notice.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const USER_META_DISMISSED = 'robotstxt_hello_dismissed_manager_notice';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers WordPress hooks required by the plugin.
|
* Registers WordPress hooks required by the plugin.
|
||||||
*
|
*
|
||||||
|
|
@ -32,6 +60,11 @@ if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
||||||
public function register() {
|
public function register() {
|
||||||
add_action( 'init', array( $this, 'load_textdomain' ) );
|
add_action( 'init', array( $this, 'load_textdomain' ) );
|
||||||
add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );
|
add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );
|
||||||
|
add_action( 'admin_init', array( $this, 'register_settings' ) );
|
||||||
|
add_action( 'admin_notices', array( $this, 'render_manager_notice' ) );
|
||||||
|
add_action( 'network_admin_notices', array( $this, 'render_manager_notice' ) );
|
||||||
|
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
||||||
|
add_action( 'wp_ajax_robotstxt_hello_dismiss_manager_notice', array( $this, 'handle_dismiss' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -42,12 +75,40 @@ if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function load_textdomain() {
|
public function load_textdomain() {
|
||||||
load_plugin_textdomain( 'robotstxt-hello', false, dirname( plugin_basename( __DIR__ ) ) . '/languages/' );
|
load_plugin_textdomain( 'robotstxt-hello', false, dirname( plugin_basename( ROBOTSTXT_HELLO_FILE ) ) . '/languages/' );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers the plugin setting with the Settings API.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function register_settings() {
|
||||||
|
register_setting( 'robotstxt-hello', self::OPTION_DELETE_DATA, array( $this, 'sanitize_delete_data' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sanitizes the "delete plugin data on uninstall" checkbox value.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @param mixed $value Raw submitted value.
|
||||||
|
* @return string '1' when enabled, empty string otherwise.
|
||||||
|
*/
|
||||||
|
public function sanitize_delete_data( $value ) {
|
||||||
|
return ( '1' === $value ) ? '1' : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the Hello admin menu entry at the bottom of the menu list.
|
* Adds the Hello admin menu entry at the bottom of the menu list.
|
||||||
*
|
*
|
||||||
|
* The position is 1000: past the last core separator (99), so the item
|
||||||
|
* renders below every core entry. Positions are array keys in the
|
||||||
|
* menu array, so PHP_INT_MAX was avoided — it collides with other
|
||||||
|
* plugins using the same popular value on WordPress 4.0-6.4.
|
||||||
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
|
|
@ -60,7 +121,7 @@ if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
||||||
self::MENU_SLUG,
|
self::MENU_SLUG,
|
||||||
array( $this, 'render_admin_page' ),
|
array( $this, 'render_admin_page' ),
|
||||||
'dashicons-admin-site',
|
'dashicons-admin-site',
|
||||||
PHP_INT_MAX
|
1000
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,8 +134,181 @@ if ( ! class_exists( 'Robotstxt_Hello_Plugin' ) ) {
|
||||||
*/
|
*/
|
||||||
public function render_admin_page() {
|
public function render_admin_page() {
|
||||||
echo '<div class="wrap">';
|
echo '<div class="wrap">';
|
||||||
echo '<h1>' . esc_html__( 'Hello', 'robotstxt-hello' ) . '</h1>';
|
printf( '<h1>%s</h1>', esc_html__( 'Hello', 'robotstxt-hello' ) );
|
||||||
|
|
||||||
|
if ( ! $this->is_manager_active() ) {
|
||||||
|
$this->render_manager_message( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->render_settings_form();
|
||||||
|
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the plugin settings form.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function render_settings_form() {
|
||||||
|
echo '<form method="post" action="options.php">';
|
||||||
|
settings_fields( 'robotstxt-hello' );
|
||||||
|
|
||||||
|
printf(
|
||||||
|
'<p><label for="robotstxt-hello-delete-data"><input type="checkbox" id="robotstxt-hello-delete-data" name="robotstxt_hello_delete_data" value="1"%1$s /> %2$s</label></p>',
|
||||||
|
checked( '1', get_option( self::OPTION_DELETE_DATA, '' ), false ),
|
||||||
|
esc_html__( 'Delete plugin data on uninstall', 'robotstxt-hello' )
|
||||||
|
);
|
||||||
|
|
||||||
|
printf( '<p class="description">%s</p>', esc_html__( 'All plugin data will be removed when the plugin is uninstalled.', 'robotstxt-hello' ) );
|
||||||
|
|
||||||
|
submit_button();
|
||||||
|
echo '</form>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the Manager (by ROBOTSTXT) notice on the plugins list page.
|
||||||
|
*
|
||||||
|
* The notice only appears on the plugins list page (single site or
|
||||||
|
* network), only while the manager plugin is not active, and only
|
||||||
|
* for users who have not dismissed it yet.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function render_manager_notice() {
|
||||||
|
$screen = get_current_screen();
|
||||||
|
|
||||||
|
if ( ! $screen instanceof WP_Screen ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! in_array( $screen->id, array( 'plugins', 'plugins-network' ), true ) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $this->is_manager_active() || $this->is_notice_dismissed() ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->render_manager_message( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the shared Manager (by ROBOTSTXT) recommendation message.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @param bool $dismissible Whether the notice can be dismissed.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function render_manager_message( $dismissible ) {
|
||||||
|
$classes = 'notice notice-warning robotstxt-hello-manager-notice';
|
||||||
|
|
||||||
|
if ( $dismissible ) {
|
||||||
|
$classes .= ' is-dismissible';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(
|
||||||
|
'<div id="robotstxt-hello-manager-notice" class="%1$s"><p>%2$s <a href="%3$s">%4$s</a></p></div>',
|
||||||
|
esc_attr( $classes ),
|
||||||
|
esc_html__( 'To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active.', 'robotstxt-hello' ),
|
||||||
|
esc_url( self::MANAGER_PLUGIN_URL ),
|
||||||
|
esc_html__( 'Get Manager (by ROBOTSTXT)', 'robotstxt-hello' )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enqueues the dismissal script on the plugins list page.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @param string $hook_suffix Current admin page hook suffix.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function enqueue_scripts( $hook_suffix ) {
|
||||||
|
if ( 'plugins.php' !== $hook_suffix ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $this->is_manager_active() || $this->is_notice_dismissed() ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_enqueue_script(
|
||||||
|
'robotstxt-hello-manager-notice',
|
||||||
|
plugins_url( 'assets/js/manager-notice.js', ROBOTSTXT_HELLO_FILE ),
|
||||||
|
array(),
|
||||||
|
ROBOTSTXT_HELLO_VERSION,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
wp_localize_script(
|
||||||
|
'robotstxt-hello-manager-notice',
|
||||||
|
'robotstxthellomanagernotice',
|
||||||
|
array(
|
||||||
|
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
||||||
|
'nonce' => wp_create_nonce( 'robotstxt-hello-manager-notice' ),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Persists the dismissal of the manager notice for the current user.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function handle_dismiss() {
|
||||||
|
check_ajax_referer( 'robotstxt-hello-manager-notice', 'nonce' );
|
||||||
|
|
||||||
|
if ( ! current_user_can( 'activate_plugins' ) ) {
|
||||||
|
wp_die( '', '', 403 );
|
||||||
|
}
|
||||||
|
|
||||||
|
update_user_meta( get_current_user_id(), self::USER_META_DISMISSED, '1' );
|
||||||
|
|
||||||
|
wp_die( '', '', 200 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the Manager (by ROBOTSTXT) plugin is active.
|
||||||
|
*
|
||||||
|
* Detection covers both single-site and network-wide activation.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @return bool True when any active plugin basename starts with 'robotstxt-manager/'.
|
||||||
|
*/
|
||||||
|
private function is_manager_active() {
|
||||||
|
$active = (array) get_option( 'active_plugins', array() );
|
||||||
|
|
||||||
|
if ( is_multisite() ) {
|
||||||
|
$active = array_merge( $active, array_keys( (array) get_site_option( 'active_sitewide_plugins', array() ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( $active as $basename ) {
|
||||||
|
if ( is_string( $basename ) && 0 === strpos( $basename, 'robotstxt-manager/' ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the current user dismissed the manager notice.
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*
|
||||||
|
* @return bool True when the notice was dismissed by the current user.
|
||||||
|
*/
|
||||||
|
private function is_notice_dismissed() {
|
||||||
|
return '1' === get_user_meta( get_current_user_id(), self::USER_META_DISMISSED, true );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: ca\n"
|
"Language: ca\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Hola"
|
msgstr "Hola"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Per rebre actualitzacions automàtiques, heu de tenir el complement Manager (by ROBOTSTXT) instal·lat i actiu."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Baixa el Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Suprimeix les dades del complement en desinstal·lar-lo"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Se suprimiran totes les dades del complement quan es desinstal·li."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: de_DE\n"
|
"Language: de_DE\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Hallo"
|
msgstr "Hallo"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Um automatische Updates zu erhalten, muss das Plugin Manager (by ROBOTSTXT) installiert und aktiv sein."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Manager (by ROBOTSTXT) herunterladen"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Plugindaten beim Deinstallieren löschen"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Alle Plugindaten werden beim Deinstallieren des Plugins entfernt."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: es_ES\n"
|
"Language: es_ES\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Hola"
|
msgstr "Hola"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Para recibir actualizaciones automáticas, el plugin Manager (by ROBOTSTXT) debe estar instalado y activo."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Obtener Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Borrar los datos del plugin al desinstalarlo"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Se eliminarán todos los datos del plugin cuando se desinstale."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Kaixo"
|
msgstr "Kaixo"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Eguneratze automatikoak jasotzeko, Manager (by ROBOTSTXT) plugina instalatuta eta aktibo egon behar da."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Lortu Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Ezabatu pluginaren datuak desinstalatzean"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Pluginaren datu guztiak ezabatuko dira plugina desinstalatzean."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: fr_FR\n"
|
"Language: fr_FR\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Bonjour"
|
msgstr "Bonjour"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Pour recevoir les mises à jour automatiques, l’extension Manager (by ROBOTSTXT) doit être installée et activée."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Obtenir Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Supprimer les données de l’extension lors de la désinstallation"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Toutes les données de l’extension seront supprimées lors de la désinstallation de l’extension."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: gl_ES\n"
|
"Language: gl_ES\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Ola"
|
msgstr "Ola"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Para recibir actualizacións automáticas, o plugin Manager (by ROBOTSTXT) debe estar instalado e activo."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Obter Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Borrar os datos do plugin ao desinstalalo"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Eliminaranse todos os datos do plugin cando se desinstale."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: it_IT\n"
|
"Language: it_IT\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Ciao"
|
msgstr "Ciao"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Per ricevere gli aggiornamenti automatici, il plugin Manager (by ROBOTSTXT) deve essere installato e attivo."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Ottieni Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Elimina i dati del plugin alla disinstallazione"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Tutti i dati del plugin saranno rimossi quando il plugin verrà disinstallato."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: pl_PL\n"
|
"Language: pl_PL\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=3; plural=(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Cześć"
|
msgstr "Cześć"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Aby otrzymywać automatyczne aktualizacje, wtyczka Manager (by ROBOTSTXT) musi być zainstalowana i aktywna."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Pobierz Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Usuń dane wtyczki podczas dezinstalacji"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Wszystkie dane wtyczki zostaną usunięte po odinstalowaniu wtyczki."
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,17 +1,34 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ROBOTSTXT Hello 1.0.5\n"
|
"Project-Id-Version: ROBOTSTXT Hello 1.2.4\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: https://www.robotstxt.software/plugins/robotstxt-hello/\n"
|
||||||
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
"POT-Creation-Date: 2025-11-01 08:04+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-01 08:04+0000\n"
|
"PO-Revision-Date: 2026-08-18 00:00+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: ROBOTSTXT\n"
|
||||||
"Language: pt_PT\n"
|
"Language: pt_PT\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: includes/class-robotstxt-hello-plugin.php:57 includes/class-robotstxt-hello-plugin.php:58 includes/class-robotstxt-hello-plugin.php:76
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
msgid "Hello"
|
msgid "Hello"
|
||||||
msgstr "Olá"
|
msgstr "Olá"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "To receive automatic updates, the plugin Manager (by ROBOTSTXT) must be installed and active."
|
||||||
|
msgstr "Para receber atualizações automáticas, o plugin Manager (by ROBOTSTXT) tem de estar instalado e ativo."
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Get Manager (by ROBOTSTXT)"
|
||||||
|
msgstr "Obter Manager (by ROBOTSTXT)"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "Delete plugin data on uninstall"
|
||||||
|
msgstr "Eliminar os dados do plugin ao desinstalar"
|
||||||
|
|
||||||
|
#: includes/class-robotstxt-hello-plugin.php
|
||||||
|
msgid "All plugin data will be removed when the plugin is uninstalled."
|
||||||
|
msgstr "Todos os dados do plugin serão removidos quando o plugin for desinstalado."
|
||||||
|
|
||||||
|
|
|
||||||
93
readme.txt
93
readme.txt
|
|
@ -1,55 +1,68 @@
|
||||||
=== Hello (by ROBOTSTXT) ===
|
=== Hello (by ROBOTSTXT) ===
|
||||||
Contributors: javiercasares
|
Contributors: robotstxt, javiercasares
|
||||||
Tags: hello-world
|
Tags: hello-world
|
||||||
Requires at least: 6.5
|
Requires at least: 4.0
|
||||||
Tested up to: 6.9
|
Tested up to: 7.1
|
||||||
Stable tag: 1.2.3
|
Stable tag: 1.2.5
|
||||||
Requires PHP: 8.2
|
Requires PHP: 5.6
|
||||||
Version: 1.2.3
|
Version: 1.2.5
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
||||||
|
|
||||||
Provides a minimal Hello admin page for demonstration purposes.
|
Adds a Hello admin page for demonstration purposes.
|
||||||
|
|
||||||
== Description ==
|
== Description ==
|
||||||
Provides a minimal Hello admin page for demonstration purposes.
|
|
||||||
|
Adds a Hello admin page for demonstration purposes.
|
||||||
|
|
||||||
|
This plugin receives its automatic updates through Manager (by ROBOTSTXT). If the manager plugin is not installed and active, a dismissible notice on the Plugins screen — and a permanent notice on the plugin settings page — will remind you to install it.
|
||||||
|
|
||||||
|
== Installation ==
|
||||||
|
|
||||||
|
= Automatic download =
|
||||||
|
|
||||||
|
Visit the plugin section in your WordPress, search for Hello (by ROBOTSTXT); download and install the plugin.
|
||||||
|
|
||||||
|
= Manual download =
|
||||||
|
|
||||||
|
Extract the contents of the ZIP and upload the contents to the `/wp-content/plugins/robotstxt-hello/` directory. Once uploaded, it will appear in your plugin list.
|
||||||
|
|
||||||
|
== Frequently Asked Questions ==
|
||||||
|
|
||||||
|
= Why do I see a notice about Manager (by ROBOTSTXT)? =
|
||||||
|
|
||||||
|
Automatic updates for this plugin are delivered through the ROBOTSTXT ecosystem by Manager (by ROBOTSTXT). Install and activate it to receive updates.
|
||||||
|
|
||||||
|
== Compatibility ==
|
||||||
|
|
||||||
|
* WordPress: 4.0 - 7.1
|
||||||
|
* PHP: 5.6 - 8.5
|
||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.2.5 =
|
||||||
|
* Fixed a conflict on WordPress 4.0-6.4 where the Hello menu item could remove another plugin's top-level menu (and vice versa) when both used the same menu position. The menu is now registered at position 1000, past the last core separator (99), so it renders at the bottom of the menu.
|
||||||
|
|
||||||
|
= 1.2.4 =
|
||||||
|
* Updates are now delivered through Manager (by ROBOTSTXT): the bundled auto-updater was removed and a dismissible notice on the Plugins screen recommends installing the manager plugin when it is not active.
|
||||||
|
* Added a permanent notice on the plugin settings page when Manager (by ROBOTSTXT) is not available.
|
||||||
|
* Added a setting to remove plugin data on uninstall (data is preserved by default).
|
||||||
|
* Restored the real minimum requirements: WordPress 4.0 and PHP 5.6, verified with a full-range compatibility scan.
|
||||||
|
* Author, contributors and plugin URLs now point to the ROBOTSTXT software site.
|
||||||
|
|
||||||
= 1.2.3 =
|
= 1.2.3 =
|
||||||
* Test release for update validation.
|
* Test release for update validation.
|
||||||
|
|
||||||
= 1.2.2 =
|
= Previous versions =
|
||||||
* Removed Plugin ID (DID) from plugin header.
|
|
||||||
|
|
||||||
= 1.2.1 =
|
If you want to see the full changelog, visit the [changelog](https://www.robotstxt.software/plugins/robotstxt-hello/) page.
|
||||||
* Test release to validate the Auto-Updater system is working correctly.
|
|
||||||
|
|
||||||
= 1.2.0 =
|
== Compliance ==
|
||||||
* Added generic JSON-based Auto-Updater system. Plugin now updates automatically from git.robotstxt.es without depending on WordPress.org repository.
|
|
||||||
|
|
||||||
= 1.1.2 =
|
This plugin adheres to the following security measures and review protocols for each version:
|
||||||
* Raised the minimum WordPress requirement to 6.5 and PHP to 8.2 so the plugin matches the AGENTS development guidelines while keeping the Hello admin page untouched.
|
|
||||||
|
|
||||||
= 1.1.1 =
|
* [WordPress Plugin Handbook](https://developer.wordpress.org/plugins/)
|
||||||
* Added compiled translation catalogs for supported locales (Catalan, German, Spanish, Basque, French, Galician, Italian, Polish, Portuguese) so localized greetings render without requiring manual compilation.
|
* [WordPress Plugin Security](https://developer.wordpress.org/plugins/wordpress-org/plugin-security/)
|
||||||
|
* [WordPress APIs Security](https://developer.wordpress.org/apis/security/)
|
||||||
= 1.1.0 =
|
* [WordPress Coding Standards](https://github.com/WordPress/WordPress-Coding-Standards)
|
||||||
* DID Support
|
* [Plugin Check (PCP)](https://wordpress.org/plugins/plugin-check/)
|
||||||
|
|
||||||
= 1.0.5 =
|
|
||||||
* Expanded the translation catalog to cover 202 locales with updated greetings.
|
|
||||||
|
|
||||||
= 1.0.4 =
|
|
||||||
* Documented the plugin internals with PHPDoc blocks and loaded the text domain to ensure translations are available in WordPress.
|
|
||||||
|
|
||||||
= 1.0.3 =
|
|
||||||
* Added translation files for 50 locales to improve WordPress i18n coverage.
|
|
||||||
|
|
||||||
= 1.0.2 =
|
|
||||||
* Confirmed compatibility with PHP 5.6 through PHP 8.4 via PHPCompatibilityWP checks.
|
|
||||||
|
|
||||||
= 1.0.1 =
|
|
||||||
* Broadened compatibility to cover WordPress 4.7+ and PHP 5.6+ while keeping the Hello admin page unchanged.
|
|
||||||
|
|
||||||
= 1.0.0 =
|
|
||||||
* Added the Hello admin page and menu entry.
|
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,20 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Plugin Name: Hello (by ROBOTSTXT)
|
* Plugin Name: Hello (by ROBOTSTXT)
|
||||||
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-hello
|
* Plugin URI: https://www.robotstxt.software/plugins/robotstxt-hello/
|
||||||
|
* Update URI: https://www.robotstxt.software/plugins/robotstxt-hello/
|
||||||
* Description: Adds a Hello admin page for demonstration purposes.
|
* Description: Adds a Hello admin page for demonstration purposes.
|
||||||
* Version: 1.2.3
|
* Version: 1.2.5
|
||||||
* Requires at least: 6.5
|
* Requires at least: 4.0
|
||||||
* Requires PHP: 8.2
|
* Requires PHP: 5.6
|
||||||
* Network: true
|
* Network: true
|
||||||
* Security: robotstxt@robotstxt.es
|
* Security: robotstxt@robotstxt.es
|
||||||
* Author: ROBOTSTXT
|
* Author: ROBOTSTXT
|
||||||
* Author URI: https://www.robotstxt.es/
|
* Author URI: https://www.robotstxt.software/
|
||||||
* Text Domain: robotstxt-hello
|
* Text Domain: robotstxt-hello
|
||||||
* Domain Path: /languages
|
* Domain Path: /languages
|
||||||
* License: GPL-3.0-or-later
|
* License: GPL-3.0-or-later
|
||||||
* License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
* License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
||||||
* Gitea Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-hello
|
|
||||||
* Primary Branch: main
|
|
||||||
*
|
*
|
||||||
* @package ROBOTSTXT_Hello
|
* @package ROBOTSTXT_Hello
|
||||||
*/
|
*/
|
||||||
|
|
@ -24,10 +23,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define( 'ROBOTSTXT_HELLO_VERSION', '1.2.5' );
|
||||||
|
define( 'ROBOTSTXT_HELLO_FILE', __FILE__ );
|
||||||
|
|
||||||
require_once __DIR__ . '/includes/class-robotstxt-hello-plugin.php';
|
require_once __DIR__ . '/includes/class-robotstxt-hello-plugin.php';
|
||||||
|
|
||||||
( new Robotstxt_Hello_Plugin() )->register();
|
( new Robotstxt_Hello_Plugin() )->register();
|
||||||
|
|
||||||
// Initialize ROBOTSTXT updater (auto-configures from plugin headers).
|
|
||||||
require_once __DIR__ . '/robotstxt-updater.php';
|
|
||||||
Robotstxt_Updater::init( __FILE__ );
|
|
||||||
|
|
|
||||||
|
|
@ -1,332 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Generic JSON-based updater for ROBOTSTXT plugins.
|
|
||||||
*
|
|
||||||
* This file is designed to be copied to any ROBOTSTXT plugin.
|
|
||||||
* It auto-configures itself by reading the plugin headers.
|
|
||||||
*
|
|
||||||
* @package ROBOTSTXT
|
|
||||||
* @version 1.0.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Robotstxt_Updater
|
|
||||||
*
|
|
||||||
* Generic updater that works with any plugin.
|
|
||||||
* Reads plugin headers and constructs update URL automatically.
|
|
||||||
*/
|
|
||||||
class Robotstxt_Updater {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin file path.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private string $plugin_file_path;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin basename (e.g., 'my-plugin/my-plugin.php').
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private string $plugin_basename;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin slug (directory name).
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private string $plugin_slug;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remote JSON URL.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private string $json_url;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache key.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private string $cache_key;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin headers.
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private array $plugin_data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the updater.
|
|
||||||
*
|
|
||||||
* Usage in your main plugin file:
|
|
||||||
* require_once __DIR__ . '/robotstxt-updater.php';
|
|
||||||
* Robotstxt_Updater::init( __FILE__ );
|
|
||||||
*
|
|
||||||
* @param string $plugin_file_path Absolute path to the main plugin file.
|
|
||||||
*/
|
|
||||||
public static function init( string $plugin_file_path ): void {
|
|
||||||
$instance = new self( $plugin_file_path );
|
|
||||||
$instance->register();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @param string $plugin_file_path Absolute path to the main plugin file.
|
|
||||||
*/
|
|
||||||
private function __construct( string $plugin_file_path ) {
|
|
||||||
$this->plugin_file_path = $plugin_file_path;
|
|
||||||
$this->plugin_basename = plugin_basename( $plugin_file_path );
|
|
||||||
$this->plugin_slug = dirname( $this->plugin_basename );
|
|
||||||
$this->plugin_data = $this->get_plugin_data();
|
|
||||||
$this->json_url = $this->build_json_url();
|
|
||||||
$this->cache_key = 'robotstxt_updater_' . md5( $this->plugin_basename );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register WordPress hooks.
|
|
||||||
*/
|
|
||||||
private function register(): void {
|
|
||||||
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'inject_update_info' ) );
|
|
||||||
add_filter( 'plugins_api', array( $this, 'provide_plugin_details' ), 10, 3 );
|
|
||||||
add_action( 'admin_init', array( $this, 'handle_cache_clear' ) );
|
|
||||||
add_action( 'robotstxt_updater_clear_cache', array( $this, 'clear_cache' ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get plugin headers.
|
|
||||||
*
|
|
||||||
* @return array Plugin data.
|
|
||||||
*/
|
|
||||||
private function get_plugin_data(): array {
|
|
||||||
if ( ! function_exists( 'get_plugin_data' ) ) {
|
|
||||||
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
return get_plugin_data( $this->plugin_file_path, false, false );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build JSON URL from plugin headers.
|
|
||||||
*
|
|
||||||
* Tries to use "Gitea Plugin URI" header to construct the URL.
|
|
||||||
* Falls back to Plugin URI if Gitea URI is not available.
|
|
||||||
*
|
|
||||||
* @return string JSON URL.
|
|
||||||
*/
|
|
||||||
private function build_json_url(): string {
|
|
||||||
// Try Gitea Plugin URI (format: "OWNER/REPO" or full URL).
|
|
||||||
if ( ! empty( $this->plugin_data['Gitea Plugin URI'] ) ) {
|
|
||||||
$gitea_uri = $this->plugin_data['Gitea Plugin URI'];
|
|
||||||
|
|
||||||
// If it's already a full URL, use it.
|
|
||||||
if ( str_starts_with( $gitea_uri, 'http' ) ) {
|
|
||||||
// Extract base URL and construct JSON path.
|
|
||||||
return rtrim( $gitea_uri, '/' ) . '/raw/branch/main/update.json';
|
|
||||||
}
|
|
||||||
|
|
||||||
// If it's in format "OWNER/REPO", construct full URL.
|
|
||||||
if ( preg_match( '#^[^/]+/[^/]+$#', $gitea_uri ) ) {
|
|
||||||
return "https://git.robotstxt.es/{$gitea_uri}/raw/branch/main/update.json";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fallback: try to extract from Plugin URI.
|
|
||||||
if ( ! empty( $this->plugin_data['PluginURI'] ) ) {
|
|
||||||
$plugin_uri = $this->plugin_data['PluginURI'];
|
|
||||||
if ( str_contains( $plugin_uri, 'git.robotstxt.es' ) ) {
|
|
||||||
return rtrim( $plugin_uri, '/' ) . '/raw/branch/main/update.json';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Last resort: construct from plugin slug.
|
|
||||||
return "https://git.robotstxt.es/ROBOTSTXT/{$this->plugin_slug}/raw/branch/main/update.json";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Inject update info into WP's plugin update transient.
|
|
||||||
*
|
|
||||||
* @param object|mixed $transient The update_plugins transient.
|
|
||||||
*
|
|
||||||
* @return object The modified transient.
|
|
||||||
*/
|
|
||||||
public function inject_update_info( $transient ) {
|
|
||||||
if ( ! is_object( $transient ) ) {
|
|
||||||
$transient = new stdClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( empty( $transient->checked ) || ! is_array( $transient->checked ) ) {
|
|
||||||
return $transient;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( empty( $transient->checked[ $this->plugin_basename ] ) ) {
|
|
||||||
return $transient;
|
|
||||||
}
|
|
||||||
|
|
||||||
$current_version = $transient->checked[ $this->plugin_basename ];
|
|
||||||
$remote = $this->get_remote_data();
|
|
||||||
|
|
||||||
if ( empty( $remote['version'] ) || empty( $remote['download_url'] ) ) {
|
|
||||||
return $transient;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! $this->is_compatible( $remote ) ) {
|
|
||||||
return $transient;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( version_compare( $remote['version'], $current_version, '>' ) ) {
|
|
||||||
$update = (object) array(
|
|
||||||
'slug' => $remote['slug'] ?? $this->plugin_slug,
|
|
||||||
'plugin' => $this->plugin_basename,
|
|
||||||
'new_version' => $remote['version'],
|
|
||||||
'url' => $remote['homepage'] ?? $this->plugin_data['PluginURI'] ?? '',
|
|
||||||
'package' => $remote['download_url'],
|
|
||||||
'tested' => $remote['tested'] ?? '',
|
|
||||||
'requires' => $remote['requires'] ?? '',
|
|
||||||
'requires_php' => $remote['requires_php'] ?? '',
|
|
||||||
);
|
|
||||||
|
|
||||||
$transient->response[ $this->plugin_basename ] = $update;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $transient;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provide "View details" modal content.
|
|
||||||
*
|
|
||||||
* @param false|object|array $result The result object or array.
|
|
||||||
* @param string $action The type of information being requested.
|
|
||||||
* @param object $args Plugin API arguments.
|
|
||||||
*
|
|
||||||
* @return false|object The plugin information object or false.
|
|
||||||
*/
|
|
||||||
public function provide_plugin_details( $result, string $action, object $args ) {
|
|
||||||
if ( 'plugin_information' !== $action ) {
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( empty( $args->slug ) || $args->slug !== $this->plugin_slug ) {
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$remote = $this->get_remote_data();
|
|
||||||
|
|
||||||
if ( empty( $remote['version'] ) ) {
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (object) array(
|
|
||||||
'name' => $remote['name'] ?? $this->plugin_data['Name'] ?? $this->plugin_slug,
|
|
||||||
'slug' => $remote['slug'] ?? $this->plugin_slug,
|
|
||||||
'version' => $remote['version'],
|
|
||||||
'author' => $remote['author'] ?? $this->plugin_data['Author'] ?? '',
|
|
||||||
'homepage' => $remote['homepage'] ?? $this->plugin_data['PluginURI'] ?? '',
|
|
||||||
'requires' => $remote['requires'] ?? '',
|
|
||||||
'tested' => $remote['tested'] ?? '',
|
|
||||||
'requires_php' => $remote['requires_php'] ?? '',
|
|
||||||
'sections' => array(
|
|
||||||
'description' => $remote['description'] ?? $this->plugin_data['Description'] ?? '',
|
|
||||||
'changelog' => $remote['changelog'] ?? '',
|
|
||||||
),
|
|
||||||
'download_link' => $remote['download_url'] ?? '',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get remote data with caching.
|
|
||||||
*
|
|
||||||
* @return array Remote data.
|
|
||||||
*/
|
|
||||||
private function get_remote_data(): array {
|
|
||||||
$remote = get_site_transient( $this->cache_key );
|
|
||||||
|
|
||||||
if ( false === $remote ) {
|
|
||||||
$remote = $this->fetch_json();
|
|
||||||
set_site_transient( $this->cache_key, $remote ?: array(), 6 * HOUR_IN_SECONDS );
|
|
||||||
}
|
|
||||||
|
|
||||||
return is_array( $remote ) ? $remote : array();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch JSON from remote URL.
|
|
||||||
*
|
|
||||||
* @return array Decoded JSON data.
|
|
||||||
*/
|
|
||||||
private function fetch_json(): array {
|
|
||||||
$response = wp_remote_get(
|
|
||||||
$this->json_url,
|
|
||||||
array(
|
|
||||||
'timeout' => 10,
|
|
||||||
'headers' => array(
|
|
||||||
'Accept' => 'application/json',
|
|
||||||
),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
if ( is_wp_error( $response ) ) {
|
|
||||||
return array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$code = (int) wp_remote_retrieve_response_code( $response );
|
|
||||||
if ( $code < 200 || $code >= 300 ) {
|
|
||||||
return array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$body = wp_remote_retrieve_body( $response );
|
|
||||||
$data = json_decode( $body, true );
|
|
||||||
|
|
||||||
return is_array( $data ) ? $data : array();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check compatibility.
|
|
||||||
*
|
|
||||||
* @param array $remote Remote data.
|
|
||||||
*
|
|
||||||
* @return bool True if compatible.
|
|
||||||
*/
|
|
||||||
private function is_compatible( array $remote ): bool {
|
|
||||||
if ( ! empty( $remote['requires_php'] ) ) {
|
|
||||||
if ( version_compare( PHP_VERSION, $remote['requires_php'], '<' ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! empty( $remote['requires'] ) ) {
|
|
||||||
if ( version_compare( get_bloginfo( 'version' ), $remote['requires'], '<' ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle manual cache clear via URL parameter.
|
|
||||||
*/
|
|
||||||
public function handle_cache_clear(): void {
|
|
||||||
if ( isset( $_GET['robotstxt_clear_update_cache'] ) && current_user_can( 'update_plugins' ) ) {
|
|
||||||
$this->clear_cache();
|
|
||||||
wp_safe_redirect( remove_query_arg( 'robotstxt_clear_update_cache' ) );
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clear update cache.
|
|
||||||
*/
|
|
||||||
public function clear_cache(): void {
|
|
||||||
delete_site_transient( $this->cache_key );
|
|
||||||
delete_site_transient( 'update_plugins' );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
19
uninstall.php
Normal file
19
uninstall.php
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Uninstall routine for Hello (by ROBOTSTXT).
|
||||||
|
*
|
||||||
|
* Plugin data is preserved by default. Removal only happens when the user
|
||||||
|
* explicitly enabled the "Delete plugin data on uninstall" setting.
|
||||||
|
*
|
||||||
|
* @package ROBOTSTXT_Hello
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( '1' === get_option( 'robotstxt_hello_delete_data', '' ) ) {
|
||||||
|
delete_metadata( 'user', 0, 'robotstxt_hello_dismissed_manager_notice', '', true );
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_option( 'robotstxt_hello_delete_data' );
|
||||||
13
update.json
13
update.json
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Hello (by ROBOTSTXT)",
|
|
||||||
"slug": "robotstxt-hello",
|
|
||||||
"version": "1.2.3",
|
|
||||||
"requires": "6.5",
|
|
||||||
"tested": "6.7",
|
|
||||||
"requires_php": "8.2",
|
|
||||||
"homepage": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-hello",
|
|
||||||
"download_url": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-hello/releases/download/1.2.3/robotstxt-hello-1.2.3.zip",
|
|
||||||
"author": "ROBOTSTXT",
|
|
||||||
"description": "Adds a Hello admin page for demonstration purposes. This plugin provides a simple admin interface example for WordPress development.",
|
|
||||||
"changelog": "<ul><li><strong>1.2.3</strong> – Test release for update validation.</li><li><strong>1.2.2</strong> – Removed Plugin ID (DID) from plugin header.</li><li><strong>1.2.1</strong> – Test release to validate the Auto-Updater system is working correctly.</li><li><strong>1.2.0</strong> – Added generic JSON-based Auto-Updater system. Plugin now updates automatically from git.robotstxt.es without depending on WordPress.org repository.</li><li><strong>1.1.2</strong> – Maintenance release.</li><li><strong>1.1.1</strong> – Bug fixes and improvements.</li><li><strong>1.1.0</strong> – Enhanced admin interface.</li><li><strong>1.0.0</strong> – Initial release.</li></ul>"
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue