среда, 1 июня 2016 г.

Wordpress — удаление лишних ссылок из кода темы

В html коде Wordpress в теге head и не только есть много ссылок, которые, возможно, не нужны блогу, и тем-более сайту на WP (ссылки на rss фиды, соседние записи, js файлы и т.п).
Их удаление может значительно ускорить загрузку страниц, убрав несколько сотен лишних килобайт. А также сделает html код аккуратнее. Очистка без плагинов.


Собрано в кучу из разных страниц в сети.

Нужный код добавить в файл functions.php (в папке темы) в конец, перед ?>

Удаление ссылок на предыдущую и следующую статью в head (<link rel='prev/next' ...>)
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); /* ссылки на соседние посты */

Удаление <link rel='shortlink' ...>
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); /* shortlink */

Удаление <link rel="alternate" type="application/rss+xml" ...">
remove_action( 'wp_head', 'feed_links_extra', 3 ); /* rel alternate */

Удаление ссылки на rss фиды (<link rel="alternate" type="application/rss+xml" ...>)
remove_action( 'wp_head', 'feed_links', 2 ); /* rss+xml*/

Удаление ссылки на (<link rel="EditURI" type="application/rsd+xml" title="RSD" ...>)
remove_action( 'wp_head', 'rsd_link' ); /*rsd+xml */

Удаление ссылки <link rel="wlwmanifest" type=... ...">
remove_action( 'wp_head', 'wlwmanifest_link' ); /* wlwmanifest */

Удаление строки <meta name="generator" content="WordPress 4.5.2"> (скрыть версию wordpress)
remove_action( 'wp_head', 'wp_generator' ); /* meta content WordPress n.n.n */

Эти 4 строки не совсем понятно что убирают, но тоже предлагаются для чистки. В моей теме ничего не изменили.
remove_action( 'wp_head', 'index_rel_link' ); /* index link */
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );  /* prev link  */
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); /* start link */
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); /*  Display relational links for the posts adjacent to the current post. */

Отключение ссылок API (<link rel='https://api.w.org/'...>) и oembed (<link rel="alternate" type="application/json+oembed...">)
remove_action( 'wp_head', 'rest_output_link_wp_head');
remove_action( 'wp_head', 'wp_oembed_add_discovery_links');
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

Отключение скрипта jquery-migrate.min.js из header и подключение jQuery из Google API
function crunchify_remove_jquery_migrate_load_google_hosted_jquery() {
 if (!is_admin()) {
  wp_deregister_script('jquery');
  wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, null);
  wp_enqueue_script('jquery');
 }
}
add_action('init', 'crunchify_remove_jquery_migrate_load_google_hosted_jquery');

Удаление указания версии js и css (=?ver) в теме, типа "/style.css?ver=2.3.3"
function remove_cssjs_ver( $src ) {
    if( strpos( $src, '?ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

Отключении файла wp-embed.min.js в футере
function my_deregister_scripts(){
 wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

удаление стилей для img.wp-smiley,img.emoji в хидере, если не нужны смайлы
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');

Удаление ссылки на comment-reply.min.js в footer'е (файл может быть полезным для комментирования)
function crunchify_clean_header_hook(){
 wp_deregister_script( 'comment-reply' );
         }
add_action('init','crunchify_clean_header_hook');


Классы menu-item 
Убрать id и классы меню (<li id="menu-item-34" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-34">) и оставить чистые <li>. Это можно делать в том случае, если они без стилей в вашей теме (поиск по фразе "menu-item" в файле style.css поможет это определить). Очень красиво выглядит чистый код меню.
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
  return is_array($var) ? array() : '';
}

Комментариев нет: