PluginProbe ʕ •ᴥ•ʔ
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 27.7
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v27.7
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 19.1 19.10 19.11 19.12 19.13 19.14 19.2 19.3 19.4 19.5 19.5.1 19.6 19.6.1 19.7 19.7.1 19.7.2 19.8 19.9 20.0 20.1 20.10 20.11 20.12 20.13 20.2 20.2.1 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21.0 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.8.1 21.9 21.9.1 22.0 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23.0 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24.0 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.8.1 24.9 25.0 25.1 25.2 25.3 25.3.1 25.4 25.5 25.6 25.7 25.8 25.9 26.0 26.1 26.1.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27.0 27.1 27.1.1 27.2 27.3 27.4
wordpress-seo / admin / class-config.php
wordpress-seo / admin Last commit date
ajax 2 years ago capabilities 1 year ago endpoints 2 years ago exceptions 3 months ago filters 3 months ago formatter 1 year ago google_search_console 3 months ago import 3 months ago listeners 8 years ago menu 3 months ago metabox 4 weeks ago notifiers 3 months ago pages 3 months ago roles 3 months ago services 3 months ago statistics 3 months ago taxonomy 3 months ago tracking 3 months ago views 3 months ago watchers 3 months ago admin-settings-changed-listener.php 2 years ago ajax.php 3 months ago class-admin-asset-analysis-worker-location.php 3 months ago class-admin-asset-dev-server-location.php 3 months ago class-admin-asset-location.php 8 years ago class-admin-asset-manager.php 3 months ago class-admin-asset-seo-location.php 4 years ago class-admin-editor-specific-replace-vars.php 3 months ago class-admin-gutenberg-compatibility-notification.php 3 months ago class-admin-help-panel.php 3 months ago class-admin-init.php 3 months ago class-admin-recommended-replace-vars.php 2 years ago class-admin-user-profile.php 7 months ago class-admin-utils.php 3 months ago class-admin.php 3 months ago class-asset.php 1 year ago class-bulk-description-editor-list-table.php 3 months ago class-bulk-editor-list-table.php 3 months ago class-bulk-title-editor-list-table.php 3 months ago class-collector.php 1 year ago class-config.php 3 months ago class-database-proxy.php 3 months ago class-export.php 3 months ago class-expose-shortlinks.php 7 months ago class-gutenberg-compatibility.php 3 weeks ago class-meta-columns.php 3 months ago class-my-yoast-proxy.php 3 months ago class-option-tab.php 4 years ago class-option-tabs-formatter.php 3 months ago class-option-tabs.php 2 years ago class-paper-presenter.php 5 years ago class-plugin-availability.php 3 months ago class-plugin-conflict.php 2 years ago class-premium-popup.php 1 year ago class-premium-upsell-admin-block.php 3 months ago class-primary-term-admin.php 3 months ago class-product-upsell-notice.php 3 months ago class-remote-request.php 2 years ago class-schema-person-upgrade-notification.php 3 months ago class-suggested-plugins.php 3 months ago class-wincher-dashboard-widget.php 3 months ago class-yoast-columns.php 3 months ago class-yoast-dashboard-widget.php 3 months ago class-yoast-form.php 3 months ago class-yoast-input-validation.php 3 months ago class-yoast-network-admin.php 3 months ago class-yoast-network-settings-api.php 3 months ago class-yoast-notification-center.php 3 months ago class-yoast-notification.php 3 months ago class-yoast-notifications.php 3 months ago class-yoast-plugin-conflict.php 3 months ago index.php 10 years ago interface-collection.php 7 years ago interface-installable.php 8 years ago
class-config.php
162 lines
1 <?php
2 /**
3 * WPSEO plugin file.
4 *
5 * @package WPSEO\Admin
6 */
7
8 use Yoast\WP\SEO\Actions\Alert_Dismissal_Action;
9 use Yoast\WP\SEO\General\User_Interface\General_Page_Integration;
10 use Yoast\WP\SEO\Integrations\Academy_Integration;
11 use Yoast\WP\SEO\Integrations\Admin\Redirects_Page_Integration;
12 use Yoast\WP\SEO\Integrations\Settings_Integration;
13 use Yoast\WP\SEO\Integrations\Support_Integration;
14 use Yoast\WP\SEO\Plans\User_Interface\Plans_Page_Integration;
15 use Yoast\WP\SEO\Promotions\Application\Promotion_Manager;
16
17 /**
18 * Class WPSEO_Admin_Pages.
19 *
20 * Class with functionality for the Yoast SEO admin pages.
21 */
22 class WPSEO_Admin_Pages {
23
24 /**
25 * The option in use for the current admin page.
26 *
27 * @var string
28 */
29 public $currentoption = 'wpseo';
30
31 /**
32 * Holds the asset manager.
33 *
34 * @var WPSEO_Admin_Asset_Manager
35 */
36 private $asset_manager;
37
38 /**
39 * Class constructor, which basically only hooks the init function on the init hook.
40 */
41 public function __construct() {
42 add_action( 'init', [ $this, 'init' ], 20 );
43
44 $this->asset_manager = new WPSEO_Admin_Asset_Manager();
45 }
46
47 /**
48 * Make sure the needed scripts are loaded for admin pages.
49 *
50 * @return void
51 */
52 public function init() {
53 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
54 $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
55
56 // Don't load the scripts for the following pages.
57 $page_exceptions = in_array(
58 $page,
59 [
60 Settings_Integration::PAGE,
61 Academy_Integration::PAGE,
62 Support_Integration::PAGE,
63 Plans_Page_Integration::PAGE,
64 Redirects_Page_Integration::PAGE,
65 ],
66 true,
67 );
68 $new_dashboard_page = ( $page === General_Page_Integration::PAGE && ! is_network_admin() );
69 if ( $page_exceptions || $new_dashboard_page ) {
70 // Bail, this is managed in the applicable integration.
71 return;
72 }
73 add_action( 'admin_enqueue_scripts', [ $this, 'config_page_scripts' ] );
74 add_action( 'admin_enqueue_scripts', [ $this, 'config_page_styles' ] );
75 }
76
77 /**
78 * Loads the required styles for the config page.
79 *
80 * @return void
81 */
82 public function config_page_styles() {
83 wp_enqueue_style( 'dashboard' );
84 wp_enqueue_style( 'thickbox' );
85 wp_enqueue_style( 'global' );
86 wp_enqueue_style( 'wp-admin' );
87 $this->asset_manager->enqueue_style( 'admin-css' );
88 $this->asset_manager->enqueue_style( 'monorepo' );
89 }
90
91 /**
92 * Loads the required scripts for the config page.
93 *
94 * @return void
95 */
96 public function config_page_scripts() {
97 $this->asset_manager->enqueue_script( 'settings' );
98 wp_enqueue_script( 'dashboard' );
99 wp_enqueue_script( 'thickbox' );
100
101 $alert_dismissal_action = YoastSEO()->classes->get( Alert_Dismissal_Action::class );
102 $dismissed_alerts = $alert_dismissal_action->all_dismissed();
103
104 $script_data = [
105 'dismissedAlerts' => $dismissed_alerts,
106 'isRtl' => is_rtl(),
107 'isPremium' => YoastSEO()->helpers->product->is_premium(),
108 'currentPromotions' => YoastSEO()->classes->get( Promotion_Manager::class )
109 ->get_current_promotions(),
110 'webinarIntroFirstTimeConfigUrl' => $this->get_webinar_shortlink(),
111 'linkParams' => WPSEO_Shortlinker::get_query_params(),
112 'pluginUrl' => plugins_url( '', WPSEO_FILE ),
113 ];
114
115 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
116 $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
117
118 if ( in_array( $page, [ WPSEO_Admin::PAGE_IDENTIFIER, 'wpseo_workouts' ], true ) ) {
119 wp_enqueue_media();
120
121 $script_data['userEditUrl'] = add_query_arg( 'user_id', '{user_id}', admin_url( 'user-edit.php' ) );
122 }
123
124 if ( $page === 'wpseo_tools' ) {
125 $this->enqueue_tools_scripts();
126 }
127
128 $this->asset_manager->localize_script( 'settings', 'wpseoScriptData', $script_data );
129 }
130
131 /**
132 * Enqueues and handles all the tool dependencies.
133 *
134 * @return void
135 */
136 private function enqueue_tools_scripts() {
137 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
138 $tool = isset( $_GET['tool'] ) && is_string( $_GET['tool'] ) ? sanitize_text_field( wp_unslash( $_GET['tool'] ) ) : '';
139
140 if ( empty( $tool ) ) {
141 $this->asset_manager->enqueue_script( 'yoast-seo' );
142 }
143
144 if ( $tool === 'bulk-editor' ) {
145 $this->asset_manager->enqueue_script( 'bulk-editor' );
146 }
147 }
148
149 /**
150 * Returns the appropriate shortlink for the Webinar.
151 *
152 * @return string The shortlink for the Webinar.
153 */
154 private function get_webinar_shortlink() {
155 if ( YoastSEO()->helpers->product->is_premium() ) {
156 return WPSEO_Shortlinker::get( 'https://yoa.st/webinar-intro-first-time-config-premium' );
157 }
158
159 return WPSEO_Shortlinker::get( 'https://yoa.st/webinar-intro-first-time-config' );
160 }
161 }
162