PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 18.2
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v18.2
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / admin / class-admin-gutenberg-compatibility-notification.php

class-admin-gutenberg-compatibility-notification.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 18.2, at admin/class-admin-gutenberg-compatibility-notification.php

106 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * WPSEO plugin file.
4 *
5 * @package WPSEO\Admin
6 */
7
8 /**
9 * Handles the Gutenberg Compatibility notification showing and hiding.
10 */
11 class WPSEO_Admin_Gutenberg_Compatibility_Notification implements WPSEO_WordPress_Integration {
12
13 /**
14 * Notification ID to use.
15 *
16 * @var string
17 */
18 private $notification_id = 'wpseo-outdated-gutenberg-plugin';
19
20 /**
21 * Instance of gutenberg compatibility checker.
22 *
23 * @var WPSEO_Gutenberg_Compatibility
24 */
25 protected $compatibility_checker;
26
27 /**
28 * Instance of Yoast Notification Center.
29 *
30 * @var Yoast_Notification_Center
31 */
32 protected $notification_center;
33
34 /**
35 * WPSEO_Admin_Gutenberg_Compatibility_Notification constructor.
36 */
37 public function __construct() {
38 $this->compatibility_checker = new WPSEO_Gutenberg_Compatibility();
39 $this->notification_center = Yoast_Notification_Center::get();
40 }
41
42 /**
43 * Registers all hooks to WordPress.
44 *
45 * @return void
46 */
47 public function register_hooks() {
48 add_action( 'admin_init', [ $this, 'manage_notification' ] );
49 }
50
51 /**
52 * Manages if the notification should be shown or removed.
53 *
54 * @return void
55 */
56 public function manage_notification() {
57 /**
58 * Filter: 'yoast_display_gutenberg_compat_notification' - Allows developer to disable the Gutenberg compatibility
59 * notification.
60 *
61 * @api bool
62 */
63 $display_notification = apply_filters( 'yoast_display_gutenberg_compat_notification', true );
64
65 if (
66 ! $this->compatibility_checker->is_installed()
67 || $this->compatibility_checker->is_fully_compatible()
68 || ! $display_notification
69 ) {
70 $this->notification_center->remove_notification_by_id( $this->notification_id );
71
72 return;
73 }
74
75 $this->add_notification();
76 }
77
78 /**
79 * Adds the notification to the notificaton center.
80 *
81 * @return void
82 */
83 protected function add_notification() {
84 $level = $this->compatibility_checker->is_below_minimum() ? Yoast_Notification::ERROR : Yoast_Notification::WARNING;
85
86 $message = sprintf(
87 /* translators: %1$s expands to Yoast SEO, %2$s expands to the installed version, %3$s expands to Gutenberg */
88 __( '%1$s detected you are using version %2$s of %3$s, please update to the latest version to prevent compatibility issues.', 'wordpress-seo' ),
89 'Yoast SEO',
90 $this->compatibility_checker->get_installed_version(),
91 'Gutenberg'
92 );
93
94 $notification = new Yoast_Notification(
95 $message,
96 [
97 'id' => $this->notification_id,
98 'type' => $level,
99 'priority' => 1,
100 ]
101 );
102
103 $this->notification_center->add_notification( $notification );
104 }
105 }
106