tweaks_options = $tweaks_options; $this->bloat_options = $bloat_options; } /** * Add settings link to plugins page * * @param array $links Plugin links * @return array */ public function add_settings_link($links) { $settings_link = '' . __('Settings', 'abovewp-tweaks-optimizer') . ''; array_unshift($links, $settings_link); return $links; } /** * Register admin menu */ public function register_admin_menu() { add_submenu_page( 'abovewp', __('Tweaks Optimizer', 'abovewp-tweaks-optimizer'), __('Tweaks Optimizer', 'abovewp-tweaks-optimizer'), 'manage_options', 'abovewp-tweaks-optimizer', array($this, 'display_settings_page') ); // Add body class for CSS styling add_filter('admin_body_class', array($this, 'add_admin_body_class')); } /** * Add body class for styling * * @param string $classes Admin body classes * @return string */ public function add_admin_body_class($classes) { $screen = get_current_screen(); // Add classes for all AboveWP pages if (strpos($screen->id, 'abovewp') !== false) { // General class for all AboveWP pages $classes .= ' abovewp-admin-page-wrapper'; // Specific page classes if (strpos($screen->id, 'abovewp-tweaks-optimizer') !== false) { $classes .= ' abovewp_page_abovewp-tweaks-optimizer'; } else if ($screen->id === 'toplevel_page_abovewp') { $classes .= ' toplevel_page_abovewp'; } } return $classes; } /** * Register plugin settings */ public function register_settings() { // Tweaks settings register_setting( 'abovewp_tweaks_options_group', 'abovewp_tweaks_options', array($this, 'sanitize_tweaks_options') ); // Bloat removal settings register_setting( 'abovewp_bloat_options_group', 'abovewp_bloat_options', array($this, 'sanitize_bloat_options') ); // WooCommerce settings - only register if WooCommerce is active if ($this->is_woocommerce_active()) { register_setting( 'abovewp_woocommerce_options_group', 'abovewp_woocommerce_options', array($this, 'sanitize_woocommerce_options') ); } // Tweaks section add_settings_section( 'abovewp_tweaks_section', __('WordPress Functionality Tweaks', 'abovewp-tweaks-optimizer'), array($this, 'tweaks_section_callback'), 'abovewp-tweaks-optimizer-tweaks' ); // Add tweaks fields add_settings_field( 'limit_post_revisions', __('Post Revisions', 'abovewp-tweaks-optimizer'), array($this, 'number_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'limit_post_revisions', 'option_name' => 'abovewp_tweaks_options', 'description' => __('Number of post revisions to keep (0 to disable completely, -1 for unlimited).', 'abovewp-tweaks-optimizer'), 'default' => '-1', 'min' => -1, 'max' => 100 ) ); add_settings_field( 'autosave_interval', __('Autosave Interval', 'abovewp-tweaks-optimizer'), array($this, 'number_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'autosave_interval', 'option_name' => 'abovewp_tweaks_options', 'description' => __('Time between automatic saves in seconds (Default: 60, 0 to disable).', 'abovewp-tweaks-optimizer'), 'default' => '60', 'min' => 0, 'max' => 300 ) ); add_settings_field( 'admin_heartbeat', __('Admin Heartbeat', 'abovewp-tweaks-optimizer'), array($this, 'select_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'admin_heartbeat', 'option_name' => 'abovewp_tweaks_options', 'label' => __('WordPress Admin Heartbeat API', 'abovewp-tweaks-optimizer'), 'description' => __('The Heartbeat API allows for regular communication between the browser and server. Can heavily impact admin performance.', 'abovewp-tweaks-optimizer'), 'default' => 'enable', 'options' => array( 'enable' => __('Enable (Default)', 'abovewp-tweaks-optimizer'), 'disable_admin' => __('Disable on Dashboard', 'abovewp-tweaks-optimizer'), 'disable_editor' => __('Keep only in Post Editor', 'abovewp-tweaks-optimizer'), 'disable_everywhere' => __('Disable Completely', 'abovewp-tweaks-optimizer') ) ) ); add_settings_field( 'heartbeat_frequency', __('Heartbeat Frequency', 'abovewp-tweaks-optimizer'), array($this, 'select_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'heartbeat_frequency', 'option_name' => 'abovewp_tweaks_options', 'label' => __('Admin Heartbeat Frequency', 'abovewp-tweaks-optimizer'), 'description' => __('Adjust the frequency of WordPress admin heartbeat. Default is 15 seconds.', 'abovewp-tweaks-optimizer'), 'default' => '15', 'options' => array( '15' => __('15 seconds (Default)', 'abovewp-tweaks-optimizer'), '30' => __('30 seconds', 'abovewp-tweaks-optimizer'), '60' => __('60 seconds', 'abovewp-tweaks-optimizer'), '120' => __('120 seconds', 'abovewp-tweaks-optimizer') ) ) ); add_settings_field( 'disable_wp_cron', __('WordPress Cron', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'disable_wp_cron', 'option_name' => 'abovewp_tweaks_options', 'label' => __('Disable WordPress Cron', 'abovewp-tweaks-optimizer'), 'description' => __('Disable default WordPress cron and use server cron instead for better performance and reliability.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'admin_cleanup', __('Admin UI Cleanup', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'admin_cleanup', 'option_name' => 'abovewp_tweaks_options', 'label' => __('Clean Up Admin Interface', 'abovewp-tweaks-optimizer'), 'description' => __('Remove unnecessary widgets and metaboxes from the WordPress admin dashboard.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_admin_notices', __('Admin Notices', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'disable_admin_notices', 'option_name' => 'abovewp_tweaks_options', 'label' => __('Disable Non-Essential Admin Notices', 'abovewp-tweaks-optimizer'), 'description' => __('Hide non-essential admin notices to clean up the admin interface. Critical notices will still be shown.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'limit_login_attempts', __('Login Security', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'limit_login_attempts', 'option_name' => 'abovewp_tweaks_options', 'label' => __('Limit Login Attempts', 'abovewp-tweaks-optimizer'), 'description' => __('Improve security by limiting the number of login attempts to protect against brute force attacks.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'login_attempts_limit', __('Login Attempts Limit', 'abovewp-tweaks-optimizer'), array($this, 'number_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'login_attempts_limit', 'option_name' => 'abovewp_tweaks_options', 'description' => __('Number of failed login attempts before lockout.', 'abovewp-tweaks-optimizer'), 'default' => '5', 'min' => 1, 'max' => 20 ) ); add_settings_field( 'login_lockout_time', __('Login Lockout Time', 'abovewp-tweaks-optimizer'), array($this, 'number_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'login_lockout_time', 'option_name' => 'abovewp_tweaks_options', 'description' => __('Lockout time in minutes after exceeding login attempts limit.', 'abovewp-tweaks-optimizer'), 'default' => '60', 'min' => 5, 'max' => 1440 ) ); add_settings_field( 'enable_media_trash', __('Media Trash', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-tweaks', 'abovewp_tweaks_section', array( 'name' => 'enable_media_trash', 'option_name' => 'abovewp_tweaks_options', 'label' => __('Enable Media Trash', 'abovewp-tweaks-optimizer'), 'description' => __('Enable WordPress media trash functionality, allowing you to recover deleted media instead of permanently deleting them. This will automatically add MEDIA_TRASH constant to your wp-config.php file.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => false ) ); // Bloat section add_settings_section( 'abovewp_bloat_section', __('WordPress Bloat Removal', 'abovewp-tweaks-optimizer'), array($this, 'bloat_section_callback'), 'abovewp-tweaks-optimizer-bloat' ); // Add bloat fields add_settings_field( 'disable_gutenberg', __('Gutenberg Editor', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_gutenberg', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Gutenberg Editor', 'abovewp-tweaks-optimizer'), 'description' => __('Use the classic editor instead of Gutenberg.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_comments', __('Comments', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_comments', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Comments', 'abovewp-tweaks-optimizer'), 'description' => __('Completely disable the WordPress commenting system site-wide.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_embeds', __('WordPress Embeds', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_embeds', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable WordPress Embeds', 'abovewp-tweaks-optimizer'), 'description' => __('Removes the ability to embed external content directly into posts.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_rest_api', __('REST API', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_rest_api', 'option_name' => 'abovewp_bloat_options', 'label' => __('Restrict REST API to logged-in users', 'abovewp-tweaks-optimizer'), 'description' => __('Only allow logged-in users to access the WordPress REST API.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_feed_links', __('Feed Links', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_feed_links', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Feed Links', 'abovewp-tweaks-optimizer'), 'description' => __('Remove RSS feed links from the website.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_all_feeds', __('All RSS/Atom Feeds', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_all_feeds', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable All RSS and Atom Feeds', 'abovewp-tweaks-optimizer'), 'description' => __('Completely disable and redirect all RSS and Atom feeds to the homepage.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_author_archives', __('Author Archives', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_author_archives', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Author Archive Pages', 'abovewp-tweaks-optimizer'), 'description' => __('Disable author archives and redirect them to the homepage for improved security.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_dashicons', __('Dashicons', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_dashicons', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Dashicons on Front-end', 'abovewp-tweaks-optimizer'), 'description' => __('Remove WordPress Dashicons from the front-end for non-logged in users.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_shortlinks', __('Shortlinks', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_shortlinks', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable WordPress Shortlinks', 'abovewp-tweaks-optimizer'), 'description' => __('Removes shortlink metadata tags from your site head section.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_wlwmanifest', __('WLW Manifest', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_wlwmanifest', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable WLW Manifest', 'abovewp-tweaks-optimizer'), 'description' => __('Removes Windows Live Writer manifest link from your site head.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_rsd', __('RSD Link', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_rsd', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable RSD Link', 'abovewp-tweaks-optimizer'), 'description' => __('Removes RSD (Really Simple Discovery) link in the header used by some external editors.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_wp_version', __('WordPress Version', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_wp_version', 'option_name' => 'abovewp_bloat_options', 'label' => __('Remove WordPress Version', 'abovewp-tweaks-optimizer'), 'description' => __('Removes WordPress version number from head and RSS feeds for security.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_admin_bar', __('Admin Bar', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_admin_bar', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Admin Bar on Frontend', 'abovewp-tweaks-optimizer'), 'description' => __('Removes the WordPress admin bar from the frontend for all users.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_wp_emoji_release', __('Emoji Release', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_wp_emoji_release', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable WordPress Emoji Release Script', 'abovewp-tweaks-optimizer'), 'description' => __('Removes the extra script WordPress loads for emoji release handling.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'enable_classic_widgets', __('Classic Widgets', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'enable_classic_widgets', 'option_name' => 'abovewp_bloat_options', 'label' => __('Enable Classic Widgets Interface', 'abovewp-tweaks-optimizer'), 'description' => __('Restores the traditional, lightweight widget interface instead of using the heavier block-based widget editor. This provides a more streamlined experience when managing widgets.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => false ) ); add_settings_field( 'disable_query_strings', __('Query Strings', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_query_strings', 'option_name' => 'abovewp_bloat_options', 'label' => __('Remove Query Strings from Static Resources', 'abovewp-tweaks-optimizer'), 'description' => __('Improves caching by removing query strings (ver=x.x.x) from static resources.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_self_pingbacks', __('Self Pingbacks', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_self_pingbacks', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable Self Pingbacks', 'abovewp-tweaks-optimizer'), 'description' => __('Disable WordPress sending pingbacks when you link to your own site.', 'abovewp-tweaks-optimizer'), 'default' => 'yes' ) ); add_settings_field( 'disable_xmlrpc', __('XML-RPC', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-bloat', 'abovewp_bloat_section', array( 'name' => 'disable_xmlrpc', 'option_name' => 'abovewp_bloat_options', 'label' => __('Disable XML-RPC', 'abovewp-tweaks-optimizer'), 'description' => __('Disable the XML-RPC API (may affect some 3rd party services like Jetpack).', 'abovewp-tweaks-optimizer'), 'default' => 'yes' ) ); // Register WooCommerce settings and fields if ($this->is_woocommerce_active()) { $this->register_woocommerce_settings(); } } /** * Register WooCommerce settings section and fields */ private function register_woocommerce_settings() { // WooCommerce section add_settings_section( 'abovewp_woocommerce_section', __('WooCommerce Tweaks', 'abovewp-tweaks-optimizer'), array($this, 'woocommerce_section_callback'), 'abovewp-tweaks-optimizer-woocommerce' ); // Add WooCommerce enhancement fields add_settings_field( 'disable_password_strength_meter', __('Password Strength Meter', 'abovewp-tweaks-optimizer'), array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-woocommerce', 'abovewp_woocommerce_section', array( 'name' => 'disable_password_strength_meter', 'option_name' => 'abovewp_woocommerce_options', 'label' => __('Disable Password Strength Meter', 'abovewp-tweaks-optimizer'), 'description' => __('Remove the password strength meter on checkout page to improve performance.', 'abovewp-tweaks-optimizer'), 'default' => 'no', 'reverse' => true ) ); // Product Tabs section header add_settings_field( 'product_tabs_header', __('Product Tabs', 'abovewp-tweaks-optimizer'), array($this, 'section_header_callback'), 'abovewp-tweaks-optimizer-woocommerce', 'abovewp_woocommerce_section', array( 'description' => __('Select which product tabs to remove from product pages.', 'abovewp-tweaks-optimizer') ) ); // Individual checkbox for each product tab add_settings_field( 'disable_reviews_tab', '', array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-woocommerce', 'abovewp_woocommerce_section', array( 'name' => 'disable_reviews_tab', 'option_name' => 'abovewp_woocommerce_options', 'label' => __('Disable Reviews Tab', 'abovewp-tweaks-optimizer'), 'description' => '', 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_description_tab', '', array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-woocommerce', 'abovewp_woocommerce_section', array( 'name' => 'disable_description_tab', 'option_name' => 'abovewp_woocommerce_options', 'label' => __('Disable Description Tab', 'abovewp-tweaks-optimizer'), 'description' => '', 'default' => 'no', 'reverse' => true ) ); add_settings_field( 'disable_additional_information_tab', '', array($this, 'checkbox_field_callback'), 'abovewp-tweaks-optimizer-woocommerce', 'abovewp_woocommerce_section', array( 'name' => 'disable_additional_information_tab', 'option_name' => 'abovewp_woocommerce_options', 'label' => __('Disable Additional Information Tab', 'abovewp-tweaks-optimizer'), 'description' => '', 'default' => 'no', 'reverse' => true ) ); } /** * Sanitize tweaks options * * @param array $input Input from settings form * @return array */ public function sanitize_tweaks_options($input) { $output = array(); $old_options = get_option('abovewp_tweaks_options', array()); $checkboxes = array( 'disable_wp_cron', 'admin_cleanup', 'disable_admin_notices', 'limit_login_attempts', 'enable_media_trash', ); foreach ($checkboxes as $checkbox) { $output[$checkbox] = isset($input[$checkbox]) ? sanitize_text_field($input[$checkbox]) : 'no'; } // Sanitize selects $selects = array('admin_heartbeat', 'heartbeat_frequency'); foreach ($selects as $select) { $output[$select] = isset($input[$select]) ? sanitize_text_field($input[$select]) : ''; } // Sanitize numbers $output['limit_post_revisions'] = isset($input['limit_post_revisions']) ? intval($input['limit_post_revisions']) : -1; $output['autosave_interval'] = isset($input['autosave_interval']) ? intval($input['autosave_interval']) : 60; $output['login_attempts_limit'] = isset($input['login_attempts_limit']) ? intval($input['login_attempts_limit']) : 5; $output['login_lockout_time'] = isset($input['login_lockout_time']) ? intval($input['login_lockout_time']) : 60; // Check if media trash setting has changed $old_media_trash = isset($old_options['enable_media_trash']) ? $old_options['enable_media_trash'] : 'no'; $new_media_trash = $output['enable_media_trash']; if ($old_media_trash !== $new_media_trash) { // Setting has changed, update wp-config.php if ($new_media_trash === 'yes') { // Add the constant $this->add_media_trash_to_config(); } else { // Remove the constant $this->remove_media_trash_from_config(); } } return $output; } /** * Sanitize bloat options * * @param array $input Input from settings form * @return array */ public function sanitize_bloat_options($input) { $output = array(); $checkboxes = array( 'disable_gutenberg', 'disable_comments', 'disable_embeds', 'disable_rest_api', 'disable_feed_links', 'disable_all_feeds', 'disable_author_archives', 'disable_dashicons', 'disable_shortlinks', 'disable_wlwmanifest', 'disable_rsd', 'disable_wp_version', 'disable_admin_bar', 'disable_wp_emoji_release', 'enable_classic_widgets', 'disable_query_strings', 'disable_self_pingbacks', 'disable_xmlrpc', ); foreach ($checkboxes as $checkbox) { $output[$checkbox] = isset($input[$checkbox]) ? sanitize_text_field($input[$checkbox]) : 'no'; } return $output; } /** * Tweaks section callback */ public function tweaks_section_callback() { // No additional text needed as we have the section-info div } /** * Bloat section callback */ public function bloat_section_callback() { // No additional text needed as we have the section-info div } /** * WooCommerce section callback */ public function woocommerce_section_callback() { // No additional text needed as we have the section-info div } /** * Checkbox field callback * * @param array $args Field arguments */ public function checkbox_field_callback($args) { $option_name = $args['option_name']; $name = $args['name']; $label = $args['label']; $description = $args['description']; $default = isset($args['default']) ? $args['default'] : 'yes'; $options = get_option($option_name); $value = isset($options[$name]) ? $options[$name] : $default; $class = ''; if ($name === 'disable_rest_api' || $name === 'disable_gutenberg' || $name === 'disable_comments') { $class = 'risky-setting'; } ?>
update_wp_config_directly(); } // Check if WooCommerce is active $woocommerce_active = $this->is_woocommerce_active(); ?>
' . esc_html($args['description']) . '
'; } } /** * Sanitize WooCommerce options * * @param array $input Input from settings form * @return array */ public function sanitize_woocommerce_options($input) { $output = array(); $checkboxes = array( 'disable_password_strength_meter', 'disable_reviews_tab', 'disable_description_tab', 'disable_additional_information_tab', ); foreach ($checkboxes as $checkbox) { $output[$checkbox] = isset($input[$checkbox]) ? sanitize_text_field($input[$checkbox]) : 'no'; } return $output; } }