10, 'headers' => array('Accept' => 'application/json'), )); if (is_wp_error($response)) { // Kurz erneut versuchen statt für 12 Stunden zu sperren set_transient(WP_MULTI_UPDATE_CACHE_KEY, false, HOUR_IN_SECONDS); return false; } $body = wp_remote_retrieve_body($response); $releases = json_decode($body, true); if (empty($releases) || !is_array($releases)) { set_transient(WP_MULTI_UPDATE_CACHE_KEY, false, HOUR_IN_SECONDS); return false; } usort($releases, function ($a, $b) { $a_date = !empty($a['created_at']) ? $a['created_at'] : ''; $b_date = !empty($b['created_at']) ? $b['created_at'] : ''; return strtotime($b_date) - strtotime($a_date); }); $latest = false; foreach ($releases as $release) { if (!empty($release['prerelease'])) { continue; } if (!empty($release['tag_name'])) { // Nur Download-URLs auf dem erwarteten Host akzeptieren $html_url = !empty($release['html_url']) ? $release['html_url'] : ''; $release_host = $html_url ? wp_parse_url($html_url, PHP_URL_HOST) : ''; $latest = array( 'version' => ltrim($release['tag_name'], 'v'), 'url' => ($release_host === WP_MULTI_UPDATE_HOST) ? esc_url_raw($html_url) : 'https://' . WP_MULTI_UPDATE_HOST . '/M_Viper/' . WP_MULTI_UPDATE_REPO . '/releases', ); break; } } set_transient(WP_MULTI_UPDATE_CACHE_KEY, $latest, 12 * HOUR_IN_SECONDS); return $latest; } // Liest die installierte Version aus dem Plugin-Header function wp_multi_get_installed_version() { if (!function_exists('get_plugin_data')) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $data = get_plugin_data(WP_MULTI_FILE, false, false); return !empty($data['Version']) ? $data['Version'] : '0'; } // Dashboard-Widget registrieren function wp_multi_add_update_dashboard_widget() { wp_add_dashboard_widget( 'wp_multi_update_widget', __('WP Multi - Update-Status', 'wp-multi'), 'wp_multi_update_dashboard_widget_content' ); } add_action('wp_dashboard_setup', 'wp_multi_add_update_dashboard_widget'); // Zeigt im Dashboard-Widget an, ob WP Multi aktuell ist oder ein Update verfügbar ist function wp_multi_update_dashboard_widget_content() { $installed_version = wp_multi_get_installed_version(); $latest = wp_multi_get_latest_release(); echo '
' . esc_html__('Installierte Version:', 'wp-multi') . ' ' . esc_html($installed_version) . '
'; if (!$latest || empty($latest['version'])) { echo '' . esc_html__('Der Update-Server konnte nicht erreicht werden.', 'wp-multi') . '
'; return; } if (version_compare($latest['version'], $installed_version, '>')) { echo '' . esc_html__('Update verfügbar:', 'wp-multi') . ' ' . esc_html($latest['version']) . '
'; echo '' . esc_html__('Update herunterladen', 'wp-multi') . '
'; } else { echo '' . esc_html__('WP Multi ist aktuell.', 'wp-multi') . '
'; } } // Admin-Hinweis anzeigen, wenn ein Update verfügbar ist function wp_multi_update_admin_notice() { if (!current_user_can('manage_options') || !is_admin()) { return; } $installed_version = wp_multi_get_installed_version(); $latest = wp_multi_get_latest_release(); if (!$latest || empty($latest['version'])) { return; } if (version_compare($latest['version'], $installed_version, '>')) { printf( '%1$s %3$s