Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Premium: Remove install/activate nag for Yoast SEO when using both as mu-plugins #18706

Open
fiskhandlarn opened this issue Jul 19, 2022 · 5 comments

Comments

@fiskhandlarn
Copy link

Is your feature request related to a problem? Please describe.

when we run yoast/wordpress-seo and yoast/wordpress-seo-premium as mu-plugins (courtesy of roots/bedrock-autoloader) we still get the nag to activate the base plugin:

Yoast SEO 19.3 must be installed and activated in order to use Yoast SEO Premium.

Describe the solution you'd like

this is a patch for wordpress-seo-premium/src/addon-installer.php i have tried locally, please consider adding it to yoast/wordpress-seo-premium:

--- /public/mu-plugins/wordpress-seo-premium/src/addon-installer.php	Tue Jul 12 10:21:58 2022
+++ /public/mu-plugins/wordpress-seo-premium2/src/addon-installer.php	Tue Jul 19 14:30:18 2022
@@ -133,7 +133,9 @@
 	protected function get_notification_action() {
 		$minimum_version_met = \version_compare( $this->yoast_seo_version, self::MINIMUM_YOAST_SEO_VERSION . '-RC0', '>=' );
 		$network_active      = \is_plugin_active_for_network( \WPSEO_PREMIUM_BASENAME );
-		$yoast_seo_active    = ( $network_active ) ? \is_plugin_active_for_network( $this->yoast_seo_file ) : \is_plugin_active( $this->yoast_seo_file );
+		$yoast_seo_active    =
+            ( false !== strpos( $this->yoast_seo_dir, \WPMU_PLUGIN_DIR ) ) ||
+            ( ( $network_active ) ? \is_plugin_active_for_network( $this->yoast_seo_file ) : \is_plugin_active( $this->yoast_seo_file ) );
 
 		if ( $minimum_version_met && $yoast_seo_active ) {
 			return false;
@@ -300,6 +302,18 @@
 				$this->yoast_seo_dir     = \WP_PLUGIN_DIR . '/' . \dirname( $file );
 			}
 		}
+
+        // Make sure Yoast SEO isn't already installed in the mu-plugins directory.
+        $file = \WPMU_PLUGIN_DIR . DIRECTORY_SEPARATOR . $this->yoast_seo_file;
+        $plugin = @get_plugin_data($file);
+        if (
+            isset( $plugin['TextDomain'] ) && $plugin['TextDomain'] === 'wordpress-seo'
+            && isset( $plugin['Name'] ) && $plugin['Name'] === 'Yoast SEO'
+        ) {
+            // $this->yoast_seo_file is already correct, keep it as it is
+            $this->yoast_seo_version = isset( $plugin['Version'] ) ? $plugin['Version'] : '0';
+            $this->yoast_seo_dir     = \dirname( $file );
+        }
 	}
 
 	/**

Why do you think this feature is something we should consider for the Yoast SEO plugins?

some people like to use mu-plugins to streamline all the requirements without having to manually activate and keep databases in sync.

@fiskhandlarn
Copy link
Author

also: wordpress-seo-premium/src/addon-installer.php already have is_yoast_seo_up_to_date() which checks WPSEO_VERSION and could therefore be used instead of checking against $this->yoast_seo_version (derived from the wordpress-seo/wp-seo.php only if it's in the plugins folder).

@trsteel88
Copy link

+1 for this.

@trsteel88
Copy link

The other approach here could be that the Wordpress SEO plugin could just have a filter to provide the version to other plugins.

e.g. in the non premium version:

add_filter('wp_seo_current_version', function($version) {
    return '1.1.1';
}, 10, 1);

Then in the premium plugin the version would be checked with:

$value = apply_filters( 'wp_seo_current_version', '0');

If the plugin is installed and active, the version would be returned as '1.1.1'. If it was not installed the $value would be '0'.

This would mean a version would be returned regardless of whether it's a plugin or mu-plugin.

Only caveat here is that another plugin could fake the version by returning a value from this filter (but why would they?)

@juhojama
Copy link

juhojama commented Feb 9, 2024

+1

@fiskhandlarn
Copy link
Author

bump

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants