Hide Yoast “You Just Deleted Item, Get Premium” Nag

Screen Shot 2021-02-27 at 12 24 37 PM

How to Hide Yoast’s “You Just Deleted a product, Buy Premium” Nags?

The Nag Message: Make sure you don’t miss the traffic! You just deleted a Product. Search engines and other websites can still send traffic to your deleted post. To ensure that your visitors don’t get a 404 error when they click on a URL that no longer works, you should create a redirect. You can easily create such redirects with Yoast SEO Premium.

Since Yoast refuses to cut back on the the upsell spam, here’s a snippet to remove all the “You trashed a thing! Buy our premium plugin!” notices that they clutter up the admin dashbaord with. Also recommend looking into the Hide SEO Bloat plugin which basically exists solely to remove all the crap that Yoast adds all over your site. Anyway, put this code in your functions.php (or use something like Code Snippets):

/**
 * Unbind Yoast's awful constant upsell notifications whenever you trash/delete anything
 *
 * @ref: https://github.com/Yoast/wordpress-seo/blob/0742e9b6ba4c0d6ae9d65223267a106b92a6a4a1/admin/watchers/class-slug-change-watcher.php#L18
 * @see: https://wordpress.stackexchange.com/a/352509
 */
function unbind_yoast_slug_change_watchers()
{
  $priority = 10;
  $actions_methods = [
    'wp_trash_post'        => 'detect_post_trash',
    'before_delete_post'   => 'detect_post_delete',
    'delete_term_taxonomy' => 'detect_term_delete',
  ];
  
  global $wp_filter;
  foreach ($actions_methods as $action => $method)
  {
    if (isset($wp_filter[$action]->callbacks[$priority]) and ( ! empty($wp_filter[$action]->callbacks[$priority])))
    {
      $wp_filter[$action]->callbacks[$priority] = array_filter($wp_filter[$action]->callbacks[$priority], function($v, $k) use ($method) {
        return (stripos($k, $method) === false);
      }, ARRAY_FILTER_USE_BOTH );
    }
  }
}
add_action('plugins_loaded', 'unbind_yoast_slug_change_watchers', 20);

Alternative

add_action( 'admin_init', function() {
if ( class_exists( 'Yoast_Notification_Center' ) ) {
$yoast_nc = Yoast_Notification_Center::get();
remove_action( 'admin_notices', array( $yoast_nc, 'display_notifications' ) );
remove_action( 'all_admin_notices', array( $yoast_nc, 'display_notifications' ) );
}
});

Alternative: Hide SEO Bloat

Hide SEO Bloat

https://gist.github.com/zytzagoo/05743e970a3a717d23d7

Related Posts