���� JFIF �� �
"" $(4,$&1'-=-157:::#+?D?8C49:7
7%%77777777777777777777777777777777777777777777777777�� { �" �� �� 5 !1AQa"q�2��BR��#b������� �� �� ? ��D@DDD@DDD@DDkK��6 �UG�4V�1��
�����릟�@�#���RY�dqp�
����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Æ��ܯsO"B�c>;
�e�4��5�k��/CB��.
�J?��;�҈�������������������~�<�VZ�ê¼2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ
B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r�����
Ď0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�?
�0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA׾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��
' . sprintf( /* translators: %s: URL to Update PHP page. */ __( 'Learn more about updating PHP.' ), esc_url( wp_get_update_php_url() ) ); $annotation = wp_get_update_php_annotation(); if ( $annotation ) { $php_update_message .= '
' . $annotation . ''; } if ( ! $mysql_compat && ! $php_compat ) { $message = sprintf( /* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required PHP version number, 4: Minimum required MySQL version number, 5: Current PHP version number, 6: Current MySQL version number. */ __( 'You cannot update because WordPress %2$s requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s.' ), $version_url, $update->current, $update->php_version, $update->mysql_version, $php_version, $mysql_version ) . $php_update_message; } elseif ( ! $php_compat ) { $message = sprintf( /* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required PHP version number, 4: Current PHP version number. */ __( 'You cannot update because WordPress %2$s requires PHP version %3$s or higher. You are running version %4$s.' ), $version_url, $update->current, $update->php_version, $php_version ) . $php_update_message; } elseif ( ! $mysql_compat ) { $message = sprintf( /* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required MySQL version number, 4: Current MySQL version number. */ __( 'You cannot update because WordPress %2$s requires MySQL version %3$s or higher. You are running version %4$s.' ), $version_url, $update->current, $update->mysql_version, $mysql_version ); } else { $message = sprintf( /* translators: 1: Installed WordPress version number, 2: URL to WordPress release notes, 3: New WordPress version number, including locale if necessary. */ __( 'You can update from WordPress %1$s to WordPress %3$s manually:' ), $wp_version, $version_url, $version_string ); } if ( ! $mysql_compat || ! $php_compat ) { $show_buttons = false; } } } echo '
'; echo $message; echo '
'; echo ''; } /** * Display dismissed updates. * * @since 2.7.0 */ function dismissed_updates() { $dismissed = get_core_updates( array( 'dismissed' => true, 'available' => false, ) ); if ( $dismissed ) { $show_text = esc_js( __( 'Show hidden updates' ) ); $hide_text = esc_js( __( 'Hide hidden updates' ) ); ?> '; echo '' . __( 'While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, this mode will be deactivated.' ) . '
'; } elseif ( ! $updates ) { list( $normalized_version ) = explode( '-', $wp_version ); echo '' . sprintf( /* translators: 1: URL to About screen, 2: WordPress version. */ __( 'Learn more about WordPress %2$s.' ), esc_url( self_admin_url( 'about.php' ) ), $normalized_version ) . '
'; } dismissed_updates(); } /** * Display WordPress auto-updates settings. * * @since 5.6.0 */ function core_auto_updates_settings() { if ( isset( $_GET['core-major-auto-updates-saved'] ) ) { if ( 'enabled' === $_GET['core-major-auto-updates-saved'] ) { $notice_text = __( 'Automatic updates for all WordPress versions have been enabled. Thank you!' ); wp_admin_notice( $notice_text, array( 'type' => 'success', 'dismissible' => true, ) ); } elseif ( 'disabled' === $_GET['core-major-auto-updates-saved'] ) { $notice_text = __( 'WordPress will only receive automatic security and maintenance releases from now on.' ); wp_admin_notice( $notice_text, array( 'type' => 'success', 'dismissible' => true, ) ); } } require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $updater = new WP_Automatic_Updater(); // Defaults: $upgrade_dev = get_site_option( 'auto_update_core_dev', 'enabled' ) === 'enabled'; $upgrade_minor = get_site_option( 'auto_update_core_minor', 'enabled' ) === 'enabled'; $upgrade_major = get_site_option( 'auto_update_core_major', 'unset' ) === 'enabled'; $can_set_update_option = true; // WP_AUTO_UPDATE_CORE = true (all), 'beta', 'rc', 'development', 'branch-development', 'minor', false. if ( defined( 'WP_AUTO_UPDATE_CORE' ) ) { if ( false === WP_AUTO_UPDATE_CORE ) { // Defaults to turned off, unless a filter allows it. $upgrade_dev = false; $upgrade_minor = false; $upgrade_major = false; } elseif ( true === WP_AUTO_UPDATE_CORE || in_array( WP_AUTO_UPDATE_CORE, array( 'beta', 'rc', 'development', 'branch-development' ), true ) ) { // ALL updates for core. $upgrade_dev = true; $upgrade_minor = true; $upgrade_major = true; } elseif ( 'minor' === WP_AUTO_UPDATE_CORE ) { // Only minor updates for core. $upgrade_dev = false; $upgrade_minor = true; $upgrade_major = false; } // The UI is overridden by the `WP_AUTO_UPDATE_CORE` constant. $can_set_update_option = false; } if ( $updater->is_disabled() ) { $upgrade_dev = false; $upgrade_minor = false; $upgrade_major = false; /* * The UI is overridden by the `AUTOMATIC_UPDATER_DISABLED` constant * or the `automatic_updater_disabled` filter, * or by `wp_is_file_mod_allowed( 'automatic_updater' )`. * See `WP_Automatic_Updater::is_disabled()`. */ $can_set_update_option = false; } // Is the UI overridden by a plugin using the `allow_major_auto_core_updates` filter? if ( has_filter( 'allow_major_auto_core_updates' ) ) { $can_set_update_option = false; } /** This filter is documented in wp-admin/includes/class-core-upgrader.php */ $upgrade_dev = apply_filters( 'allow_dev_auto_core_updates', $upgrade_dev ); /** This filter is documented in wp-admin/includes/class-core-upgrader.php */ $upgrade_minor = apply_filters( 'allow_minor_auto_core_updates', $upgrade_minor ); /** This filter is documented in wp-admin/includes/class-core-upgrader.php */ $upgrade_major = apply_filters( 'allow_major_auto_core_updates', $upgrade_major ); $auto_update_settings = array( 'dev' => $upgrade_dev, 'minor' => $upgrade_minor, 'major' => $upgrade_major, ); if ( $upgrade_major ) { $wp_version = wp_get_wp_version(); $updates = get_core_updates(); if ( isset( $updates[0]->version ) && version_compare( $updates[0]->version, $wp_version, '>' ) ) { echo '' . wp_get_auto_update_message() . '
'; } } $action_url = self_admin_url( 'update-core.php?action=core-major-auto-updates-settings' ); ?>
is_vcs_checkout( ABSPATH ) ) {
_e( 'This site appears to be under version control. Automatic updates are disabled.' );
} elseif ( $upgrade_major ) {
_e( 'This site is automatically kept up to date with each new version of WordPress.' );
if ( $can_set_update_option ) {
echo '
';
printf(
'%s',
wp_nonce_url( add_query_arg( 'value', 'disable', $action_url ), 'core-major-auto-updates-nonce' ),
__( 'Switch to automatic updates for maintenance and security releases only.' )
);
}
} elseif ( $upgrade_minor ) {
_e( 'This site is automatically kept up to date with maintenance and security releases of WordPress only.' );
if ( $can_set_update_option ) {
echo '
';
printf(
'%s',
wp_nonce_url( add_query_arg( 'value', 'enable', $action_url ), 'core-major-auto-updates-nonce' ),
__( 'Enable automatic updates for all new versions of WordPress.' )
);
}
} else {
_e( 'This site will not receive automatic updates for new versions of WordPress.' );
}
?>
' . __( 'Your plugins are all up to date.' ) . '
'; return; } $form_action = 'update-core.php?action=do-plugin-upgrade'; $core_updates = get_core_updates(); if ( ! isset( $core_updates[0]->response ) || 'latest' === $core_updates[0]->response || 'development' === $core_updates[0]->response || version_compare( $core_updates[0]->current, $cur_wp_version, '=' ) ) { $core_update_version = false; } else { $core_update_version = $core_updates[0]->current; } $plugins_count = count( $plugins ); ?>' . __( 'Your themes are all up to date.' ) . '
'; return; } $form_action = 'update-core.php?action=do-theme-upgrade'; $themes_count = count( $themes ); ?>Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications.' ), __( 'https://developer.wordpress.org/themes/advanced-topics/child-themes/' ) ); ?>
' . __( 'Translations' ) . ''; echo '' . __( 'Your translations are all up to date.' ) . '
'; } return; } $form_action = 'update-core.php?action=do-translation-upgrade'; ?> new_files ) && ! $update->new_files; ?>' . __( 'If an update is available, you᾿ll see a notification appear in the Toolbar and navigation menu.' ) . ' ' . __( 'Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => $updates_overview, ) ); $updates_howto = '' . __( 'WordPress — Updating your WordPress installation is a simple one-click procedure: just click on the “Update now” button when you are notified that a new version is available.' ) . ' ' . __( 'In most cases, WordPress will automatically apply maintenance and security updates in the background for you.' ) . '
'; $updates_howto .= '' . __( 'Themes and Plugins — To update individual themes or plugins from this screen, use the checkboxes to make your selection, then click on the appropriate “Update” button. To update all of your themes or plugins at once, you can check the box at the top of the section to select all before clicking the update button.' ) . '
'; if ( 'en_US' !== get_locale() ) { $updates_howto .= '' . __( 'Translations — The files translating WordPress into your language are updated for you whenever any other updates occur. But if these files are out of date, you can click the “Update Translations” button.' ) . '
'; } get_current_screen()->add_help_tab( array( 'id' => 'how-to-update', 'title' => __( 'How to Update' ), 'content' => $updates_howto, ) ); $help_sidebar_autoupdates = ''; if ( ( current_user_can( 'update_themes' ) && wp_is_auto_update_enabled_for_type( 'theme' ) ) || ( current_user_can( 'update_plugins' ) && wp_is_auto_update_enabled_for_type( 'plugin' ) ) ) { $help_tab_autoupdates = '' . __( 'Auto-updates can be enabled or disabled for WordPress major versions and for each individual theme or plugin. Themes or 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.' ) . '
'; $help_tab_autoupdates .= '' . __( 'Please note: Third-party themes and plugins, or custom code, may override WordPress scheduling.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'plugins-themes-auto-updates', 'title' => __( 'Auto-updates' ), 'content' => $help_tab_autoupdates, ) ); $help_sidebar_autoupdates = '' . __( 'Documentation on Auto-updates' ) . '
'; } $help_sidebar_rollback = ''; if ( current_user_can( 'update_themes' ) || current_user_can( 'update_plugins' ) ) { $rollback_help = '' . __( 'This feature will create a temporary backup of a plugin or theme before it is upgraded. This backup is used to restore the plugin or theme back to its previous state if there is an error during the update process.' ) . '
'; $rollback_help .= '' . __( 'On systems with fewer resources, this may lead to server timeouts or resource limits being reached. If you encounter an issue during the update process, please create a support forum topic and reference Rollback in the issue title.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'rollback-plugins-themes', 'title' => __( 'Restore Plugin or Theme' ), 'content' => $rollback_help, ) ); $help_sidebar_rollback = '' . __( 'Common Errors' ) . '
'; } get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Updating WordPress' ) . '
' . $help_sidebar_autoupdates . '' . __( 'Support forums' ) . '
' . $help_sidebar_rollback ); if ( 'upgrade-core' === $action ) { // Force an update check when requested. $force_check = ! empty( $_GET['force-check'] ); wp_version_check( array(), $force_check ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>'; printf( /* translators: 1: Date, 2: Time. */ __( 'Last checked on %1$s at %2$s.' ), /* translators: Last update date format. See https://www.php.net/manual/datetime.format.php */ date_i18n( __( 'F j, Y' ), $last_update_check ), /* translators: Last update time format. See https://www.php.net/manual/datetime.format.php */ date_i18n( __( 'g:i a T' ), $last_update_check ) ); echo ' ' . __( 'Check again.' ) . ''; echo '
'; if ( current_user_can( 'update_core' ) ) { core_auto_updates_settings(); core_upgrade_preamble(); } if ( current_user_can( 'update_plugins' ) ) { list_plugin_updates(); } if ( current_user_can( 'update_themes' ) ) { list_theme_updates(); } if ( current_user_can( 'update_languages' ) ) { list_translation_updates(); } /** * Fires after the core, plugin, and theme update tables. * * @since 2.9.0 */ do_action( 'core_upgrade_preamble' ); echo '' . __( 'The Privacy screen lets you either build a new privacy-policy page or choose one you already have to show.' ) . '
' . '' . __( 'This screen includes suggestions to help you write your own privacy policy. However, it is your responsibility to use these resources correctly, to provide the information required by your privacy policy, and to keep this information current and accurate.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Privacy Settings' ) . '
' ); if ( ! empty( $action ) ) { check_admin_referer( $action ); if ( 'set-privacy-page' === $action ) { $privacy_policy_page_id = isset( $_POST['page_for_privacy_policy'] ) ? (int) $_POST['page_for_privacy_policy'] : 0; update_option( 'wp_page_for_privacy_policy', $privacy_policy_page_id ); $privacy_page_updated_message = __( 'Privacy Policy page updated successfully.' ); if ( $privacy_policy_page_id ) { /* * Don't always link to the menu customizer: * * - Unpublished pages can't be selected by default. * - `WP_Customize_Nav_Menus::__construct()` checks the user's capabilities. * - Themes might not "officially" support menus. */ if ( 'publish' === get_post_status( $privacy_policy_page_id ) && current_user_can( 'edit_theme_options' ) && current_theme_supports( 'menus' ) ) { $privacy_page_updated_message = sprintf( /* translators: %s: URL to Customizer -> Menus. */ __( 'Privacy Policy page setting updated successfully. Remember to update your menus!' ), esc_url( add_query_arg( 'autofocus[panel]', 'nav_menus', admin_url( 'customize.php' ) ) ) ); } } add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', $privacy_page_updated_message, 'success' ); } elseif ( 'create-privacy-page' === $action ) { if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php'; } $privacy_policy_page_content = WP_Privacy_Policy_Content::get_default_content(); $privacy_policy_page_id = wp_insert_post( array( 'post_title' => __( 'Privacy Policy' ), 'post_status' => 'draft', 'post_type' => 'page', 'post_content' => $privacy_policy_page_content, ), true ); if ( is_wp_error( $privacy_policy_page_id ) ) { add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', __( 'Unable to create a Privacy Policy page.' ), 'error' ); } else { update_option( 'wp_page_for_privacy_policy', $privacy_policy_page_id ); wp_redirect( admin_url( 'post.php?post=' . $privacy_policy_page_id . '&action=edit' ) ); exit; } } } // If a Privacy Policy page ID is available, make sure the page actually exists. If not, display an error. $privacy_policy_page_exists = false; $privacy_policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' ); if ( ! empty( $privacy_policy_page_id ) ) { $privacy_policy_page = get_post( $privacy_policy_page_id ); if ( ! $privacy_policy_page instanceof WP_Post ) { add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', __( 'The currently selected Privacy Policy page does not exist. Please create or select a new page.' ), 'error' ); } else { if ( 'trash' === $privacy_policy_page->post_status ) { add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', sprintf( /* translators: %s: URL to Pages Trash. */ __( 'The currently selected Privacy Policy page is in the Trash. Please create or select a new Privacy Policy page or restore the current page.' ), 'edit.php?post_status=trash&post_type=page' ), 'error' ); } else { $privacy_policy_page_exists = true; } } } $parent_file = 'options-general.php'; wp_enqueue_script( 'privacy-tools' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>' . __( 'This screen is where you manage requests to erase personal data.' ) . '
' . '' . __( 'Privacy Laws around the world require businesses and online services to delete, anonymize, or forget the data they collect about an individual. The rights those laws enshrine are sometimes called the "Right to be Forgotten".' ) . '
' . '' . __( 'The tool associates data stored in WordPress with a supplied email address, including profile data and comments.' ) . '
' . '' . __( 'Note: As this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with erasure requests. For example, you are also responsible for ensuring that data collected by or stored with the 3rd party services your organization uses gets deleted.' ) . '
', ) ); get_current_screen()->add_help_tab( array( 'id' => 'default-data', 'title' => __( 'Default Data' ), 'content' => '' . __( 'WordPress collects (but never publishes) a limited amount of data from logged-in users but then deletes it or anonymizes it. That data can include:' ) . '
' . '' . __( 'Profile Information — user email address, username, display name, nickname, first name, last name, description/bio, and registration date.' ) . '
' . '' . __( 'Community Events Location — The IP Address of the user which is used for the Upcoming Community Events shown in the dashboard widget.' ) . '
' . '' . __( 'Session Tokens — User login information, IP Addresses, Expiration Date, User Agent (Browser/OS), and Last Login.' ) . '
' . '' . __( 'Comments — WordPress does not delete comments. The software does anonymize (but, again, never publishes) the associated Email Address, IP Address, and User Agent (Browser/OS).' ) . '
' . '' . __( 'Media — A list of URLs for all media file uploads made by the user.' ) . '
', ) ); $privacy_policy_guide = '' . sprintf( /* translators: %s: URL to Privacy Policy Guide screen. */ __( 'If you are not sure, check the plugin documentation or contact the plugin author to see if the plugin collects data and if it supports the Data Eraser tool. This information may be available in the Privacy Policy Guide.' ), admin_url( 'options-privacy.php?tab=policyguide' ) ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'plugin-data', 'title' => __( 'Plugin Data' ), 'content' => '' . __( 'Many plugins may collect or store personal data either in the WordPress database or remotely. Any Erase Personal Data request should delete data from plugins as well.' ) . '
' . $privacy_policy_guide . '' . __( 'If you are a plugin author, you can learn more about how to add the Personal Data Eraser to a plugin.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Erase Personal Data' ) . '
' . '' . __( 'Support forums' ) . '
' ); // Handle list table actions. _wp_personal_data_handle_actions(); // Cleans up failed and expired requests before displaying the list table. _wp_personal_data_cleanup_requests(); wp_enqueue_script( 'privacy-tools' ); add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'remove_personal_data_requests_per_page', ) ); $_list_table_args = array( 'plural' => 'privacy_requests', 'singular' => 'privacy_request', ); $requests_table = _get_list_table( 'WP_Privacy_Data_Removal_Requests_List_Table', $_list_table_args ); $requests_table->screen->set_screen_reader_content( array( 'heading_views' => __( 'Filter erase personal data list' ), 'heading_pagination' => __( 'Erase personal data list navigation' ), 'heading_list' => __( 'Erase personal data list' ), ) ); $requests_table->process_bulk_action(); $requests_table->prepare_items(); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>' . __( 'This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they will not all fit here! :) Use the documentation links to get information on what each discussion setting does.' ) . '
' . '' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Discussion Settings' ) . '
' . '' . __( 'Support forums' ) . '
' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>
' . __( 'Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.' ) . '
' . '' . __( 'The search for installed plugins will search for terms in their name, description, or author.' ) . '
' . '' . sprintf( /* translators: %s: WordPress Plugin Directory URL. */ __( 'If you would like to see more plugins to choose from, click on the “Add New Plugin” button and you will be able to browse or search for additional plugins from the WordPress Plugin Directory. 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!' ), __( 'https://wordpress.org/plugins/' ) ) . '
', ) ); get_current_screen()->add_help_tab( array( 'id' => 'compatibility-problems', 'title' => __( 'Troubleshooting' ), 'content' => '' . __( 'Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’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.' ) . '
' . '' . sprintf(
/* translators: %s: WP_PLUGIN_DIR constant value. */
__( '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.' ),
'' . WP_PLUGIN_DIR . '
'
) . '
' . __( '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.' ) . '
' . '' . __( 'Auto-updates are only available for plugins recognized by WordPress.org, or that include a compatible update system.' ) . '
' . '' . __( 'Please note: Third-party themes and plugins, or custom code, may override WordPress scheduling.' ) . '
', ) ); $help_sidebar_autoupdates = '' . __( 'Documentation on Auto-updates' ) . '
'; } if ( current_user_can( 'install_plugins' ) ) { get_current_screen()->add_help_tab( array( 'id' => 'plugins-dependencies', 'title' => __( 'Dependencies' ), 'content' => '' . __( 'Plugin Dependencies aims to make the process of installing and activating add-ons (dependents) and the plugins they rely on (dependencies) consistent and easy.' ) . '
' . '' . __( '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.' ) . '
' . '' . __( 'If a dependent plugin is missing some dependencies, its activation button will be disabled until the required dependencies are activated.' ) . '
', ) ); } get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Managing Plugins' ) . '
' . $help_sidebar_autoupdates . '' . __( 'Support forums' ) . '
' ); get_current_screen()->set_screen_reader_content( array( 'heading_views' => __( 'Filter plugins list' ), 'heading_pagination' => __( 'Plugins list navigation' ), 'heading_list' => __( 'Plugins list' ), ) ); // Used in the HTML title tag. $title = __( 'Plugins' ); $parent_file = 'plugins.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; $invalid = validate_active_plugins(); if ( ! empty( $invalid ) ) { foreach ( $invalid as $plugin_file => $error ) { $deactivated_message = sprintf( /* translators: 1: Plugin file, 2: Error message. */ __( 'The plugin %1$s has been deactivated due to an error: %2$s' ), '' . esc_html( $plugin_file ) . '
',
esc_html( $error->get_error_message() )
);
wp_admin_notice(
$deactivated_message,
array(
'id' => 'message',
'additional_classes' => array( 'error' ),
)
);
}
}
// Used by wp_admin_notice() updated notices.
$updated_notice_args = array(
'id' => 'message',
'additional_classes' => array( 'updated' ),
'dismissible' => true,
);
if ( isset( $_GET['error'] ) ) {
if ( isset( $_GET['main'] ) ) {
$errmsg = __( 'You cannot delete a plugin while it is active on the main site.' );
} elseif ( isset( $_GET['charsout'] ) ) {
$errmsg = sprintf(
/* translators: %d: Number of characters. */
_n(
'The plugin generated %d character of unexpected output during activation.',
'The plugin generated %d characters of unexpected output during activation.',
$_GET['charsout']
),
$_GET['charsout']
);
$errmsg .= ' ' . __( 'If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.' );
} elseif ( 'resuming' === $_GET['error'] ) {
$errmsg = __( 'Plugin could not be resumed because it triggered a fatal error.' );
} else {
$errmsg = __( 'Plugin could not be activated because it triggered a fatal error.' );
}
if ( ! isset( $_GET['main'] ) && ! isset( $_GET['charsout'] )
&& isset( $_GET['_error_nonce'] ) && wp_verify_nonce( $_GET['_error_nonce'], 'plugin-activation-error_' . $plugin )
) {
$iframe_url = add_query_arg(
array(
'action' => 'error_scrape',
'plugin' => urlencode( $plugin ),
'_wpnonce' => urlencode( $_GET['_error_nonce'] ),
),
admin_url( 'plugins.php' )
);
$errmsg .= '';
}
wp_admin_notice(
$errmsg,
array(
'id' => 'message',
'additional_classes' => array( 'error' ),
)
);
} elseif ( isset( $_GET['deleted'] ) ) {
$delete_result = get_option( 'plugins_delete_result_' . $user_ID );
// Delete it once we're done.
delete_option( 'plugins_delete_result_' . $user_ID );
if ( is_wp_error( $delete_result ) ) {
$plugin_not_deleted_message = sprintf(
/* translators: %s: Error message. */
__( 'Plugin could not be deleted due to an error: %s' ),
esc_html( $delete_result->get_error_message() )
);
wp_admin_notice(
$plugin_not_deleted_message,
array(
'id' => 'message',
'additional_classes' => array( 'error' ),
'dismissible' => true,
)
);
} else {
if ( 1 === (int) $_GET['deleted'] ) {
$plugins_deleted_message = __( 'The selected plugin has been deleted.' );
} else {
$plugins_deleted_message = __( 'The selected plugins have been deleted.' );
}
wp_admin_notice( $plugins_deleted_message, $updated_notice_args );
}
} elseif ( isset( $_GET['activate'] ) ) {
wp_admin_notice( __( 'Plugin activated.' ), $updated_notice_args );
} elseif ( isset( $_GET['activate-multi'] ) ) {
wp_admin_notice( __( 'Selected plugins activated.' ), $updated_notice_args );
} elseif ( isset( $_GET['deactivate'] ) ) {
wp_admin_notice( __( 'Plugin deactivated.' ), $updated_notice_args );
} elseif ( isset( $_GET['deactivate-multi'] ) ) {
wp_admin_notice( __( 'Selected plugins deactivated.' ), $updated_notice_args );
} elseif ( 'update-selected' === $action ) {
wp_admin_notice( __( 'All selected plugins are up to date.' ), $updated_notice_args );
} elseif ( isset( $_GET['resume'] ) ) {
wp_admin_notice( __( 'Plugin resumed.' ), $updated_notice_args );
} elseif ( isset( $_GET['enabled-auto-update'] ) ) {
wp_admin_notice( __( 'Plugin will be auto-updated.' ), $updated_notice_args );
} elseif ( isset( $_GET['disabled-auto-update'] ) ) {
wp_admin_notice( __( 'Plugin will no longer be auto-updated.' ), $updated_notice_args );
} elseif ( isset( $_GET['enabled-auto-update-multi'] ) ) {
wp_admin_notice( __( 'Selected plugins will be auto-updated.' ), $updated_notice_args );
} elseif ( isset( $_GET['disabled-auto-update-multi'] ) ) {
wp_admin_notice( __( 'Selected plugins will no longer be auto-updated.' ), $updated_notice_args );
}
?>
' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '
' . '' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '
', ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Comments' ) . '
' . '' . __( 'Support forums' ) . '
' ); wp_enqueue_script( 'comment' ); require_once ABSPATH . 'wp-admin/admin-header.php'; if ( ! $comment ) { comment_footer_die( __( 'Invalid comment ID.' ) . sprintf( ' ' . __( 'Go back' ) . '.', 'javascript:history.go(-1)' ) ); } if ( ! current_user_can( 'edit_comment', $comment_id ) ) { comment_footer_die( __( 'Sorry, you are not allowed to edit this comment.' ) ); } if ( 'trash' === $comment->comment_approved ) { comment_footer_die( __( 'This comment is in the Trash. Please move it out of the Trash if you want to edit it.' ) ); } $comment = get_comment_to_edit( $comment_id ); require ABSPATH . 'wp-admin/edit-form-comment.php'; break; case 'delete': case 'approve': case 'trash': case 'spam': // Used in the HTML title tag. $title = __( 'Moderate Comment' ); if ( ! $comment ) { wp_redirect( admin_url( 'edit-comments.php?error=1' ) ); die(); } if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) { wp_redirect( admin_url( 'edit-comments.php?error=2' ) ); die(); } // No need to re-approve/re-trash/re-spam a comment. if ( str_replace( '1', 'approve', $comment->comment_approved ) === $action ) { wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) ); die(); } require_once ABSPATH . 'wp-admin/admin-header.php'; $formaction = $action . 'comment'; $nonce_action = ( 'approve' === $action ) ? 'approve-comment_' : 'delete-comment_'; $nonce_action .= $comment_id; ?>comment_post_ID; if ( current_user_can( 'edit_post', $post_id ) ) { $post_link = ""; $post_link .= esc_html( get_the_title( $post_id ) ) . ''; } else { $post_link = esc_html( get_the_title( $post_id ) ); } echo $post_link; if ( $comment->comment_parent ) { $parent = get_comment( $comment->comment_parent ); $parent_link = esc_url( get_comment_link( $parent ) ); $name = get_comment_author( $parent ); printf( /* translators: %s: Comment link. */ ' | ' . __( 'In reply to %s.' ), '' . $name . '' ); } ?> | |
comment_post_ID ) ) { echo '' . $submitted . ''; } else { echo $submitted; } ?> | |
' . sprintf( /* translators: %s: Theme Directory URL. */ __( 'You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.' ), __( 'https://wordpress.org/themes/' ) ) . '
' . '' . __( 'You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter.' ) . ' ' . __( 'The search results will be updated as you type.' ) . '
' . '' . __( 'Alternately, you can browse the themes that are Popular or Latest. When you find a theme you like, you can preview it or install it.' ) . '
' . '' . sprintf(
/* translators: %s: /wp-content/themes */
__( 'You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your %s directory.' ),
'/wp-content/themes
'
) . '
' . __( 'Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you are interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look.' ) . '
' . '' . __( 'To install the theme so you can preview it with your site’s content and customize its theme options, click the "Install" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the "Activate" link, or by navigating to your Manage Themes screen and clicking the "Live Preview" link under any installed theme’s thumbnail image.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'installing', 'title' => __( 'Previewing and Installing' ), 'content' => $help_installing, ) ); // Help tab: Block themes. $help_block_themes = '' . __( 'A block theme is a theme that uses blocks for all parts of a site including navigation menus, header, content, and site footer. These themes are built for the features that allow you to edit and customize all parts of your site.' ) . '
' . '' . __( 'With a block theme, you can place and edit blocks without affecting your content by customizing or creating new templates.' ) . '
'; get_current_screen()->add_help_tab( array( 'id' => 'block_themes', 'title' => __( 'Block themes' ), 'content' => $help_block_themes, ) ); get_current_screen()->set_help_sidebar( '' . __( 'For more information:' ) . '
' . '' . __( 'Documentation on Adding New Themes' ) . '
' . '' . __( 'Documentation on Block Themes' ) . '
' . '' . __( 'Support forums' ) . '
' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>