at path:ROOT / wp-admin / plugins.php
run:R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
17.74 KB
2026-03-11 16:18:51
R W Run
5.03 KB
2026-03-11 16:18:51
R W Run
2.77 KB
2026-03-11 16:18:51
R W Run
479 By
2026-03-11 16:18:51
R W Run
9.12 KB
2026-03-11 16:18:51
R W Run
1.97 KB
2026-03-11 16:18:51
R W Run
12.35 KB
2026-03-11 16:18:51
R W Run
5.47 KB
2026-03-11 16:18:51
R W Run
10.09 KB
2026-03-11 16:18:51
R W Run
11.35 KB
2026-03-11 16:18:51
R W Run
5.86 KB
2026-03-11 16:18:51
R W Run
4.38 KB
2026-03-11 16:18:51
R W Run
489 By
2026-03-11 16:18:51
R W Run
499 By
2026-03-11 16:18:51
R W Run
11.01 KB
2026-03-11 16:18:51
R W Run
14.38 KB
2026-03-11 16:18:51
R W Run
28.83 KB
2026-03-11 16:18:51
R W Run
14.6 KB
2026-03-11 16:18:51
R W Run
8.34 KB
2026-03-11 16:18:51
R W Run
6.21 KB
2026-03-11 16:18:51
R W Run
10.44 KB
2026-03-11 16:18:51
R W Run
22 KB
2026-03-11 16:18:51
R W Run
19.48 KB
2026-03-11 16:18:51
R W Run
7.33 KB
2026-03-11 16:18:51
R W Run
7.75 KB
2026-03-11 16:18:51
R W Run
11.02 KB
2026-03-11 16:18:51
R W Run
4.8 KB
2026-03-11 16:18:51
R W Run
7.58 KB
2026-03-11 16:18:51
R W Run
7.68 KB
2026-03-11 16:18:51
R W Run
6.8 KB
2026-03-11 16:18:51
R W Run
17.77 KB
2026-03-11 16:18:51
R W Run
934 By
2026-03-11 16:18:51
R W Run
4.26 KB
2026-03-11 16:18:51
R W Run
2.72 KB
2026-03-11 16:18:51
R W Run
2.89 KB
2026-03-11 16:18:51
R W Run
2.02 KB
2026-03-11 16:18:51
R W Run
2.92 KB
2026-03-11 16:18:51
R W Run
3.2 KB
2026-03-11 16:18:51
R W Run
3.58 KB
2026-03-11 16:18:51
R W Run
819 By
2026-03-11 16:18:51
R W Run
9.82 KB
2026-03-11 16:18:51
R W Run
17.46 KB
2026-03-11 16:18:51
R W Run
307 By
2026-03-11 16:18:51
R W Run
196 By
2026-03-11 16:18:51
R W Run
4.5 KB
2026-03-11 16:18:51
R W Run
216 By
2026-03-11 16:18:51
R W Run
229 By
2026-03-11 16:18:51
R W Run
215 By
2026-03-11 16:18:51
R W Run
217 By
2026-03-11 16:18:51
R W Run
219 By
2026-03-11 16:18:51
R W Run
215 By
2026-03-11 16:18:51
R W Run
4.74 KB
2026-03-11 16:18:51
R W Run
48.19 KB
2026-03-11 16:18:51
R W Run
5.39 KB
2026-03-11 16:18:51
R W Run
15.92 KB
2026-03-11 16:18:51
R W Run
21.65 KB
2026-03-11 16:18:51
R W Run
621 By
2026-03-11 16:18:51
R W Run
6.38 KB
2026-03-11 16:18:51
R W Run
21.22 KB
2026-03-11 16:18:51
R W Run
9.95 KB
2026-03-11 16:18:51
R W Run
9.94 KB
2026-03-11 16:18:51
R W Run
9.1 KB
2026-03-11 16:18:51
R W Run
13.6 KB
2026-03-11 16:18:51
R W Run
13.75 KB
2026-03-11 16:18:51
R W Run
6.96 KB
2026-03-11 16:18:51
R W Run
30 KB
2026-03-11 16:18:51
R W Run
2.7 KB
2026-03-11 16:18:51
R W Run
10.03 KB
2026-03-11 16:18:51
R W Run
2.34 KB
2026-03-11 16:18:51
R W Run
3.67 KB
2026-03-11 16:18:51
R W Run
2.79 KB
2026-03-11 16:18:51
R W Run
283 By
2026-03-11 16:18:51
R W Run
5.7 KB
2026-03-11 16:18:51
R W Run
17.48 KB
2026-03-11 16:18:51
R W Run
11.98 KB
2026-03-11 16:18:51
R W Run
3.99 KB
2026-03-11 16:18:51
R W Run
10.2 KB
2026-03-11 16:18:51
R W Run
2.2 KB
2026-03-11 16:18:51
R W Run
16.87 KB
2026-03-11 16:18:51
R W Run
23.38 KB
2026-03-11 16:18:51
R W Run
47.92 KB
2026-03-11 16:18:51
R W Run
3.43 KB
2026-03-11 16:18:51
R W Run
45.45 KB
2026-03-11 16:18:51
R W Run
12.79 KB
2026-03-11 16:18:51
R W Run
341 By
2026-03-11 16:18:51
R W Run
6.27 KB
2026-03-11 16:18:51
R W Run
14.9 KB
2026-03-11 16:18:51
R W Run
40.36 KB
2026-03-11 16:18:51
R W Run
24.05 KB
2026-03-11 16:18:51
R W Run
23.29 KB
2026-03-11 16:18:51
R W Run
5.12 KB
2026-03-11 16:18:51
R W Run
19.29 KB
2026-03-11 16:18:51
R W Run
1.09 KB
2026-03-11 16:18:51
R W Run
error_log
📄plugins.php
1<?php
2/**
3 * Plugins administration panel.
4 *
5 * @package WordPress
6 * @subpackage Administration
7 */
8
9/** WordPress Administration Bootstrap */
10require_once __DIR__ . '/admin.php';
11
12if ( ! current_user_can( 'activate_plugins' ) ) {
13 wp_die( __( 'Sorry, you are not allowed to manage plugins for this site.' ) );
14}
15
16$wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
17$pagenum = $wp_list_table->get_pagenum();
18
19$action = $wp_list_table->current_action();
20
21$plugin = isset( $_REQUEST['plugin'] ) ? wp_unslash( $_REQUEST['plugin'] ) : '';
22$s = isset( $_REQUEST['s'] ) ? urlencode( wp_unslash( $_REQUEST['s'] ) ) : '';
23
24// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
25$query_args_to_remove = array(
26 'error',
27 'deleted',
28 'activate',
29 'activate-multi',
30 'deactivate',
31 'deactivate-multi',
32 'enabled-auto-update',
33 'disabled-auto-update',
34 'enabled-auto-update-multi',
35 'disabled-auto-update-multi',
36 '_error_nonce',
37);
38
39$_SERVER['REQUEST_URI'] = remove_query_arg( $query_args_to_remove, $_SERVER['REQUEST_URI'] );
40
41wp_enqueue_script( 'updates' );
42
43WP_Plugin_Dependencies::initialize();
44
45if ( $action ) {
46
47 switch ( $action ) {
48 case 'activate':
49 if ( ! current_user_can( 'activate_plugin', $plugin ) ) {
50 wp_die( __( 'Sorry, you are not allowed to activate this plugin.' ) );
51 }
52
53 if ( is_multisite() && ! is_network_admin() && is_network_only_plugin( $plugin ) ) {
54 wp_redirect( self_admin_url( "plugins.php?plugin_status=$status&paged=$page&s=$s" ) );
55 exit;
56 }
57
58 check_admin_referer( 'activate-plugin_' . $plugin );
59
60 $result = activate_plugin( $plugin, self_admin_url( 'plugins.php?error=true&plugin=' . urlencode( $plugin ) ), is_network_admin() );
61 if ( is_wp_error( $result ) ) {
62 if ( 'unexpected_output' === $result->get_error_code() ) {
63 $redirect = self_admin_url( 'plugins.php?error=true&charsout=' . strlen( $result->get_error_data() ) . '&plugin=' . urlencode( $plugin ) . "&plugin_status=$status&paged=$page&s=$s" );
64 wp_redirect( add_query_arg( '_error_nonce', wp_create_nonce( 'plugin-activation-error_' . $plugin ), $redirect ) );
65 exit;
66 } else {
67 wp_die( $result );
68 }
69 }
70
71 if ( ! is_network_admin() ) {
72 $recent = (array) get_option( 'recently_activated' );
73 unset( $recent[ $plugin ] );
74 update_option( 'recently_activated', $recent, false );
75 } else {
76 $recent = (array) get_site_option( 'recently_activated' );
77 unset( $recent[ $plugin ] );
78 update_site_option( 'recently_activated', $recent );
79 }
80
81 if ( isset( $_GET['from'] ) && 'import' === $_GET['from'] ) {
82 // Overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix.
83 wp_redirect( self_admin_url( 'import.php?import=' . str_replace( '-importer', '', dirname( $plugin ) ) ) );
84 } elseif ( isset( $_GET['from'] ) && 'press-this' === $_GET['from'] ) {
85 wp_redirect( self_admin_url( 'press-this.php' ) );
86 } else {
87 // Overrides the ?error=true one above.
88 wp_redirect( self_admin_url( "plugins.php?activate=true&plugin_status=$status&paged=$page&s=$s" ) );
89 }
90 exit;
91
92 case 'activate-selected':
93 if ( ! current_user_can( 'activate_plugins' ) ) {
94 wp_die( __( 'Sorry, you are not allowed to activate plugins for this site.' ) );
95 }
96
97 check_admin_referer( 'bulk-plugins' );
98
99 $plugins = isset( $_POST['checked'] ) ? (array) wp_unslash( $_POST['checked'] ) : array();
100
101 if ( is_network_admin() ) {
102 foreach ( $plugins as $i => $plugin ) {
103 // Only activate plugins which are not already network activated.
104 if ( is_plugin_active_for_network( $plugin ) ) {
105 unset( $plugins[ $i ] );
106 }
107 }
108 } else {
109 foreach ( $plugins as $i => $plugin ) {
110 // Only activate plugins which are not already active and are not network-only when on Multisite.
111 if ( is_plugin_active( $plugin ) || ( is_multisite() && is_network_only_plugin( $plugin ) ) ) {
112 unset( $plugins[ $i ] );
113 }
114 // Only activate plugins which the user can activate.
115 if ( ! current_user_can( 'activate_plugin', $plugin ) ) {
116 unset( $plugins[ $i ] );
117 }
118 }
119 }
120
121 if ( empty( $plugins ) ) {
122 wp_redirect( self_admin_url( "plugins.php?plugin_status=$status&paged=$page&s=$s" ) );
123 exit;
124 }
125
126 activate_plugins( $plugins, self_admin_url( 'plugins.php?error=true' ), is_network_admin() );
127
128 if ( ! is_network_admin() ) {
129 $recent = (array) get_option( 'recently_activated' );
130 } else {
131 $recent = (array) get_site_option( 'recently_activated' );
132 }
133
134 foreach ( $plugins as $plugin ) {
135 unset( $recent[ $plugin ] );
136 }
137
138 if ( ! is_network_admin() ) {
139 update_option( 'recently_activated', $recent, false );
140 } else {
141 update_site_option( 'recently_activated', $recent );
142 }
143
144 wp_redirect( self_admin_url( "plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s" ) );
145 exit;
146
147 case 'update-selected':
148 check_admin_referer( 'bulk-plugins' );
149
150 if ( isset( $_GET['plugins'] ) ) {
151 $plugins = explode( ',', wp_unslash( $_GET['plugins'] ) );
152 } elseif ( isset( $_POST['checked'] ) ) {
153 $plugins = (array) wp_unslash( $_POST['checked'] );
154 } else {
155 $plugins = array();
156 }
157
158 // Used in the HTML title tag.
159 $title = __( 'Update Plugins' );
160 $parent_file = 'plugins.php';
161
162 wp_enqueue_script( 'updates' );
163 require_once ABSPATH . 'wp-admin/admin-header.php';
164
165 echo '<div class="wrap">';
166 echo '<h1>' . esc_html( $title ) . '</h1>';
167
168 $url = self_admin_url( 'update.php?action=update-selected&amp;plugins=' . urlencode( implode( ',', $plugins ) ) );
169 $url = wp_nonce_url( $url, 'bulk-update-plugins' );
170
171 echo "<iframe src='$url' style='width: 100%; height:100%; min-height:850px;'></iframe>";
172 echo '</div>';
173 require_once ABSPATH . 'wp-admin/admin-footer.php';
174 exit;
175
176 case 'error_scrape':
177 if ( ! current_user_can( 'activate_plugin', $plugin ) ) {
178 wp_die( __( 'Sorry, you are not allowed to activate this plugin.' ) );
179 }
180
181 check_admin_referer( 'plugin-activation-error_' . $plugin );
182
183 $valid = validate_plugin( $plugin );
184 if ( is_wp_error( $valid ) ) {
185 wp_die( $valid );
186 }
187
188 if ( ! WP_DEBUG ) {
189 error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
190 }
191
192 ini_set( 'display_errors', true ); // Ensure that fatal errors are displayed.
193 // Go back to "sandbox" scope so we get the same errors as before.
194 plugin_sandbox_scrape( $plugin );
195 /** This action is documented in wp-admin/includes/plugin.php */
196 do_action( "activate_{$plugin}" );
197 exit;
198
199 case 'deactivate':
200 if ( ! current_user_can( 'deactivate_plugin', $plugin ) ) {
201 wp_die( __( 'Sorry, you are not allowed to deactivate this plugin.' ) );
202 }
203
204 check_admin_referer( 'deactivate-plugin_' . $plugin );
205
206 if ( ! is_network_admin() && is_plugin_active_for_network( $plugin ) ) {
207 wp_redirect( self_admin_url( "plugins.php?plugin_status=$status&paged=$page&s=$s" ) );
208 exit;
209 }
210
211 deactivate_plugins( $plugin, false, is_network_admin() );
212
213 if ( ! is_network_admin() ) {
214 update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ), false );
215 } else {
216 update_site_option( 'recently_activated', array( $plugin => time() ) + (array) get_site_option( 'recently_activated' ) );
217 }
218
219 if ( headers_sent() ) {
220 echo "<meta http-equiv='refresh' content='" . esc_attr( "0;url=plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) . "' />";
221 } else {
222 wp_redirect( self_admin_url( "plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) );
223 }
224 exit;
225
226 case 'deactivate-selected':
227 if ( ! current_user_can( 'deactivate_plugins' ) ) {
228 wp_die( __( 'Sorry, you are not allowed to deactivate plugins for this site.' ) );
229 }
230
231 check_admin_referer( 'bulk-plugins' );
232
233 $plugins = isset( $_POST['checked'] ) ? (array) wp_unslash( $_POST['checked'] ) : array();
234 // Do not deactivate plugins which are already deactivated.
235 if ( is_network_admin() ) {
236 $plugins = array_filter( $plugins, 'is_plugin_active_for_network' );
237 } else {
238 $plugins = array_filter( $plugins, 'is_plugin_active' );
239 $plugins = array_diff( $plugins, array_filter( $plugins, 'is_plugin_active_for_network' ) );
240
241 foreach ( $plugins as $i => $plugin ) {
242 // Only deactivate plugins which the user can deactivate.
243 if ( ! current_user_can( 'deactivate_plugin', $plugin ) ) {
244 unset( $plugins[ $i ] );
245 }
246 }
247 }
248 if ( empty( $plugins ) ) {
249 wp_redirect( self_admin_url( "plugins.php?plugin_status=$status&paged=$page&s=$s" ) );
250 exit;
251 }
252
253 deactivate_plugins( $plugins, false, is_network_admin() );
254
255 $deactivated = array();
256 foreach ( $plugins as $plugin ) {
257 $deactivated[ $plugin ] = time();
258 }
259
260 if ( ! is_network_admin() ) {
261 update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ), false );
262 } else {
263 update_site_option( 'recently_activated', $deactivated + (array) get_site_option( 'recently_activated' ) );
264 }
265
266 wp_redirect( self_admin_url( "plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s" ) );
267 exit;
268
269 case 'delete-selected':
270 if ( ! current_user_can( 'delete_plugins' ) ) {
271 wp_die( __( 'Sorry, you are not allowed to delete plugins for this site.' ) );
272 }
273
274 check_admin_referer( 'bulk-plugins' );
275
276 // $_POST = from the plugin form; $_GET = from the FTP details screen.
277 $plugins = isset( $_REQUEST['checked'] ) ? (array) wp_unslash( $_REQUEST['checked'] ) : array();
278 if ( empty( $plugins ) ) {
279 wp_redirect( self_admin_url( "plugins.php?plugin_status=$status&paged=$page&s=$s" ) );
280 exit;
281 }
282
283 $plugins = array_filter( $plugins, 'is_plugin_inactive' ); // Do not allow to delete activated plugins.
284 if ( empty( $plugins ) ) {
285 wp_redirect( self_admin_url( "plugins.php?error=true&main=true&plugin_status=$status&paged=$page&s=$s" ) );
286 exit;
287 }
288
289 // Bail on all if any paths are invalid.
290 // validate_file() returns truthy for invalid files.
291 $invalid_plugin_files = array_filter( $plugins, 'validate_file' );
292 if ( $invalid_plugin_files ) {
293 wp_redirect( self_admin_url( "plugins.php?plugin_status=$status&paged=$page&s=$s" ) );
294 exit;
295 }
296
297 require ABSPATH . 'wp-admin/update.php';
298
299 $parent_file = 'plugins.php';
300
301 if ( ! isset( $_REQUEST['verify-delete'] ) ) {
302 wp_enqueue_script( 'jquery' );
303 require_once ABSPATH . 'wp-admin/admin-header.php';
304
305 ?>
306 <div class="wrap">
307 <?php
308
309 $plugin_info = array();
310 $have_non_network_plugins = false;
311
312 foreach ( (array) $plugins as $plugin ) {
313 $plugin_slug = dirname( $plugin );
314
315 if ( '.' === $plugin_slug ) {
316 $data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
317 if ( $data ) {
318 $plugin_info[ $plugin ] = $data;
319 $plugin_info[ $plugin ]['is_uninstallable'] = is_uninstallable_plugin( $plugin );
320 if ( ! $plugin_info[ $plugin ]['Network'] ) {
321 $have_non_network_plugins = true;
322 }
323 }
324 } else {
325 // Get plugins list from that folder.
326 $folder_plugins = get_plugins( '/' . $plugin_slug );
327 if ( $folder_plugins ) {
328 foreach ( $folder_plugins as $plugin_file => $data ) {
329 $plugin_info[ $plugin_file ] = _get_plugin_data_markup_translate( $plugin_file, $data );
330 $plugin_info[ $plugin_file ]['is_uninstallable'] = is_uninstallable_plugin( $plugin );
331 if ( ! $plugin_info[ $plugin_file ]['Network'] ) {
332 $have_non_network_plugins = true;
333 }
334 }
335 }
336 }
337 }
338
339 $plugins_to_delete = count( $plugin_info );
340
341 ?>
342 <?php if ( 1 === $plugins_to_delete ) : ?>
343 <h1><?php _e( 'Delete Plugin' ); ?></h1>
344 <?php
345 if ( $have_non_network_plugins && is_network_admin() ) :
346 $maybe_active_plugin = '<strong>' . __( 'Caution:' ) . '</strong> ' . __( 'This plugin may be active on other sites in the network.' );
347 wp_admin_notice(
348 $maybe_active_plugin,
349 array(
350 'additional_classes' => array( 'error' ),
351 )
352 );
353 endif;
354 ?>
355 <p><?php _e( 'You are about to remove the following plugin:' ); ?></p>
356 <?php else : ?>
357 <h1><?php _e( 'Delete Plugins' ); ?></h1>
358 <?php
359 if ( $have_non_network_plugins && is_network_admin() ) :
360 $maybe_active_plugins = '<strong>' . __( 'Caution:' ) . '</strong> ' . __( 'These plugins may be active on other sites in the network.' );
361 wp_admin_notice(
362 $maybe_active_plugins,
363 array(
364 'additional_classes' => array( 'error' ),
365 )
366 );
367 endif;
368 ?>
369 <p><?php _e( 'You are about to remove the following plugins:' ); ?></p>
370 <?php endif; ?>
371 <ul class="ul-disc">
372 <?php
373
374 $data_to_delete = false;
375
376 foreach ( $plugin_info as $plugin ) {
377 if ( $plugin['is_uninstallable'] ) {
378 /* translators: 1: Plugin name, 2: Plugin author. */
379 echo '<li>', sprintf( __( '%1$s by %2$s (will also <strong>delete its data</strong>)' ), '<strong>' . $plugin['Name'] . '</strong>', '<em>' . $plugin['AuthorName'] . '</em>' ), '</li>';
380 $data_to_delete = true;
381 } else {
382 /* translators: 1: Plugin name, 2: Plugin author. */
383 echo '<li>', sprintf( _x( '%1$s by %2$s', 'plugin' ), '<strong>' . $plugin['Name'] . '</strong>', '<em>' . $plugin['AuthorName'] ) . '</em>', '</li>';
384 }
385 }
386
387 ?>
388 </ul>
389 <p>
390 <?php
391
392 if ( $data_to_delete ) {
393 _e( 'Are you sure you want to delete these files and data?' );
394 } else {
395 _e( 'Are you sure you want to delete these files?' );
396 }
397
398 ?>
399 </p>
400 <form method="post" action="<?php echo esc_url( $_SERVER['REQUEST_URI'] ); ?>" style="display:inline;">
401 <input type="hidden" name="verify-delete" value="1" />
402 <input type="hidden" name="action" value="delete-selected" />
403 <?php
404
405 foreach ( (array) $plugins as $plugin ) {
406 echo '<input type="hidden" name="checked[]" value="' . esc_attr( $plugin ) . '" />';
407 }
408
409 ?>
410 <?php wp_nonce_field( 'bulk-plugins' ); ?>
411 <?php submit_button( $data_to_delete ? __( 'Yes, delete these files and data' ) : __( 'Yes, delete these files' ), '', 'submit', false ); ?>
412 </form>
413 <?php
414
415 $referer = wp_get_referer();
416
417 ?>
418 <form method="post" action="<?php echo $referer ? esc_url( $referer ) : ''; ?>" style="display:inline;">
419 <?php submit_button( __( 'No, return me to the plugin list' ), '', 'submit', false ); ?>
420 </form>
421 </div>
422 <?php
423
424 require_once ABSPATH . 'wp-admin/admin-footer.php';
425 exit;
426 } else {
427 $plugins_to_delete = count( $plugins );
428 } // End if verify-delete.
429
430 $delete_result = delete_plugins( $plugins );
431
432 // Store the result in an option rather than a URL param due to object type & length.
433 // Cannot use transient/cache, as that could get flushed if any plugin flushes data on uninstall/delete.
434 update_option( 'plugins_delete_result_' . $user_ID, $delete_result, false );
435 wp_redirect( self_admin_url( "plugins.php?deleted=$plugins_to_delete&plugin_status=$status&paged=$page&s=$s" ) );
436 exit;
437 case 'clear-recent-list':
438 if ( ! is_network_admin() ) {
439 update_option( 'recently_activated', array(), false );
440 } else {
441 update_site_option( 'recently_activated', array() );
442 }
443
444 break;
445 case 'resume':
446 if ( is_multisite() ) {
447 return;
448 }
449
450 if ( ! current_user_can( 'resume_plugin', $plugin ) ) {
451 wp_die( __( 'Sorry, you are not allowed to resume this plugin.' ) );
452 }
453
454 check_admin_referer( 'resume-plugin_' . $plugin );
455
456 $result = resume_plugin( $plugin, self_admin_url( "plugins.php?error=resuming&plugin_status=$status&paged=$page&s=$s" ) );
457
458 if ( is_wp_error( $result ) ) {
459 wp_die( $result );
460 }
461
462 wp_redirect( self_admin_url( "plugins.php?resume=true&plugin_status=$status&paged=$page&s=$s" ) );
463 exit;
464 case 'enable-auto-update':
465 case 'disable-auto-update':
466 case 'enable-auto-update-selected':
467 case 'disable-auto-update-selected':
468 if ( ! current_user_can( 'update_plugins' ) || ! wp_is_auto_update_enabled_for_type( 'plugin' ) ) {
469 wp_die( __( 'Sorry, you are not allowed to manage plugins automatic updates.' ) );
470 }
471
472 if ( is_multisite() && ! is_network_admin() ) {
473 wp_die( __( 'Please connect to your network admin to manage plugins automatic updates.' ) );
474 }
475
476 $redirect = self_admin_url( "plugins.php?plugin_status={$status}&paged={$page}&s={$s}" );
477
478 if ( 'enable-auto-update' === $action || 'disable-auto-update' === $action ) {
479 if ( empty( $plugin ) ) {
480 wp_redirect( $redirect );
481 exit;
482 }
483
484 check_admin_referer( 'updates' );
485 } else {
486 if ( empty( $_POST['checked'] ) ) {
487 wp_redirect( $redirect );
488 exit;
489 }
490
491 check_admin_referer( 'bulk-plugins' );
492 }
493
494 $auto_updates = (array) get_site_option( 'auto_update_plugins', array() );
495
496 if ( 'enable-auto-update' === $action ) {
497 $auto_updates[] = $plugin;
498 $auto_updates = array_unique( $auto_updates );
499 $redirect = add_query_arg( array( 'enabled-auto-update' => 'true' ), $redirect );
500 } elseif ( 'disable-auto-update' === $action ) {
501 $auto_updates = array_diff( $auto_updates, array( $plugin ) );
502 $redirect = add_query_arg( array( 'disabled-auto-update' => 'true' ), $redirect );
503 } else {
504 $plugins = (array) wp_unslash( $_POST['checked'] );
505
506 if ( 'enable-auto-update-selected' === $action ) {
507 $new_auto_updates = array_merge( $auto_updates, $plugins );
508 $new_auto_updates = array_unique( $new_auto_updates );
509 $query_args = array( 'enabled-auto-update-multi' => 'true' );
510 } else {
511 $new_auto_updates = array_diff( $auto_updates, $plugins );
512 $query_args = array( 'disabled-auto-update-multi' => 'true' );
513 }
514
515 // Return early if all selected plugins already have auto-updates enabled or disabled.
516 // Must use non-strict comparison, so that array order is not treated as significant.
517 if ( $new_auto_updates == $auto_updates ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual
518 wp_redirect( $redirect );
519 exit;
520 }
521
522 $auto_updates = $new_auto_updates;
523 $redirect = add_query_arg( $query_args, $redirect );
524 }
525
526 /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */
527 $all_items = apply_filters( 'all_plugins', get_plugins() );
528
529 // Remove plugins that don't exist or have been deleted since the option was last updated.
530 $auto_updates = array_intersect( $auto_updates, array_keys( $all_items ) );
531
532 update_site_option( 'auto_update_plugins', $auto_updates );
533
534 wp_redirect( $redirect );
535 exit;
536 default:
537 if ( isset( $_POST['checked'] ) ) {
538 check_admin_referer( 'bulk-plugins' );
539
540 $screen = get_current_screen()->id;
541 $sendback = wp_get_referer();
542 $plugins = isset( $_POST['checked'] ) ? (array) wp_unslash( $_POST['checked'] ) : array();
543
544 /** This action is documented in wp-admin/edit.php */
545 $sendback = apply_filters( "handle_bulk_actions-{$screen}", $sendback, $action, $plugins ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
546 wp_safe_redirect( $sendback );
547 exit;
548 }
549 break;
550 }
551}
552
553$wp_list_table->prepare_items();
554
555wp_enqueue_script( 'plugin-install' );
556add_thickbox();
557
558add_screen_option( 'per_page', array( 'default' => 999 ) );
559
560get_current_screen()->add_help_tab(
561 array(
562 'id' => 'overview',
563 'title' => __( 'Overview' ),
564 'content' =>
565 '<p>' . __( 'Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.' ) . '</p>' .
566 '<p>' . __( 'The search for installed plugins will search for terms in their name, description, or author.' ) . ' <span id="live-search-desc" class="hide-if-no-js">' . __( 'The search results will be updated as you type.' ) . '</span></p>' .
567 '<p>' . sprintf(
568 /* translators: %s: WordPress Plugin Directory URL. */
569 __( 'If you would like to see more plugins to choose from, click on the &#8220;Add Plugin&#8221; button and you will be able to browse or search for additional plugins from the <a href="%s">WordPress Plugin Directory</a>. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they are free!' ),
570 __( 'https://wordpress.org/plugins/' )
571 ) . '</p>',
572 )
573);
574get_current_screen()->add_help_tab(
575 array(
576 'id' => 'compatibility-problems',
577 'title' => __( 'Troubleshooting' ),
578 'content' =>
579 '<p>' . __( 'Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin&#8217;s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue.' ) . '</p>' .
580 '<p>' . sprintf(
581 /* translators: %s: WP_PLUGIN_DIR constant value. */
582 __( 'If something goes wrong with a plugin and you cannot use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated.' ),
583 '<code>' . WP_PLUGIN_DIR . '</code>'
584 ) . '</p>',
585 )
586);
587
588$help_sidebar_autoupdates = '';
589
590if ( current_user_can( 'update_plugins' ) && wp_is_auto_update_enabled_for_type( 'plugin' ) ) {
591 get_current_screen()->add_help_tab(
592 array(
593 'id' => 'plugins-themes-auto-updates',
594 'title' => __( 'Auto-updates' ),
595 'content' =>
596 '<p>' . __( 'Auto-updates can be enabled or disabled for each individual plugin. Plugins with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system.' ) . '</p>' .
597 '<p>' . __( 'Auto-updates are only available for plugins recognized by WordPress.org, or that include a compatible update system.' ) . '</p>' .
598 '<p>' . __( 'Please note: Third-party themes and plugins, or custom code, may override WordPress scheduling.' ) . '</p>',
599 )
600 );
601
602 $help_sidebar_autoupdates = '<p>' . __( '<a href="https://wordpress.org/documentation/article/plugins-themes-auto-updates/">Documentation on Auto-updates</a>' ) . '</p>';
603}
604
605if ( current_user_can( 'install_plugins' ) ) {
606 get_current_screen()->add_help_tab(
607 array(
608 'id' => 'plugins-dependencies',
609 'title' => __( 'Dependencies' ),
610 'content' =>
611 '<p>' . __( 'Plugin Dependencies aims to make the process of installing and activating add-ons (dependents) and the plugins they rely on (dependencies) consistent and easy.' ) . '</p>' .
612 '<p>' . __( 'If a required plugin is deleted, a notice will be displayed on the Plugin administration screen informing the user that there is some missing dependencies to install and/or activate. Additionally, each plugin whose dependencies are not met will have an error notice on their plugin row.' ) . '</p>' .
613 '<p>' . __( 'If a dependent plugin is missing some dependencies, its activation button will be disabled until the required dependencies are activated.' ) . '</p>',
614 )
615 );
616}
617
618get_current_screen()->set_help_sidebar(
619 '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
620 '<p>' . __( '<a href="https://wordpress.org/documentation/article/manage-plugins/">Documentation on Managing Plugins</a>' ) . '</p>' .
621 $help_sidebar_autoupdates .
622 '<p>' . __( '<a href="https://wordpress.org/support/forums/">Support forums</a>' ) . '</p>'
623);
624
625get_current_screen()->set_screen_reader_content(
626 array(
627 'heading_views' => __( 'Filter plugins list' ),
628 'heading_pagination' => __( 'Plugins list navigation' ),
629 'heading_list' => __( 'Plugins list' ),
630 )
631);
632
633// Used in the HTML title tag.
634$title = __( 'Plugins' );
635$parent_file = 'plugins.php';
636
637require_once ABSPATH . 'wp-admin/admin-header.php';
638
639$invalid = validate_active_plugins();
640if ( ! empty( $invalid ) ) {
641 foreach ( $invalid as $plugin_file => $error ) {
642 $deactivated_message = sprintf(
643 /* translators: 1: Plugin file, 2: Error message. */
644 __( 'The plugin %1$s has been deactivated due to an error: %2$s' ),
645 '<code>' . esc_html( $plugin_file ) . '</code>',
646 esc_html( $error->get_error_message() )
647 );
648 wp_admin_notice(
649 $deactivated_message,
650 array(
651 'id' => 'message',
652 'additional_classes' => array( 'error' ),
653 )
654 );
655 }
656}
657
658// Used by wp_admin_notice() updated notices.
659$updated_notice_args = array(
660 'id' => 'message',
661 'additional_classes' => array( 'updated' ),
662 'dismissible' => true,
663);
664if ( isset( $_GET['error'] ) ) {
665
666 if ( isset( $_GET['main'] ) ) {
667 $errmsg = __( 'You cannot delete a plugin while it is active on the main site.' );
668 } elseif ( isset( $_GET['charsout'] ) ) {
669 $errmsg = sprintf(
670 /* translators: %d: Number of characters. */
671 _n(
672 'The plugin generated %d character of <strong>unexpected output</strong> during activation.',
673 'The plugin generated %d characters of <strong>unexpected output</strong> during activation.',
674 $_GET['charsout']
675 ),
676 $_GET['charsout']
677 );
678 $errmsg .= ' ' . __( 'If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.' );
679 } elseif ( 'resuming' === $_GET['error'] ) {
680 $errmsg = __( 'Plugin could not be resumed because it triggered a <strong>fatal error</strong>.' );
681 } else {
682 $errmsg = __( 'Plugin could not be activated because it triggered a <strong>fatal error</strong>.' );
683 }
684
685 if ( ! isset( $_GET['main'] ) && ! isset( $_GET['charsout'] )
686 && isset( $_GET['_error_nonce'] ) && wp_verify_nonce( $_GET['_error_nonce'], 'plugin-activation-error_' . $plugin )
687 ) {
688 $iframe_url = add_query_arg(
689 array(
690 'action' => 'error_scrape',
691 'plugin' => urlencode( $plugin ),
692 '_wpnonce' => urlencode( $_GET['_error_nonce'] ),
693 ),
694 admin_url( 'plugins.php' )
695 );
696
697 $errmsg .= '<iframe style="border:0" width="100%" height="70px" src="' . esc_url( $iframe_url ) . '"></iframe>';
698 }
699
700 wp_admin_notice(
701 $errmsg,
702 array(
703 'id' => 'message',
704 'additional_classes' => array( 'error' ),
705 )
706 );
707
708} elseif ( isset( $_GET['deleted'] ) ) {
709 $delete_result = get_option( 'plugins_delete_result_' . $user_ID );
710 // Delete it once we're done.
711 delete_option( 'plugins_delete_result_' . $user_ID );
712
713 if ( is_wp_error( $delete_result ) ) {
714 $plugin_not_deleted_message = sprintf(
715 /* translators: %s: Error message. */
716 __( 'Plugin could not be deleted due to an error: %s' ),
717 esc_html( $delete_result->get_error_message() )
718 );
719 wp_admin_notice(
720 $plugin_not_deleted_message,
721 array(
722 'id' => 'message',
723 'additional_classes' => array( 'error' ),
724 'dismissible' => true,
725 )
726 );
727 } else {
728 if ( 1 === (int) $_GET['deleted'] ) {
729 $plugins_deleted_message = __( 'The selected plugin has been deleted.' );
730 } else {
731 $plugins_deleted_message = __( 'The selected plugins have been deleted.' );
732 }
733 wp_admin_notice( $plugins_deleted_message, $updated_notice_args );
734 }
735} elseif ( isset( $_GET['activate'] ) ) {
736 wp_admin_notice( __( 'Plugin activated.' ), $updated_notice_args );
737} elseif ( isset( $_GET['activate-multi'] ) ) {
738 wp_admin_notice( __( 'Selected plugins activated.' ), $updated_notice_args );
739} elseif ( isset( $_GET['deactivate'] ) ) {
740 wp_admin_notice( __( 'Plugin deactivated.' ), $updated_notice_args );
741} elseif ( isset( $_GET['deactivate-multi'] ) ) {
742 wp_admin_notice( __( 'Selected plugins deactivated.' ), $updated_notice_args );
743} elseif ( 'update-selected' === $action ) {
744 wp_admin_notice( __( 'All selected plugins are up to date.' ), $updated_notice_args );
745} elseif ( isset( $_GET['resume'] ) ) {
746 wp_admin_notice( __( 'Plugin resumed.' ), $updated_notice_args );
747} elseif ( isset( $_GET['enabled-auto-update'] ) ) {
748 wp_admin_notice( __( 'Plugin will be auto-updated.' ), $updated_notice_args );
749} elseif ( isset( $_GET['disabled-auto-update'] ) ) {
750 wp_admin_notice( __( 'Plugin will no longer be auto-updated.' ), $updated_notice_args );
751} elseif ( isset( $_GET['enabled-auto-update-multi'] ) ) {
752 wp_admin_notice( __( 'Selected plugins will be auto-updated.' ), $updated_notice_args );
753} elseif ( isset( $_GET['disabled-auto-update-multi'] ) ) {
754 wp_admin_notice( __( 'Selected plugins will no longer be auto-updated.' ), $updated_notice_args );
755}
756?>
757
758<?php WP_Plugin_Dependencies::display_admin_notice_for_unmet_dependencies(); ?>
759<?php WP_Plugin_Dependencies::display_admin_notice_for_circular_dependencies(); ?>
760<div class="wrap">
761<h1 class="wp-heading-inline">
762<?php
763echo esc_html( $title );
764?>
765</h1>
766
767<?php
768if ( ( ! is_multisite() || is_network_admin() ) && current_user_can( 'install_plugins' ) ) {
769 ?>
770 <a href="<?php echo esc_url( self_admin_url( 'plugin-install.php' ) ); ?>" class="page-title-action"><?php echo esc_html__( 'Add Plugin' ); ?></a>
771 <?php
772}
773
774if ( strlen( $s ) ) {
775 echo '<span class="subtitle">';
776 printf(
777 /* translators: %s: Search query. */
778 __( 'Search results for: %s' ),
779 '<strong>' . esc_html( urldecode( $s ) ) . '</strong>'
780 );
781 echo '</span>';
782}
783?>
784
785<hr class="wp-header-end">
786
787<?php
788/**
789 * Fires before the plugins list table is rendered.
790 *
791 * This hook also fires before the plugins list table is rendered in the Network Admin.
792 *
793 * Please note: The 'active' portion of the hook name does not refer to whether the current
794 * view is for active plugins, but rather all plugins actively-installed.
795 *
796 * @since 3.0.0
797 *
798 * @param array[] $plugins_all An array of arrays containing information on all installed plugins.
799 */
800do_action( 'pre_current_active_plugins', $plugins['all'] );
801?>
802
803<?php $wp_list_table->views(); ?>
804
805<form class="search-form search-plugins" method="get">
806<?php $wp_list_table->search_box( __( 'Search installed plugins' ), 'plugin' ); ?>
807</form>
808
809<form method="post" id="bulk-action-form">
810
811<input type="hidden" name="plugin_status" value="<?php echo esc_attr( $status ); ?>" />
812<input type="hidden" name="paged" value="<?php echo esc_attr( $page ); ?>" />
813
814<?php $wp_list_table->display(); ?>
815</form>
816
817 <span class="spinner"></span>
818</div>
819
820<?php
821wp_print_request_filesystem_credentials_modal();
822wp_print_admin_notice_templates();
823wp_print_update_row_templates();
824
825require_once ABSPATH . 'wp-admin/admin-footer.php';
826
Ui Ux Design – Teachers Night Out https://cardgames4educators.com Wed, 16 Oct 2024 22:24:18 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://cardgames4educators.com/wp-content/uploads/2024/06/cropped-Card-4-Educators-logo-32x32.png Ui Ux Design – Teachers Night Out https://cardgames4educators.com 32 32 Masters In English How English Speaker https://cardgames4educators.com/masters-in-english-how-english-speaker/ https://cardgames4educators.com/masters-in-english-how-english-speaker/#comments Mon, 27 May 2024 08:54:45 +0000 https://themexriver.com/wp/kadu/?p=1

Erat himenaeos neque id sagittis massa. Hac suscipit pulvinar dignissim platea magnis eu. Don tellus a pharetra inceptos efficitur dui pulvinar. Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent pulvinar odio volutpat parturient. Quisque risus finibus suspendisse mus purus magnis facilisi condimentum consectetur dui. Curae elit suspendisse cursus vehicula.

Turpis taciti class non vel pretium quis pulvinar tempor lobortis nunc. Libero phasellus parturient sapien volutpat malesuada ornare. Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae. Porta est tempor ex eget feugiat vulputate ipsum. Justo nec iaculis habitant diam arcu fermentum.

We offer comprehen sive emplo ment services such as assistance wit employer compliance.Our company is your strategic HR partner as instead of HR. john smithson

Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae.

Exploring Learning Landscapes in Academic

Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent.

]]>
https://cardgames4educators.com/masters-in-english-how-english-speaker/feed/ 1