243 lines
8.0 KiB
PHP
243 lines
8.0 KiB
PHP
<?php
|
|
|
|
namespace ASENHA\Classes;
|
|
|
|
/**
|
|
* Class for Disable Smaller Components module
|
|
*
|
|
* @since 6.9.5
|
|
*/
|
|
class Disable_Smaller_Components {
|
|
|
|
/**
|
|
* Remove version number from URLs of static resources (CSS, JS)
|
|
*
|
|
* @since 5.8.0
|
|
*/
|
|
public function remove_resource_version_number( $src ) {
|
|
if ( ! is_user_logged_in() ) {
|
|
// https://wordpress.org/support/topic/disable-smaller-components-version-can-be-hidden/
|
|
if ( strpos( $src, 'ver=' ) ) {
|
|
$src = remove_query_arg( 'ver', $src );
|
|
}
|
|
}
|
|
return $src;
|
|
}
|
|
|
|
/**
|
|
* Remove generator tag from RSS feed
|
|
*
|
|
* @since 7.3.3
|
|
*/
|
|
public function remove_feed_generator_tag( $generator_type, $type ) {
|
|
// e.g. <generator>https://wordpress.org/?v=6.6.1</generator>
|
|
if ( false !== strpos( $generator_type, '<generator>https://wordpress.org/?v=' ) ) {
|
|
return '';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Disable loading of frontend public assets of dashicons
|
|
*
|
|
* @since 4.5.0
|
|
*/
|
|
public function disable_dashicons_public_assets() {
|
|
global $pagenow;
|
|
if ( ! is_user_logged_in() ) {
|
|
|
|
// This will get /path/file.php?param=val portion of the full URL
|
|
$current_request_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
|
|
|
|
if ( empty( $current_request_uri ) ) {
|
|
// On the homepage
|
|
wp_dequeue_style( 'dashicons' );
|
|
wp_deregister_style( 'dashicons' );
|
|
} else {
|
|
// Exclude the login page, where dashicon assets are requred to properly style the page
|
|
if ( false !== strpos( $current_request_uri, 'wp-login.php' ) || 'wp-login.php' === $pagenow ) {
|
|
// On wp-login.php, so, do nothing
|
|
}
|
|
// Exclude password protection form
|
|
elseif ( false !== strpos( $current_request_uri, 'protected-page=view' ) ) {
|
|
// On protected-page=view, so, do nothing
|
|
}
|
|
else {
|
|
// NOT on wp-login.php, e.g. www.example.com/an-article/, so, dequeue dashicons
|
|
wp_dequeue_style( 'dashicons' );
|
|
wp_deregister_style( 'dashicons' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Disable emoji support
|
|
*
|
|
* @since 4.5.0
|
|
*/
|
|
public function disable_emoji_support() {
|
|
|
|
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
|
|
remove_action( 'embed_head', 'print_emoji_detection_script' );
|
|
remove_action( 'wp_print_styles', 'print_emoji_styles' );
|
|
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
|
|
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
|
|
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
|
|
add_action( 'admin_init', [ $this, 'disable_admin_emojis' ] );
|
|
add_filter( 'emoji_svg_url', '__return_false' );
|
|
add_filter( 'tiny_mce_plugins', [ $this, 'disable_emoji_for_tinymce' ] );
|
|
add_filter( 'wp_resource_hints', [ $this, 'disable_emoji_remove_dns_prefetch' ], 10, 2 );
|
|
add_filter( 'option_use_smilies', '__return_false' );
|
|
|
|
}
|
|
|
|
/**
|
|
* Disable jQuery Migrate
|
|
*
|
|
* @since 5.8.0
|
|
* @link https://plugins.trac.wordpress.org/browser/remove-jquery-migrate/trunk/remove-jquery-migrate.php
|
|
* @param WP_Scripts $scripts WP_Scripts object.
|
|
*/
|
|
public function disable_jquery_migrate( $scripts ) {
|
|
if ( ! is_admin() && isset( $scripts->registered['jquery'] ) ) {
|
|
$script = $scripts->registered['jquery'];
|
|
|
|
if ( ! empty( $script->deps ) ) { // Check whether the script has any dependencies
|
|
$script->deps = array_diff( $script->deps, array( 'jquery-migrate' ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove the tinymce emoji plugin
|
|
*
|
|
* @since 4.5.0
|
|
*/
|
|
public function disable_emoji_for_tinymce( $plugins ) {
|
|
|
|
if ( is_array( $plugins ) ) {
|
|
return array_diff( $plugins, array( 'wpemoji' ) );
|
|
}
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
/**
|
|
* Remove emoji CDN hostname from DNS prefetching hints.
|
|
*
|
|
* @since 4.5.0
|
|
*/
|
|
public function disable_emoji_remove_dns_prefetch( $urls, $relation_type ) {
|
|
|
|
if ( 'dns-prefetch' == $relation_type ) {
|
|
|
|
// Strip out any URLs referencing the WordPress.org emoji location
|
|
$emoji_svg_url_base = 'https://s.w.org/images/core/emoji/';
|
|
foreach ( $urls as $key => $url ) {
|
|
if ( is_string( $url ) && false !== strpos( $url, $emoji_svg_url_base ) ) {
|
|
unset( $urls[$key] );
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
return $urls;
|
|
|
|
}
|
|
|
|
/**
|
|
* Disable emojis in wp-admin
|
|
*
|
|
* @since 4.7.2
|
|
*/
|
|
public function disable_admin_emojis() {
|
|
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
|
|
remove_action( 'admin_print_styles', 'print_emoji_styles' );
|
|
}
|
|
|
|
/**
|
|
* Add loading="eager" attribute for featured images
|
|
*
|
|
* @link https://plugins.trac.wordpress.org/browser/disable-lazy-loading/tags/2.1/disable-lazy-loading.php
|
|
* @since 7.3.0
|
|
*/
|
|
public function eager_load_featured_images( $attr, $attachment = null ) {
|
|
$attr['loading'] = 'eager';
|
|
return $attr;
|
|
}
|
|
|
|
/**
|
|
* Disable plugin and theme editor
|
|
*
|
|
* @since 7.4.5
|
|
*/
|
|
public function disable_plugin_theme_editor() {
|
|
if ( wp_doing_ajax() || wp_doing_cron() ) {
|
|
return;
|
|
}
|
|
|
|
if ( ! current_user_can( 'manage_options' ) ) {
|
|
return;
|
|
}
|
|
|
|
$wp_config = new WP_Config_Transformer;
|
|
|
|
if ( ! defined( 'DISALLOW_FILE_EDIT' ) ) {
|
|
define( 'DISALLOW_FILE_EDIT', true );
|
|
} else {
|
|
$is_wpconfig_writeable = $wp_config->wpconfig_file( 'writeability' );
|
|
|
|
if ( $is_wpconfig_writeable ) {
|
|
$disallow_file_edit = $wp_config->get_value( 'constant', 'DISALLOW_FILE_EDIT' );
|
|
|
|
if ( 'false' == $disallow_file_edit ) {
|
|
$wp_config_options = array(
|
|
'add' => true, // Add the config if missing.
|
|
'raw' => true, // Display value in raw format without quotes.
|
|
'normalize' => false, // Normalize config output using WP Coding Standards.
|
|
);
|
|
|
|
$update_success = $wp_config->update( 'constant', 'DISALLOW_FILE_EDIT', 'true', $wp_config_options );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Enable plugin and theme editor
|
|
*
|
|
* @since 7.4.5
|
|
*/
|
|
public function enable_plugin_theme_editor() {
|
|
if ( wp_doing_ajax() || wp_doing_cron() ) {
|
|
return;
|
|
}
|
|
|
|
if ( ! current_user_can( 'manage_options' ) ) {
|
|
return;
|
|
}
|
|
|
|
$wp_config = new WP_Config_Transformer;
|
|
|
|
if ( ! defined( 'DISALLOW_FILE_EDIT' ) ) {
|
|
define( 'DISALLOW_FILE_EDIT', false );
|
|
} else {
|
|
$is_wpconfig_writeable = $wp_config->wpconfig_file( 'writeability' );
|
|
|
|
if ( $is_wpconfig_writeable ) {
|
|
$disallow_file_edit = $wp_config->get_value( 'constant', 'DISALLOW_FILE_EDIT' );
|
|
|
|
if ( 'true' == $disallow_file_edit ) {
|
|
$wp_config_options = array(
|
|
'add' => true, // Add the config if missing.
|
|
'raw' => true, // Display value in raw format without quotes.
|
|
'normalize' => false, // Normalize config output using WP Coding Standards.
|
|
);
|
|
|
|
$update_success = $wp_config->update( 'constant', 'DISALLOW_FILE_EDIT', 'false', $wp_config_options );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |