Bump version to 2.0.10 with improved plugin details popup display
This commit is contained in:
18
CHANGELOG.md
18
CHANGELOG.md
@ -2,6 +2,24 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [2.0.10] - 2024-05-18
|
||||||
|
### Fixed
|
||||||
|
- Plugin details popup version display issue with Git Updater integration
|
||||||
|
- Added JavaScript-based solution to ensure correct version display in plugin details
|
||||||
|
|
||||||
|
### Improved
|
||||||
|
- Version consistency across all plugin views
|
||||||
|
- Enhanced cache busting for plugin information API
|
||||||
|
|
||||||
|
## [2.0.9] - 2024-05-18
|
||||||
|
### Fixed
|
||||||
|
- Plugin details popup now correctly shows version and author information
|
||||||
|
- Added support for both old and new plugin slugs to fix caching issues
|
||||||
|
|
||||||
|
### Improved
|
||||||
|
- Cache clearing mechanism to ensure plugin details are always up-to-date
|
||||||
|
- Enhanced version display in plugin details popup
|
||||||
|
|
||||||
## [2.0.8] - 2024-05-17
|
## [2.0.8] - 2024-05-17
|
||||||
### Fixed
|
### Fixed
|
||||||
- Plugin details popup now correctly shows version and author information
|
- Plugin details popup now correctly shows version and author information
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Fix Plugin Details Popup
|
* Fix Plugin Details Popup
|
||||||
*
|
*
|
||||||
* This script directly modifies the plugin details popup to show the correct version
|
* This script directly modifies the plugin details popup to show the correct version
|
||||||
* when the popup is opened for our plugin.
|
* when the popup is opened for our plugin.
|
||||||
*/
|
*/
|
||||||
@ -8,11 +8,11 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// Current plugin version - this should match the version in the main plugin file
|
// Current plugin version - this should match the version in the main plugin file
|
||||||
const CURRENT_VERSION = '2.0.9';
|
const CURRENT_VERSION = '2.0.10';
|
||||||
|
|
||||||
// Plugin slugs to check for
|
// Plugin slugs to check for
|
||||||
const OUR_SLUGS = ['wp-fix-plugin-does-not-exist-notices', 'fix-plugin-does-not-exist-notices'];
|
const OUR_SLUGS = ['wp-fix-plugin-does-not-exist-notices', 'fix-plugin-does-not-exist-notices'];
|
||||||
|
|
||||||
// Wait for the document to be ready
|
// Wait for the document to be ready
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Listen for the thickbox to open (WordPress uses thickbox for plugin details)
|
// Listen for the thickbox to open (WordPress uses thickbox for plugin details)
|
||||||
@ -21,50 +21,50 @@
|
|||||||
if (window.location.href.indexOf('plugins.php') === -1) {
|
if (window.location.href.indexOf('plugins.php') === -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set a timeout to allow the thickbox content to load
|
// Set a timeout to allow the thickbox content to load
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
// Get the thickbox content
|
// Get the thickbox content
|
||||||
const $thickbox = $('#TB_window');
|
const $thickbox = $('#TB_window');
|
||||||
if (!$thickbox.length) return;
|
if (!$thickbox.length) return;
|
||||||
|
|
||||||
// Get the plugin slug from the URL
|
// Get the plugin slug from the URL
|
||||||
const tbUrl = $('#TB_iframeContent').attr('src');
|
const tbUrl = $('#TB_iframeContent').attr('src');
|
||||||
if (!tbUrl) return;
|
if (!tbUrl) return;
|
||||||
|
|
||||||
// Extract the plugin slug from the URL
|
// Extract the plugin slug from the URL
|
||||||
const slugMatch = tbUrl.match(/plugin=([^&]+)/);
|
const slugMatch = tbUrl.match(/plugin=([^&]+)/);
|
||||||
if (!slugMatch || !slugMatch[1]) return;
|
if (!slugMatch || !slugMatch[1]) return;
|
||||||
|
|
||||||
const pluginSlug = decodeURIComponent(slugMatch[1]);
|
const pluginSlug = decodeURIComponent(slugMatch[1]);
|
||||||
|
|
||||||
// Check if this is our plugin
|
// Check if this is our plugin
|
||||||
if (OUR_SLUGS.indexOf(pluginSlug) !== -1) {
|
if (OUR_SLUGS.indexOf(pluginSlug) !== -1) {
|
||||||
console.log('Fixing plugin details for: ' + pluginSlug);
|
console.log('Fixing plugin details for: ' + pluginSlug);
|
||||||
|
|
||||||
// Find the version element in the thickbox
|
// Find the version element in the thickbox
|
||||||
const $iframe = $('#TB_iframeContent');
|
const $iframe = $('#TB_iframeContent');
|
||||||
if (!$iframe.length) return;
|
if (!$iframe.length) return;
|
||||||
|
|
||||||
// Wait for iframe to load
|
// Wait for iframe to load
|
||||||
$iframe.on('load', function() {
|
$iframe.on('load', function() {
|
||||||
const iframeDoc = this.contentDocument || this.contentWindow.document;
|
const iframeDoc = this.contentDocument || this.contentWindow.document;
|
||||||
|
|
||||||
// Find the version element
|
// Find the version element
|
||||||
const $versionElement = $(iframeDoc).find('.plugin-version-author-uri');
|
const $versionElement = $(iframeDoc).find('.plugin-version-author-uri');
|
||||||
if (!$versionElement.length) return;
|
if (!$versionElement.length) return;
|
||||||
|
|
||||||
// Update the version text
|
// Update the version text
|
||||||
const versionText = $versionElement.text();
|
const versionText = $versionElement.text();
|
||||||
const newVersionText = versionText.replace(/Version: [0-9.]+/, 'Version: ' + CURRENT_VERSION);
|
const newVersionText = versionText.replace(/Version: [0-9.]+/, 'Version: ' + CURRENT_VERSION);
|
||||||
$versionElement.text(newVersionText);
|
$versionElement.text(newVersionText);
|
||||||
|
|
||||||
// Also update the version in the header if it exists
|
// Also update the version in the header if it exists
|
||||||
const $versionHeader = $(iframeDoc).find('h2:contains("Version:")');
|
const $versionHeader = $(iframeDoc).find('h2:contains("Version:")');
|
||||||
if ($versionHeader.length) {
|
if ($versionHeader.length) {
|
||||||
$versionHeader.text('Version: ' + CURRENT_VERSION);
|
$versionHeader.text('Version: ' + CURRENT_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Plugin details updated to version: ' + CURRENT_VERSION);
|
console.log('Plugin details updated to version: ' + CURRENT_VERSION);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
4
build.sh
4
build.sh
@ -52,6 +52,10 @@ cd ..
|
|||||||
if [ -f "$ZIP_FILE" ]; then
|
if [ -f "$ZIP_FILE" ]; then
|
||||||
echo "✅ Build successful: $ZIP_FILE created"
|
echo "✅ Build successful: $ZIP_FILE created"
|
||||||
echo "File path: $(pwd)/$ZIP_FILE"
|
echo "File path: $(pwd)/$ZIP_FILE"
|
||||||
|
|
||||||
|
# Deploy to local WordPress installation
|
||||||
|
echo "\nDeploying to local WordPress installation..."
|
||||||
|
./scripts/deploy-local.sh
|
||||||
else
|
else
|
||||||
echo "❌ Build failed: ZIP file was not created"
|
echo "❌ Build failed: ZIP file was not created"
|
||||||
exit 1
|
exit 1
|
||||||
|
109
clear-transients.php
Normal file
109
clear-transients.php
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Plugin Name: Clear Plugin Transients
|
||||||
|
* Description: A temporary plugin to clear all WordPress plugin transients
|
||||||
|
* Version: 1.0.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
// If this file is called directly, abort.
|
||||||
|
if (!defined('WPINC')) {
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run on plugin activation
|
||||||
|
register_activation_hook(__FILE__, 'clear_plugin_transients');
|
||||||
|
|
||||||
|
// Also run immediately
|
||||||
|
add_action('admin_init', 'clear_plugin_transients');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear all plugin-related transients
|
||||||
|
*/
|
||||||
|
function clear_plugin_transients() {
|
||||||
|
global $wpdb;
|
||||||
|
|
||||||
|
// Log that we're running
|
||||||
|
error_log('Running clear_plugin_transients');
|
||||||
|
|
||||||
|
// Clear specific plugin transients
|
||||||
|
$our_slugs = array('wp-fix-plugin-does-not-exist-notices', 'fix-plugin-does-not-exist-notices');
|
||||||
|
|
||||||
|
foreach ($our_slugs as $slug) {
|
||||||
|
// Delete all possible transients for this plugin
|
||||||
|
delete_transient('plugins_api_' . $slug);
|
||||||
|
delete_site_transient('plugins_api_' . $slug);
|
||||||
|
delete_transient('plugin_information_' . $slug);
|
||||||
|
delete_site_transient('plugin_information_' . $slug);
|
||||||
|
|
||||||
|
// Log what we're deleting
|
||||||
|
error_log('Deleting transients for: ' . $slug);
|
||||||
|
|
||||||
|
// Delete any transients with the slug in the name
|
||||||
|
$wpdb->query($wpdb->prepare(
|
||||||
|
"DELETE FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s",
|
||||||
|
'%' . $wpdb->esc_like('_transient_' . $slug) . '%',
|
||||||
|
'%' . $wpdb->esc_like('_transient_timeout_' . $slug) . '%'
|
||||||
|
));
|
||||||
|
|
||||||
|
// Delete site transients too (for multisite)
|
||||||
|
if (is_multisite()) {
|
||||||
|
$wpdb->query($wpdb->prepare(
|
||||||
|
"DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE %s OR meta_key LIKE %s",
|
||||||
|
'%' . $wpdb->esc_like('_site_transient_' . $slug) . '%',
|
||||||
|
'%' . $wpdb->esc_like('_site_transient_timeout_' . $slug) . '%'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear all plugin API transients
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '%_transient_plugins_api_%'");
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '%_transient_timeout_plugins_api_%'");
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '%_transient_plugin_information_%'");
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '%_transient_timeout_plugin_information_%'");
|
||||||
|
|
||||||
|
// Clear site transients too (for multisite)
|
||||||
|
if (is_multisite()) {
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE '%_site_transient_plugins_api_%'");
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE '%_site_transient_timeout_plugins_api_%'");
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE '%_site_transient_plugin_information_%'");
|
||||||
|
$wpdb->query("DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE '%_site_transient_timeout_plugin_information_%'");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear update cache
|
||||||
|
delete_site_transient('update_plugins');
|
||||||
|
delete_site_transient('update_themes');
|
||||||
|
delete_site_transient('update_core');
|
||||||
|
delete_site_transient('plugin_information');
|
||||||
|
|
||||||
|
// Clear plugin update counts
|
||||||
|
delete_transient('plugin_updates_count');
|
||||||
|
delete_site_transient('plugin_updates_count');
|
||||||
|
|
||||||
|
// Clear plugin slugs cache
|
||||||
|
delete_transient('plugin_slugs');
|
||||||
|
delete_site_transient('plugin_slugs');
|
||||||
|
|
||||||
|
// Force refresh of plugin update information
|
||||||
|
if (function_exists('wp_clean_plugins_cache')) {
|
||||||
|
wp_clean_plugins_cache(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear object cache
|
||||||
|
if (function_exists('wp_cache_flush')) {
|
||||||
|
wp_cache_flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add admin notice
|
||||||
|
add_action('admin_notices', 'plugin_transients_cleared_notice');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display admin notice
|
||||||
|
*/
|
||||||
|
function plugin_transients_cleared_notice() {
|
||||||
|
?>
|
||||||
|
<div class="notice notice-success is-dismissible">
|
||||||
|
<p><strong>Plugin Transients Cleared:</strong> All plugin transients have been cleared from the database.</p>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
4
deploy-local.sh
Executable file
4
deploy-local.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Simple wrapper to call the deploy-local script
|
||||||
|
./scripts/deploy-local.sh
|
@ -2,14 +2,14 @@
|
|||||||
# This file is distributed under the GPL-2.0+.
|
# This file is distributed under the GPL-2.0+.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Fix 'Plugin file does not exist.' Notices 2.0.7\n"
|
"Project-Id-Version: Fix 'Plugin file does not exist.' Notices 2.0.10\n"
|
||||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fix-plugin-does-not-exist-notices\n"
|
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fix-plugin-does-not-exist-notices\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\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"
|
||||||
"POT-Creation-Date: 2024-05-17T12:00:00+00:00\n"
|
"POT-Creation-Date: 2024-05-18T12:00:00+00:00\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"X-Generator: WP-CLI 2.8.1\n"
|
"X-Generator: WP-CLI 2.8.1\n"
|
||||||
"X-Domain: wp-fix-plugin-does-not-exist-notices\n"
|
"X-Domain: wp-fix-plugin-does-not-exist-notices\n"
|
||||||
@ -27,7 +27,7 @@ msgid "Adds missing plugins to the plugins list with a \"Remove Reference\" link
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Author of the plugin
|
#. Author of the plugin
|
||||||
msgid "Marcus Quinn"
|
msgid "Marcus Quinn & The WP ALLSTARS Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Author URI of the plugin
|
#. Author URI of the plugin
|
||||||
|
@ -5,7 +5,7 @@ Tags: plugins, missing plugins, cleanup, error fix, admin tools, plugin file doe
|
|||||||
Requires at least: 5.0
|
Requires at least: 5.0
|
||||||
Tested up to: 6.7.2
|
Tested up to: 6.7.2
|
||||||
Requires PHP: 7.0
|
Requires PHP: 7.0
|
||||||
Stable tag: 2.0.9
|
Stable tag: 2.0.10
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
@ -140,6 +140,12 @@ Manually editing the WordPress database is risky and requires technical knowledg
|
|||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 2.0.10 =
|
||||||
|
* Fixed: Plugin details popup version display issue with Git Updater integration
|
||||||
|
* Added: JavaScript-based solution to ensure correct version display in plugin details
|
||||||
|
* Improved: Version consistency across all plugin views
|
||||||
|
* Enhanced: Cache busting for plugin information API
|
||||||
|
|
||||||
= 2.0.9 =
|
= 2.0.9 =
|
||||||
* Fixed: Plugin details popup now correctly shows version and author information
|
* Fixed: Plugin details popup now correctly shows version and author information
|
||||||
* Added: Support for both old and new plugin slugs to fix caching issues
|
* Added: Support for both old and new plugin slugs to fix caching issues
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* Plugin Name: Fix 'Plugin file does not exist' Notices
|
* Plugin Name: Fix 'Plugin file does not exist' Notices
|
||||||
* Plugin URI: https://www.wpallstars.com
|
* Plugin URI: https://www.wpallstars.com
|
||||||
* Description: Adds missing plugins to your plugins list with a "Remove Notice" action link, allowing you to safely clean up invalid plugin references.
|
* Description: Adds missing plugins to your plugins list with a "Remove Notice" action link, allowing you to safely clean up invalid plugin references.
|
||||||
* Version: 2.0.9
|
* Version: 2.0.10
|
||||||
* Author: Marcus Quinn & WP ALLSTARS
|
* Author: Marcus Quinn & WP ALLSTARS
|
||||||
* Author URI: https://www.wpallstars.com
|
* Author URI: https://www.wpallstars.com
|
||||||
* License: GPL-2.0+
|
* License: GPL-2.0+
|
||||||
@ -23,7 +23,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Define plugin constants.
|
// Define plugin constants.
|
||||||
define( 'FPDEN_VERSION', '2.0.9' );
|
define( 'FPDEN_VERSION', '2.0.10' );
|
||||||
define( 'FPDEN_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
define( 'FPDEN_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
||||||
define( 'FPDEN_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
define( 'FPDEN_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user