Вообще я за минимализм и чистый код, и удаление лишнего в WordPress – дело принципа.
Действительно, поскольку Wordpress является широко используемой системой управления сайтов, продуманной и легко адаптируемой к практически любым задачам – изначальный код движка (и тем), несет в себе много кода, рассчитанного, так сказать “на перспективу”, и целесообразность его использование во всех подряд проектах сомнительна. Да, при сегодняшних скоростях интернета, лишних пару сотен строчек кода не критичны – но все же – “мы” боримся за чистоту кода и сегодня я рассмотрю как удалить лишнее из WordPress и основательно почистить код. Сразу оговорюсь, что некоторые советы могут негативно влиять на те или иные специфические функции и работоспособность плагинов, так что использовать все советы одновременно не обязательно, вы сможете выбрать для себя только те рекомендации, которые подойдут Вам.
WordPress – чистка кода – Удаляем лишнее
Сразу же привожу код, который я добавляю практически во все проекты на WordPress, чтобы подчистить не нужные для меня функции и сократить код. Код добавляется в function.php темы и не является критическим изменением, и вы в любой момент можете его удалить (или конкретные строки), не боясь “поломать” работающий сайт.
Собственно сам код с некоторыми пояснениями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | add_filter('show_admin_bar', '__return_false'); // отключить строку администратора в фронтеде remove_action( 'wp_head', 'feed_links_extra', 3 ); remove_action( 'wp_head', 'feed_links', 2 ); remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'index_rel_link' ); remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); remove_action( 'wp_head', 'wp_generator' ); remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); // Отключаем WP-API версий 1.x add_filter( 'json_enabled', '__return_false' ); add_filter( 'json_jsonp_enabled', '__return_false' ); // Отключаем WP-API версий 2.x add_filter( 'rest_enabled', '__return_false' ); add_filter( 'rest_jsonp_enabled', '__return_false' ); // Удаляем информацию о REST API из заголовков HTTP и секции head remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' ); remove_action( 'wp_head', 'rest_output_link_wp_head', 10 ); remove_action( 'template_redirect', 'rest_output_link_header', 11 ); // Отключаем фильтры REST API remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' ); add_filter('xmlrpc_enabled', '__return_false'); 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 ); // Отключаем события REST API remove_action( 'init', 'rest_api_init' ); remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 ); remove_action( 'parse_request', 'rest_api_loaded' ); // Отключаем Embeds связанные с REST API remove_action( 'rest_api_init', 'wp_oembed_register_route' ); remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 ); // Убираем oembed ссылки в секции head remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); // Если собираетесь выводить oembed из других сайтов на своём, то закомментируйте следующую строку //Удаляем emoji в WP remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('wp_print_styles', 'print_emoji_styles'); |
Использовав его, исчезает около ста строчек “лишнего” кода на страницах Wordpress, таких как разнообразные пинги и генераторы (что еще и повышает безопасность блога) ну и отключение многих не используемых функций. Еще раз напомню – использовать весь код целиком не обязательно – если вы используете какие-нибуть из заблокированных функций просто комментируйте или удаляйте нужные строки. Мне лично для большинства сайтов именно этот код подходит и никаких проблем с нужным мне функционалом не возникало.
Еще одну вещь которую я постоянно удаляю в WordPress, и которая находится непосредственно в файлах темы – в файле header.php обычно. Строчку:
1 | <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>"> |
Ну и в админке удаляю сервер оповещения, так как нормальный, регулярно обновляемый блог и так индексируется оперативно, а данная функция только привлекает разного рода спам боты.