Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/seo-by-rank-math/includes/admin/class-options.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* The option page functionality of the plugin.
4
+
*
5
+
* @since 0.9.0
6
+
* @package RankMath
7
+
* @subpackage RankMath\Admin
8
+
* @author Rank Math <support@rankmath.com>
9
+
*/
10
+
11
+
namespace RankMath\Admin;
12
+
13
+
use WP_Http;
14
+
use RankMath\KB;
15
+
use RankMath\CMB2;
16
+
use RankMath\Helper;
17
+
use RankMath\Traits\Hooker;
18
+
use RankMath\Helpers\Str;
19
+
use RankMath\Helpers\Param;
20
+
use RankMath\Robots_Txt;
21
+
use RankMath\Sitemap\Router;
22
+
use RankMath\Sitemap\Sitemap;
23
+
use RankMath\Admin\Page;
24
+
25
+
defined( 'ABSPATH' ) || exit;
26
+
27
+
/**
28
+
* Options class.
29
+
*/
30
+
class Options {
31
+
32
+
use Hooker;
33
+
34
+
/**
35
+
* Page title.
36
+
*
37
+
* @var string
38
+
*/
39
+
public $title = 'Settings';
40
+
41
+
/**
42
+
* Menu title.
43
+
*
44
+
* @var string
45
+
*/
46
+
public $menu_title = 'Settings';
47
+
48
+
/**
49
+
* Hold tabs for page.
50
+
*
51
+
* @var array
52
+
*/
53
+
public $tabs = [];
54
+
55
+
/**
56
+
* Hold folder name for tab files.
57
+
*
58
+
* @var string
59
+
*/
60
+
public $folder = '';
61
+
62
+
/**
63
+
* Menu Position.
64
+
*
65
+
* @var int
66
+
*/
67
+
public $position = 10;
68
+
69
+
/**
70
+
* The capability required for this menu to be displayed to the user.
71
+
*
72
+
* @var string
73
+
*/
74
+
public $capability = 'manage_options';
75
+
76
+
/**
77
+
* CMB2 option page id.
78
+
*
79
+
* @var string
80
+
*/
81
+
private $cmb_id = null;
82
+
83
+
/**
84
+
* Options key.
85
+
*
86
+
* @var string
87
+
*/
88
+
public $key = '';
89
+
90
+
/**
91
+
* The Constructor
92
+
*
93
+
* @param array $config Array of configuration.
94
+
*/
95
+
public function __construct( $config ) {
96
+
$this->config( $config );
97
+
$this->cmb_id = $this->key . '_options';
98
+
99
+
$this->action( 'admin_post_' . $this->key, 'reset_options', 2 );
100
+
}
101
+
102
+
/**
103
+
* Create option object and add settings.
104
+
*/
105
+
public function register_option_page() {
106
+
$current_page = str_replace( 'rank-math-options-', '', $this->key );
107
+
108
+
new Page(
109
+
$this->key,
110
+
$this->title,
111
+
[
112
+
'position' => $this->position,
113
+
'priority' => 9999,
114
+
'parent' => 'rank-math',
115
+
'capability' => $this->capability,
116
+
'menu_title' => $this->menu_title,
117
+
'render' => [ $this, 'display' ],
118
+
'classes' => $this->get_body_class(),
119
+
'assets' => [
120
+
'styles' => [
121
+
'select2-rm' => '',
122
+
'rank-math-common' => '',
123
+
'rank-math-cmb2' => '',
124
+
'wp-components' => '',
125
+
'rank-math-options' => rank_math()->plugin_url() . 'assets/admin/css/option-panel.css',
126
+
],
127
+
'scripts' => [
128
+
'media-editor' => '',
129
+
'underscore' => '',
130
+
'select2-rm' => '',
131
+
'lodash' => '',
132
+
'rank-math-common' => '',
133
+
'wp-api-fetch' => '',
134
+
'wp-data' => '',
135
+
'rank-math-components' => '',
136
+
'rank-math-options' => rank_math()->plugin_url() . 'assets/admin/js/settings.js',
137
+
],
138
+
'json' => $this->get_json_data( $current_page ),
139
+
],
140
+
]
141
+
);
142
+
}
143
+
144
+
/**
145
+
* Set the default values if not set.
146
+
*
147
+
* @param CMB2 $cmb The CMB2 object to hookup.
148
+
*/
149
+
public function set_defaults( $cmb ) {
150
+
foreach ( $cmb->prop( 'fields' ) as $id => $field_args ) {
151
+
$field = $cmb->get_field( $id );
152
+
if ( isset( $field_args['default'] ) || isset( $field_args['default_cb'] ) ) {
153
+
$defaults[ $id ] = $field->get_default();
154
+
}
155
+
}
156
+
157
+
// Save Defaults if any.
158
+
if ( ! empty( $defaults ) ) {
159
+
add_option( $this->key, $defaults );
160
+
}
161
+
}
162
+
163
+
/**
164
+
* Reset options.
165
+
*/
166
+
public function reset_options() {
167
+
168
+
if ( ! check_admin_referer( 'rank-math-reset-options' ) || ! current_user_can( 'manage_options' ) ) {
169
+
return false;
170
+
}
171
+
172
+
$url = wp_get_referer();
173
+
if ( ! $url ) {
174
+
$url = admin_url();
175
+
}
176
+
177
+
if ( filter_has_var( INPUT_POST, 'reset-cmb' ) && Param::post( 'action' ) === $this->key ) {
178
+
delete_option( $this->key );
179
+
Helper::redirect( esc_url_raw( $url ), WP_Http::SEE_OTHER );
180
+
exit;
181
+
}
182
+
}
183
+
184
+
/**
185
+
* Add classes to <body> of WordPress admin.
186
+
*
187
+
* @return string
188
+
*/
189
+
public function get_body_class() {
190
+
$mode = Helper::is_advanced_mode() ? 'advanced' : 'basic';
191
+
return [
192
+
'rank-math-page ',
193
+
'rank-math-mode-' . $mode,
194
+
];
195
+
}
196
+
197
+
/**
198
+
* Display Setting on a page.
199
+
*/
200
+
public function display() {
201
+
?>
202
+
<div id="rank-math-options" class="<?php echo esc_attr( $this->cmb_id ); ?>"></div>
203
+
<?php
204
+
}
205
+
206
+
/**
207
+
* Get setting tabs.
208
+
*
209
+
* @return array
210
+
*/
211
+
private function get_tabs() {
212
+
213
+
$filter = str_replace( '-', '_', str_replace( 'rank-math-', '', $this->key ) );
214
+
/**
215
+
* Allow developers to add new tabs into option panel.
216
+
*
217
+
* The dynamic part of hook is, page name without 'rank-math-' prefix.
218
+
*
219
+
* @param array $tabs
220
+
*/
221
+
return $this->do_filter( "admin/options/{$filter}_tabs", $this->tabs );
222
+
}
223
+
224
+
/**
225
+
* Get localized data for the current settings page.
226
+
*
227
+
* @param string $current_page Current Settings page.
228
+
*
229
+
* @return array
230
+
*/
231
+
private function get_json_data( $current_page ) {
232
+
if ( Param::get( 'page' ) !== $this->key ) {
233
+
return [];
234
+
}
235
+
236
+
if ( is_admin() ) {
237
+
rank_math()->variables->setup();
238
+
rank_math()->variables->setup_json();
239
+
}
240
+
241
+
$tabs = $this->get_tabs();
242
+
$data = $this->do_filter(
243
+
"admin/options/{$current_page}_data",
244
+
[
245
+
'isPro' => defined( 'RANK_MATH_PRO_FILE' ),
246
+
'tabs' => array_keys( $tabs ),
247
+
'optionPage' => $current_page,
248
+
'homeUrl' => get_home_url(),
249
+
'data' => $current_page === 'instant-indexing' ? get_option( 'rank-math-options-instant-indexing' ) : Helper::get_settings( $current_page ),
250
+
'isSiteConnected' => Helper::is_site_connected(),
251
+
'choices' => [
252
+
'postTypes' => Helper::choices_post_types(),
253
+
'accessiblePostTypes' => Helper::get_accessible_post_types(),
254
+
'accessibleTaxonomies' => Helper::get_accessible_taxonomies(),
255
+
'choicesPostTypeIcons' => Helper::choices_post_type_icons(),
256
+
'choicesTaxonomyIcons' => Helper::choices_taxonomy_icons(),
257
+
],
258
+
]
259
+
);
260
+
foreach ( $tabs as $tab ) {
261
+
if ( empty( $tab['json'] ) ) {
262
+
continue;
263
+
}
264
+
265
+
$data = array_merge( $data, $tab['json'] );
266
+
}
267
+
268
+
$method = "get_{$current_page}_data";
269
+
if ( ! method_exists( $this, $method ) ) {
270
+
return $data;
271
+
}
272
+
273
+
return array_merge( $data, $this->$method() );
274
+
}
275
+
276
+
/**
277
+
* Get General Settings page data.
278
+
*
279
+
* @return array
280
+
*/
281
+
private function get_general_data() {
282
+
return [
283
+
'activateUrl' => Admin_Helper::get_activate_url( admin_url( 'admin.php??page=rank-math-options-general&tab=content-ai' ) ),
284
+
'hasBreadcrumbSupport' => current_theme_supports( 'rank-math-breadcrumbs' ),
285
+
'showBlogPage' => 'page' === get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) > 0,
286
+
'isEditAllowed' => Helper::is_edit_allowed(),
287
+
'defaultLanguage' => Helper::content_ai_default_language(),
288
+
];
289
+
}
290
+
291
+
/**
292
+
* Get General Settings page data.
293
+
*
294
+
* @return array
295
+
*/
296
+
private function get_titles_data() {
297
+
$data = [
298
+
'choicesRobots' => Helper::choices_robots(),
299
+
'supportsTitleTag' => current_theme_supports( 'title-tag' ) || wp_is_block_theme(),
300
+
'schemaTypes' => Helper::choices_rich_snippet_types( esc_html__( 'None (Click here to set one)', 'rank-math' ) ),
301
+
'isRedirectAttachments' => Helper::get_settings( 'general.attachment_redirect_urls' ),
302
+
];
303
+
return $data;
304
+
}
305
+
}
306
+