'system.favicon.remove_default', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('Admin', 'advanced-settings'), __('Frontend', 'advanced-settings'), __('Meta', 'advanced-settings'), __('Favicon', 'advanced-settings'), __('Cleanup', 'advanced-settings'), __('Branding', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Remove default WordPress favicon', 'advanced-settings'), ], ] ], 'execution_handler' => function() { add_action('init', function() { if ($_SERVER['REQUEST_URI'] === '/favicon.ico') { header("Content-Type: image/x-icon"); http_response_code(404); exit; } }); }, 'priority' => 10, ]); advset_register_feature([ 'id' => 'system.comments.disable_system', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Admin', 'advanced-settings'), __('Frontend', 'advanced-settings'), __('Cleanup', 'advanced-settings'), __('Security', 'advanced-settings'), __('Comments', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Disable comment system', 'advanced-settings'), ], ] ], 'execution_handler' => function() { add_filter( 'comments_open', '__return_false' ); // Hides existing comments in the frontend wherever they are queried: comments_template() in classic themes, // the comment blocks in block themes, widgets and the REST API. Queries explicitly asking for other // comment types (e.g. editor notes or WooCommerce order notes) are left untouched. if ( ! advset_is_admin_area() ) { add_filter( 'comments_pre_query', function( $comment_data, $query ) { $types = array_filter( array_merge( (array) $query->query_vars['type'], (array) $query->query_vars['type__in'] ) ); if ( array_diff( $types, ['comment', 'pings', 'pingback', 'trackback'] ) ) { return $comment_data; } return $query->query_vars['count'] ? 0 : []; }, 10, 2 ); // Block themes render the comments section as soon as the post has comments add_filter( 'get_comments_number', '__return_zero' ); } // Removes from admin menu add_action( 'admin_menu', function() { remove_menu_page( 'edit-comments.php' ); } ); // Removes from admin bar add_action( 'wp_before_admin_bar_render', function() { global $wp_admin_bar; $wp_admin_bar->remove_menu('comments'); } ); }, 'priority' => 20, ]); advset_register_feature([ 'id' => 'system.xmlrpc.disable', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Security', 'advanced-settings'), __('Performance', 'advanced-settings'), __('Cleanup', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Disable XML-RPC', 'advanced-settings'), 'description' => __('Disables XML-RPC functionality for security', 'advanced-settings'), ], ] ], 'execution_handler' => function() { add_filter('xmlrpc_enabled', '__return_false'); }, 'priority' => 30, ]); advset_register_feature([ 'id' => 'system.rest.disable_public', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Security', 'advanced-settings'), __('Performance', 'advanced-settings'), __('Cleanup', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Disable public REST API', 'advanced-settings'), 'description' => __('Disables REST API access for non-authenticated users', 'advanced-settings'), ], ] ], 'execution_handler' => function() { add_filter('rest_authentication_errors', function($result) { if (!empty($result)) { return $result; } if (!is_user_logged_in()) { return new WP_Error('rest_forbidden', 'REST API restricted to authenticated users.', ['status' => 401]); } return $result; }); }, 'priority' => 40, ]); advset_register_feature([ 'id' => 'system.updates.skip_bundled_themes', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Updates', 'advanced-settings'), __('Cleanup', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Prevent installation of new default WordPress themes during core updates', 'advanced-settings'), 'descriptionHtml' => sprintf(__('By default, themes like %s are added automatically every year.', 'advanced-settings'), (function() { $digit1 = [ '2' => 'Twenty', '3' => 'Thirty', '4' => 'Forty', '5' => 'Fifty', '6' => 'Sixty', '7' => 'Seventy', '8' => 'Eighty', '9' => 'Ninety', ]; $digit2 = [ '0' => '', '1' => '-One', '2' => '-Two', '3' => '-Three', '4' => '-Four', '5' => '-Five', '6' => '-Six', '7' => '-Seven', '8' => '-Eight', '9' => '-Nine', ]; $current_year = date('y'); $current_theme_slug = 'twenty' . strtolower($digit1[$current_year[0]] . substr($digit2[$current_year[1]], 1)); $current_theme_name = 'Twenty ' . $digit1[$current_year[0]] . $digit2[$current_year[1]]; $current_theme_url = 'https://wordpress.org/themes/' . $current_theme_slug . '/'; return '' . $current_theme_name . ''; })()), ], ] ], 'execution_handler' => function() { if (!defined('CORE_UPGRADE_SKIP_NEW_BUNDLED')) { define('CORE_UPGRADE_SKIP_NEW_BUNDLED', true); } }, 'priority' => 50, ]); advset_register_feature([ 'id' => 'system.notifications.disable_core_updates', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Updates', 'advanced-settings'), __('Notifications', 'advanced-settings'), __('Emails', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Disable core update email notifications', 'advanced-settings'), 'descriptionHtml' => sprintf(__('You can change the admin email (which is the recipient) in %s.', 'advanced-settings'), '' . __('General Settings') . ''), ], ] ], 'execution_handler' => function() { add_filter('auto_core_update_send_email', '__return_false'); }, 'priority' => 60, ]); advset_register_feature([ 'id' => 'system.notifications.disable_plugin_updates', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Updates', 'advanced-settings'), __('Notifications', 'advanced-settings'), __('Emails', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Disable plugin update email notifications', 'advanced-settings'), 'descriptionHtml' => sprintf(__('You can change the admin email (which is the recipient) in %s.', 'advanced-settings'), '' . __('General Settings') . ''), ], ] ], 'execution_handler' => function() { add_filter('auto_plugin_update_send_email', '__return_false'); }, 'priority' => 70, ]); advset_register_feature([ 'id' => 'system.notifications.disable_theme_updates', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Updates', 'advanced-settings'), __('Notifications', 'advanced-settings'), __('Emails', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Disable theme update email notifications', 'advanced-settings'), 'descriptionHtml' => sprintf(__('You can change the admin email (which is the recipient) in %s.', 'advanced-settings'), '' . __('General Settings') . ''), ], ] ], 'execution_handler' => function() { add_filter('auto_theme_update_send_email', '__return_false'); }, 'priority' => 80, ]); advset_register_feature([ 'id' => 'system.post_types.custom', 'category' => 'system', 'ui_config' => fn() => [ 'tags' => [ __('System', 'advanced-settings'), __('Admin', 'advanced-settings'), __('Posts', 'advanced-settings'), ], 'fields' => [ 'enable' => [ 'type' => 'toggle', 'label' => __('Custom post types', 'advanced-settings'), ], 'info' => [ 'type' => 'info', 'descriptionHtml' => sprintf(__('Note: You can find the post types settings page here.', 'advanced-settings'), admin_url('options-general.php?page=advanced-settings-post-types')), 'visible' => ['enable' => true] ], ], ], 'execution_handler' => function() { require_once ADVSET_DIR.'/admin-ui/classic-ui-elements/tristate-checkbox/tristate-checkbox.php'; require_once ADVSET_DIR.'/feature-setup/features/includes/developer.settings_pages.php'; require_once ADVSET_DIR.'/feature-setup/features/includes/developer.settings_pages.post_types--init.php'; Advset__Feature__Post_Types::init(); }, 'priority' => 90, ]);