$current_version, 'main_plugin_file' => $main_plugin_file, 'plugin_slug' => $plugin_slug, 'time' => current_time('mysql') ]; // URL to your Gitea releases API $gitea_api_url = 'https://repo.anhonesthost.net/api/v1/repos/wp-plugins/fourth-wall-embed-wp/releases/latest'; // Use cURL to fetch release data $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $gitea_api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json']); curl_setopt($ch, CURLOPT_USERAGENT, 'WordPress/Fourth-Wall-Plugin-Updater'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $response = curl_exec($ch); curl_close($ch); if ($response) { $release_info = json_decode($response); // Update debug info with latest version $debug_data['latest_version'] = $release_info->tag_name ?? 'Not found'; $debug_data['response'] = substr(print_r($release_info, true), 0, 1000); update_option('fwembed_update_debug', $debug_data); // Get latest version from tag name $latest_version = $release_info->tag_name; // Simple version comparison - we want any update to trigger if version is different if ($current_version != $latest_version) { // Get the download URL for the ZIP $download_url = null; if (isset($release_info->assets) && is_array($release_info->assets)) { foreach ($release_info->assets as $asset) { if (isset($asset->name) && strpos($asset->name, '.zip') !== false) { $download_url = $asset->browser_download_url; break; } } } // Hook into WordPress update system add_filter('site_transient_update_plugins', function($transient) use ($plugin_slug, $current_version, $latest_version, $download_url) { // Initialize if needed if (!is_object($transient)) { $transient = new stdClass(); } if (empty($transient->checked)) { $transient->checked = []; } // Add our plugin to the checked list $transient->checked[$plugin_slug] = $current_version; if (empty($transient->response)) { $transient->response = []; } // Add to the update list $transient->response[$plugin_slug] = (object) [ 'id' => 'fourthwall-store-embed', 'slug' => 'fourthwall-store-embed', 'plugin' => $plugin_slug, 'new_version' => $latest_version, 'url' => 'https://repo.anhonesthost.net/wp-plugins/fourth-wall-embed-wp', 'package' => $download_url, 'icons' => [], 'banners' => [], 'tested' => '6.4.2', 'requires' => '5.0', 'compatibility' => new stdClass(), ]; return $transient; }); } } } add_action('admin_init', 'fwembed_check_for_updates'); // Add admin notice for debugging add_action('admin_notices', function() { if (current_user_can('manage_options')) { $debug = get_option('fwembed_update_debug', []); echo '
Update Debug: Current: ' . esc_html($debug['current_version'] ?? 'N/A') . ', Latest: ' . esc_html($debug['latest_version'] ?? 'N/A') . '
'; // Detailed debug info with query param if (isset($_GET['fwembed_debug'])) { echo '' . esc_html(print_r($debug, true)) . ''; } echo '
Embed Fourthwall Store in WordPress.
', 'changelog' => '' . esc_html($changelog) . '', 'installation' => '
Upload the plugin to your WordPress site and activate it.
' ]; // Download link $download_url = null; if (isset($release_info->assets) && is_array($release_info->assets)) { foreach ($release_info->assets as $asset) { if (isset($asset->name) && strpos($asset->name, '.zip') !== false) { $download_url = $asset->browser_download_url; break; } } } $plugin_info->download_link = $download_url; return $plugin_info; }, 10, 3);