wp-rules.php aktualisiert
This commit is contained in:
107
wp-rules.php
107
wp-rules.php
@@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* Plugin Name: Multi Rules
|
* Plugin Name: Multi Rules
|
||||||
* Description: Erstellt einen anpassbaren Regelbereich mit Tabs, Shortcode [meine_regeln] sowie Styling- und Import/Export-Funktionen.
|
* Description: Erstellt einen anpassbaren Regelbereich mit Tabs, Shortcode [meine_regeln] sowie Styling- und Import/Export-Funktionen.
|
||||||
* Version: 1.2
|
* Version: 1.3
|
||||||
* Author: M_Viper
|
* Author: M_Viper
|
||||||
* Plugin URI: https://git.viper.ipv64.net/M_Viper/Multi-Rules/releases
|
* Plugin URI: https://git.viper.ipv64.net/M_Viper/Multi-Rules/releases
|
||||||
* Author URI: https://m-viper.de
|
* Author URI: https://m-viper.de
|
||||||
@@ -21,6 +21,111 @@ if (!defined('ABSPATH')) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multi Rules - Update-Notice (Gitea Releases)
|
||||||
|
* Einfügen: direkt nach dem ABSPATH-Check oben
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Plugin-Version aus Header lesen
|
||||||
|
function mrp_get_plugin_version() {
|
||||||
|
if ( ! function_exists( 'get_plugin_data' ) ) {
|
||||||
|
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
||||||
|
}
|
||||||
|
$plugin_data = get_plugin_data( __FILE__ );
|
||||||
|
return $plugin_data['Version'] ?? '0.0.0';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cache manuell leeren (Button "Jetzt neu prüfen")
|
||||||
|
function mrp_clear_update_cache() {
|
||||||
|
if ( isset( $_GET['mrp_clear_cache'] ) && current_user_can( 'manage_options' ) ) {
|
||||||
|
check_admin_referer( 'mrp_clear_cache_action' );
|
||||||
|
delete_transient( 'mrp_latest_release' );
|
||||||
|
wp_redirect( admin_url( 'plugins.php' ) );
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add_action( 'admin_init', 'mrp_clear_update_cache' );
|
||||||
|
|
||||||
|
// Neueste Release-Infos von Gitea holen
|
||||||
|
function mrp_get_latest_release_info( $force_refresh = false ) {
|
||||||
|
$transient_key = 'mrp_latest_release';
|
||||||
|
|
||||||
|
if ( $force_refresh ) {
|
||||||
|
delete_transient( $transient_key );
|
||||||
|
}
|
||||||
|
|
||||||
|
$release_info = get_transient( $transient_key );
|
||||||
|
|
||||||
|
if ( false === $release_info ) {
|
||||||
|
$response = wp_remote_get(
|
||||||
|
'https://git.viper.ipv64.net/api/v1/repos/M_Viper/Multi-Rules/releases/latest',
|
||||||
|
array( 'timeout' => 10 )
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( ! is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) {
|
||||||
|
$body = wp_remote_retrieve_body( $response );
|
||||||
|
$data = json_decode( $body, true );
|
||||||
|
|
||||||
|
if ( $data && isset( $data['tag_name'] ) ) {
|
||||||
|
$tag = ltrim( (string) $data['tag_name'], 'vV' );
|
||||||
|
|
||||||
|
$release_info = array(
|
||||||
|
'version' => $tag,
|
||||||
|
'download_url' => $data['zipball_url'] ?? '',
|
||||||
|
'notes' => $data['body'] ?? '',
|
||||||
|
'published_at' => $data['published_at'] ?? '',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Cache für 6 Stunden
|
||||||
|
set_transient( $transient_key, $release_info, 6 * HOUR_IN_SECONDS );
|
||||||
|
} else {
|
||||||
|
// Kurzzeit-Cache bei fehlerhafter Antwort
|
||||||
|
set_transient( $transient_key, array(), HOUR_IN_SECONDS );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Fehler beim Abruf -> Kurzzeit-Cache
|
||||||
|
set_transient( $transient_key, array(), HOUR_IN_SECONDS );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $release_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Admin-Notice anzeigen wenn Update vorhanden
|
||||||
|
function mrp_show_update_notice() {
|
||||||
|
if ( ! current_user_can( 'manage_options' ) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$current_version = mrp_get_plugin_version();
|
||||||
|
$latest_release = mrp_get_latest_release_info();
|
||||||
|
|
||||||
|
if ( ! empty( $latest_release['version'] ) && version_compare( $current_version, $latest_release['version'], '<' ) ) {
|
||||||
|
$refresh_url = wp_nonce_url( admin_url( 'plugins.php?mrp_clear_cache=1' ), 'mrp_clear_cache_action' );
|
||||||
|
?>
|
||||||
|
<div class="notice notice-warning is-dismissible">
|
||||||
|
<h3>Multi Rules – Update verfügbar</h3>
|
||||||
|
<p>
|
||||||
|
Installiert: <strong><?php echo esc_html( $current_version ); ?></strong><br>
|
||||||
|
Neueste Version: <strong><?php echo esc_html( $latest_release['version'] ); ?></strong>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="<?php echo esc_url( $latest_release['download_url'] ); ?>" class="button button-primary" target="_blank" rel="noreferrer noopener">
|
||||||
|
Update herunterladen
|
||||||
|
</a>
|
||||||
|
<a href="https://git.viper.ipv64.net/M_Viper/Multi-Rules/releases" class="button" target="_blank" rel="noreferrer noopener">
|
||||||
|
Release Notes
|
||||||
|
</a>
|
||||||
|
<a href="<?php echo esc_url( $refresh_url ); ?>" class="button">
|
||||||
|
Jetzt neu prüfen
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add_action( 'admin_notices', 'mrp_show_update_notice' );
|
||||||
|
|
||||||
// 1. Backend-Menüpunkt hinzufügen
|
// 1. Backend-Menüpunkt hinzufügen
|
||||||
function mrp_add_admin_menu() {
|
function mrp_add_admin_menu() {
|
||||||
add_menu_page(
|
add_menu_page(
|
||||||
|
|||||||
Reference in New Issue
Block a user