1. Home
  2. /
  3. Сайтостроение
  4. /
  5. Удалим лишний / устаревший функционал WordPress

Удалим лишний / устаревший функционал WordPress

Удалим лишний / устаревший функционал WordPressУдаление лишнего кода из WordPress — это довольно простой процесс который займёт немного времени и добавит несколько строк кода в файл functions.php.

Если вы не первый день занимаетесь разработкой сайта или продвижением то наверняка замечали что WordPress добавляет довольно много лишнего кода, особенно это касается блока <head>.

Есть два варианта как можно избавиться от ненужных кусков кода в WordPress:

  1. Установка плагина — существует множество плагинов которые закрывают точечно проблему, со временем их накопится не один десяток. Либо установка одного плагина такого как Clearfy Pro — но данный плагин платный и он может не иметь тех функций что нам нужны уже сейчас или могут понадобиться в будущем.
  2. Создаём своё универсальное решение — файл который устранит весь лишний контент и в будущем мы сможем его дополнять и устанавливать на любые сайты — это путь тру разработчика!!

Сначала я распишу все задачи по пунктам, а к концу выдам свой файл, который я использую на большинстве проектов. Все примеры, которые будут ниже нужно добавлять в файл functions.php вашей темы, если ваша тема обновляется то нужно создать дочернюю тему.

Удаление версии WP из шапки сайта

WordPress, по умолчанию генерирует мета-тег generator в секции <head>

<meta name="generator" content="WordPress x.x.x" />
Чтобы удалить данный код используйте всего одну строчку.

remove_action('wp_head','wp_generator');

Удалить ссылки на RSS ленты

CMS WordPress по умолчанию создает несколько RSS каналов сайта, если вы не планируете их использовать то советую удалить ссылки на ленты и функции их формирующие:

function fb_disable_feed(){wp_redirect(get_option('siteurl'));}
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );
add_action( 'do_feed', 'fb_disable_feed', 1 );
add_action( 'do_feed_rdf', 'fb_disable_feed', 1 );
add_action( 'do_feed_rss', 'fb_disable_feed', 1 );
add_action( 'do_feed_rss2', 'fb_disable_feed', 1 );
add_action( 'do_feed_atom', 'fb_disable_feed', 1 );

Отключить REST API

Если очень кратко то REST API это очень крутая штука которая позволяет обмениваться данными между вашим сайтом и любыми другими сервисами и приложениями. Например можно сделать приложение для телефона которое будет управлять вашим сайтом, получать из него информацию и изменять её. Данный функционал обычно используется для крупных проектов для связи различных API между собой, если вы как и многие впервые об этом слышите то спокойно вставляйте строки ниже в свой файл function.php:

add_filter( 'rest_enabled', '__return_false' );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'template_redirect', 'rest_output_link_header', 11);
remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
remove_action( 'init', 'rest_api_init' );
remove_action( 'rest_api_init', 'rest_api_default_filters', 10 );
remove_action( 'parse_request', 'rest_api_loaded' );
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10 );

Отключаем Emoji

Устаревший функционал который подменяет текстовые смайлики на собственный пакет Emoji от WordPress, так как сейчас все браузеры имеют нативную поддержку, то надобность в Emoji от WordPress отпадает, отключив их ваш сайт скажет вам спасибо, так как теперь он не будет при загрузке страниц грузить лишние скрипты и изображения.

remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_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' );

Отменяем srcset

Это атрибут тега <img srcset> - замена стандартному src. В scrset указываются несколько URL изображения и условие при котором он должен использоваться, чаще всего это разрешение экрана, то есть при различных разрешениях будут показываться разные изображения. В WordPress по умолчанию включен именно такой вывод изображений, но минусом является большее количество html кода так как зачастую srcset содержит в себе довольно большой текст. Я рекомендую всем отключать эту функцию, вот этими строками:

add_filter('wp_calculate_image_srcset_meta', '__return_null' );
add_filter('wp_calculate_image_sizes', '__return_false', 99 );
remove_filter('the_content', 'wp_make_content_images_responsive' );

Отключаем Gutenberg

Gutenberg - визуальный редактор для страниц и записей WordPress, довольно удобный и гибкий и постоянно получающий обновления, но есть пара критичных минусов.

  • Вместе с удобством мы получаем лишние таблицы стилей и скриптов, что негативно сказывается на загрузке.
  • Я за уникальность кода, а в случае с любыми визуальными редакторами будь то Elementor или Visual Composer мы получаем страницы которые и визуально и html кодом будут похожи на миллион других в интернете.

Код ниже полностью отключит Gutenberg, который включен по умолчанию в WordPress, а так же удалит стили и скрипты которые он использует:

add_filter('use_block_editor_for_post_type', '__return_false', 100);
add_action('admin_init', function() {
remove_action('admin_notices', ['WP_Privacy_Policy_Content', 'notice']);
add_action('edit_form_after_title', ['WP_Privacy_Policy_Content', 'notice']); 
});
function gut_style_disable() { wp_dequeue_style('wp-block-library'); }
add_action('wp_enqueue_scripts', 'gut_style_disable', 100);

Отключение XML-RPC

XML Remote Procedure Call — используется для подключения к сайту через мобильное приложение WordPress, так же оповещает владельца о том, что где-то оставили ссылку на его сайт. Если вы не пользуетесь данным функционалом то смело отключайте:

add_filter('xmlrpc_enabled', '__return_false');

Добавить в файл .htaccess:

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
Allow from 10.0.0.0/100
</Files>

Отключить JQuery Migrate

Встроенный файл jquery-migrate.min.js раньше использовали для совместимости версий jQuery. Сейчас необходимости использовать этот файл практически нет.

function isa_remove_jquery_migrate( &$scripts ) { 
if( !is_admin() ){ 
$scripts->remove( 'jquery' ); $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.12.4' ); 
}
} 
add_filter( 'wp_default_scripts', 'isa_remove_jquery_migrate' );

Убрать версию WP у файлов .css и .js

Изначально для всех скриптов и стилей WordPress прописывает в конце каждого подключаемого файла ?ver=X.XX , в целях безопасности и чистоты коды желательно удалить эти параметры, делается это следующим кодом:

add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );
function remove_cssjs_ver( $src ) {
if( strpos($src,'?ver='))
$src = remove_query_arg( 'ver', $src );
return $src;
}

Поддержка темы

add_theme_support( 'title-tag' );
add_theme_support( 'post-thumbnails' );
add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption' ) );

Добавляет SVG в список разрешенных для загрузки файлов

add_filter( 'upload_mimes', 'svg_upload_allow' );
function svg_upload_allow( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'wp_check_filetype_and_ext', 'fix_svg_mime_type', 10, 5 );
function fix_svg_mime_type( $data, $file, $filename, $mimes, $real_mime = '' ){
if( version_compare( $GLOBALS['wp_version'], '5.1.0', '>=' ) )
$dosvg = in_array( $real_mime, [ 'image/svg', 'image/svg+xml' ] );
else
$dosvg = ( '.svg' === strtolower( substr($filename, -4) ) );
if( $dosvg ){
if(current_user_can('manage_options')){
$data['ext'] = 'svg';
$data['type'] = 'image/svg+xml';
} else
$data['ext'] = $type_and_ext['type'] = false;
}
return $data;
}

Выключаем лишнее от WordPress

remove_action('wp_head','wp_generator');
remove_action('wp_head','wlwmanifest_link');
remove_action('wp_head','wp_resource_hints', 2);
remove_action('wp_head','wlwmanifest_link');
remove_action('wp_head','rsd_link');
remove_action('wp_head','rel_canonical');
remove_action('wp_head','wp_site_icon');
remove_action('wp_head','wp_oembed_add_discovery_links' );
remove_action('wp_head','wp_oembed_add_host_js' );
remove_action('wp_head','feed_links_extra', 3 );
remove_action('wp_head','feed_links', 2 );
remove_action('wp_head','print_emoji_detection_script', 7 );
remove_action('wp_head','rest_output_link_wp_head' );
remove_action('wp_head','noindex', 1 );
remove_action('wp_head','wp_shortlink_wp_head', 10, 0);
remove_action('wp_head','adjacent_posts_rel_link_wp_head', 10, 0 );

Плагин для вставки кода

При вставке кодов и хуков в файл functions.php всегда нужно иметь в виду, что этот файл находится в папке темы. И, если вы не используете дочернюю тему, или измените тему, или даже обновите свою тему - все ваши данные затрутся.

Чтобы оградить себя от неожиданностей и не потерять доработки, установите плагин наподобие Code Snippets и спите спокойно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2021, GuruSite24. Копирование материалов сайта запрещено.
menu-circlecross-circle