SEO чистка WordPress
15

Удаляем ненужный код из WordPress - Чистим сайт

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

 

Базовая оптимизация wordpress header:

Некоторые вставки в верхнюю часть вашего сайта используют хуки для wp_head. Убрать эту функцию не получится, ведь если это сделать, то вместе с ней исчезнут и полезные куски кода, которые необходимы для сайта. Но тут на помощь к нам приходит файл с функциями functions.php. Открываем его и вносим правки, что я дал ниже.

 

Уберем ссылки на rss категории:

remove_action('wp_head','feed_links_extra', 3);

 

Уберем ссылки на основной rss, а также rss комментариев:

remove_action('wp_head','feed_links', 2);

 

Удаляем link rel=EditURI, сервис Really Simple Discovery:

remove_action('wp_head','rsd_link');

 

Удаляем Windows Live Writer (публикация постов к примеру с Microsoft Word и т.п).:

remove_action('wp_head','wlwmanifest_link');

 

Удаляем вывод версии WordPress:

remove_action('wp_head','wp_generator');

 

Удалим различные ссылки при отображении постов: следующий, предыдущий, короткий url:

remove_action('wp_head','start_post_rel_link',10,0);
remove_action('wp_head','index_rel_link');
remove_action('wp_head','adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action('wp_head','wp_shortlink_wp_head', 10, 0 );

 

 

Убираем остальной код из движка WordPress:

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

 

Удаляем стили .recentcomments, они появляются при выводе виджета "последние комментарии":

function ny_remove_recent_comments_style() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) );
}
add_action( 'widgets_init', 'ny_remove_recent_comments_style' );

 

В WordPress вы могли увидеть достаточно стремный код Emoji, поясню и пролью свет на это. Это код поддержки смайликов, удалить его можно вставив вот эти строки:

remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');

 

 

Убираем лишний код плагинов и темы:

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

 

Удаляем стили из модуля WP-Syntax, в нем стилей достаточно мало и располагаются они в файле wp-syntax.css, их я переместил в основной style.css:

remove_action( 'wp_head','wp_syntax_head');

 

Удаляем вывод информации о версии, которую вставляет модуль qTranslate-X:

remove_action('wp_head','qtranxf_wp_head_meta_generator');

 

Удаляем вывод стилей и скриптов от модуля Contact Form 7, там где он не используется:

// Deregister Contact Form 7 styles
add_action( 'wp_print_styles', 'aa_deregister_styles', 100 );
function aa_deregister_styles() {
    if ( ! is_page( get_theme_mod( "header_contacts") ) ) {
        wp_deregister_style( 'contact-form-7' );
    }
}
// Deregister Contact Form 7 JavaScript files on all pages without a form
add_action( 'wp_print_scripts', 'aa_deregister_javascript', 100 );
function aa_deregister_javascript() {
    if ( ! is_page( get_theme_mod( "header_contacts") ) ) {
        wp_deregister_script( 'contact-form-7' );
    }
}

 

Удаляем стили от модуля WP-PageNavi на версии 2.5.0 (на более высоких версиях это делается через настройки модуля в админке):

remove_action('wp_print_styles', 'pagenavi_stylesheets');

 

Удаляем вывод стилей от модуля Yet Another Related Posts Plugin, их также можно внести в основной файл (т.к. их мало: widget.css, related.css и yarpp-thumbnails-yarpp-thumbnail):

add_action( 'wp_print_styles', 'tj_deregister_yarpp_header_styles' );
function tj_deregister_yarpp_header_styles() {
   wp_dequeue_style('yarppWidgetCss');
   // Следующая строка нужна, если related.css грузится в header, а в футере отключен
   wp_deregister_style('yarppRelatedCss'); 
}
 
add_action( 'wp_footer', 'tj_deregister_yarpp_footer_styles' );
function tj_deregister_yarpp_footer_styles() {
   wp_dequeue_style('yarppRelatedCss');
   wp_dequeue_style('yarpp-thumbnails-yarpp-thumbnail');
}

 

Если вы хотите убрать стили и скрипты из какого-либо модуля, то найдите в модуле строку следующего типа, он подключает экшн в ту или иную часть сайта:

add_action('wp_head', 'plugin_function_here')

Для удаления можете воспользоваться следующей конструкцией, посмотрите на код ниже и код выше, сравните их и думаю поймете в чем суть, такого способа:

remove_action('wp_head', 'plugin_function_here');

 

 

Как убрать версию из скриптов/стилей в WordPress:

Большинство скриптов в WordPress включая некоторые стандартные, при подключении выводят также их версию, а это не совсем хорошо. Почему? Злоумышленники точно будут знать вашу версию того или иного скрипта, а сами понимаете, что с этим можно поделать. :

Удаляем версии WordPress со вех возможных страниц, RSS лент, всех скриптов и стилей:

add_filter('the_generator', '__return_empty_string');
function rem_wp_ver_css_js( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'rem_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'rem_wp_ver_css_js', 9999 );

 

Как удалить wp-json и oembed в WordPress:

Начиная с версии WordPress 4.4 ввели дополнительные функции, которые генерирует огромное количество технических страниц. Они хорошо индексируются поисковыми системами, из-за чего возникают проблемы с ранжированием. А это как вы понимаете лишний мусор, мешающий нашему сайту нормально развиваться. Страниц появляется очень много и все они не несут никакой ценности, только один хлам. Избавившись от этого, мы уберем ряд критических ошибок при индексировании.:

 

Удаляем поддержку REST API:

// Отключаем сам REST API
 add_filter('rest_enabled', '__return_false');
 
// Отключаем события 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 );
 
// Отключаем фильтры REST API
 remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
 remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
 remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
 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 );
 
//Отключаем type="application/json+oembed"
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
 remove_action( 'wp_head', 'rest_output_link_wp_head' );
 remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

 

Дополнительные правки в header.php:

Дополнительно вы можете удалить следующий код из вашего движка, он особой роли не несет и как по мне он не к чему в нем:

<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">

 

Чистим заголовки сервера WordPress:

Для чего нам это нужно? Всё просто, если к примеру мы откроем firebug и взглянем на запись заголовка ответа сервера, то найдем кучу мусора, который в идеале нужно бы убрать, этим мы и займемся далее.

 

Удаляем Link rel=shortlink:

remove_action( 'template_redirect', 'wp_shortlink_header', 11 );

 

Удаляем X-Pingback:

function ny_remove_x_pingback( $headers ) {
    unset( $headers['X-Pingback'] );
    return $headers;
}
add_filter( 'wp_headers', 'ny_remove_x_pingback' );

 

Удаляем X-Powered-By:

header_remove( 'x-powered-by' );

 

Вот и всё, мы проделали с вами достаточно большую, НО полезную работу для нашего блога, по внутренней оптимизации WordPress. Это будет полезно во-первых для SEO оптимизации и дальнейшего продвижения блога, а во-вторых для красоты исходного кода и увеличения производительности. Если есть вопросы или какие-то моменты я упустил, напишите об этом в комментариях, посмотрим вместе всё...

Запись опубликована В категории: WordPress

Shnapik

Вебмастер с опытом ищет приют! Возьмите меня, а то меня рвут!

15 комментариев

  1. Привет! Может я не совсем по теме пишу, но у меня есть явная проблема, которую не могу решить уже несколько дней.
    Есть блог на вордпресс, регистрация пользователей отключена. При отправке комментария данные пользователя (кроме текста) остаются в соответствующих полях. Они не очищаются ни при обновлении страницы, ни при смене темы (т.е. проблема не в самой теме, а в вордпресс).
    Тестировала в разных браузерах, везде данные остаются. Я не очень разбираюсь в кодах, но если ткнуть пальцем - то все настрою как надо.
    Есть какое-нибудь решение этой проблемы?
    Заранее благодарю.

    • Добрый день, посмотрел у себя в блоге, действительно сохраняются данные (email и имя), если я правильно понял и нужно, чтобы эти данные не сохранялись, а форма была всегда чистой при открытии страницы, то нужно переопределить поля формы в функции comment_form, убрав из них атрибут value.

      Примерно так должно быть:

      <?php
      $fields = array(
      'fields' => array(
        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
               '<input id="author" name="author" type="text" size="30"' . $aria_req . $html_req . ' /></p>',
        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
               '<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' size="30" aria-describedby="email-notes"' . $aria_req . $html_req  . ' /></p>',
        'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label> ' .
               '<input id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
      )
      );
      ?>
      <?php comment_form($fields); ?>
  2. О, спасибо тебе, добрый человек!) Все получилось! А я уже и не надеялась это решить, через поисковик невозможно найти ответ. Еще раз спасибо )

    • Не за что, рад помочь. Через поиск в целом можно найти решение, но самому тоже придется пописать возможно код. Сделаю позже статью про функцию comment_form.

  3. Здравствуйте. Вопрос 1. Зачем убирать ссылки на RSS категории и на основной rss, а также rss комментариев: я убралш и у меня моя RSS лента исчезла...
    Вопрос 2. Я почистил мусор, убрал все скрипты в футер, но на следующий день смотрю код, а в Heder опять куча скриптов - как их окончательно убрать пониже, что бы страница грузилась быстрее, тем более, что в шапке видео стоит...
    Вопрос3. В вордпресс я не вижу в "рубриках" отражения некоторых категорий, а на сайте и карте сайта они есть???
    4. Почему в карте сайта не отражаются рубрики в родительской рубрике, а всё чохом???
    5. Посмотрите пожалуйста сайт и дайте рекомендации: КЛИК

    • Убирать RSS из кода, чтобы поисковики их не индексировали и они не мешались в дальнейшем. Как по мне RSS категории - лишнее, лучше все в RSS запихивать. Лично я не пользуюсь ими, потому для меня этот вариант лучше.

       

      Что касается скриптов в шапке, то некоторые как я понял в теме (нужно тему смотреть и исправлять), некоторые стандартные (перенести можно плагином или ручками).

       

      Что касается 3 вопроса, то не понял его сути. Желательно по подробнее и с примером.

       

      4 - тут смотря какой плагин используется и как настроен.

       

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

  4. Ещё вопрос - как ускорить загрузку видео в шапке сайта, я много чего перепробовал, ролик короткий сделал с повтором, всё равно долго загружается....

    • Касательно видео, то оно не очень быстро будет грузиться в любом случае, все зависит также и от скорости хостинга где видео находится, а также от его веса и оптимизации. Кроме того грузиться оно должно первым по сути, но это замедлит загрузку сайта, лучше сделать картинкой (например gif анимация) + добавить аудио файл. Будет быстрее грузиться.

  5. Вот код из heder темы:

    <?php
     
    /**
     
    * The header for our theme
     
    */
     
     
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
     
     
     
    <meta http-equiv="Content-Type" content="text/html, charset=UTF-8" />
     
     
     
     
     
    <title><?php bloginfo('name'); wp_title(); ?></title>
     
     
     
    <link href="<?php bloginfo('template_url'); ?>/media-queries.css" rel="stylesheet" type="text/css">
     
     
     
     
     
    <?php wp_head(); ?>
     
    </head>
     
     
     
    <body background="<?php bloginfo('template_url');?>/images/sea.jpg">
     
    <?php include_once("analyticstracking.php") ?>
     
     
     
     
     
     
     
    <div class="main">
     
    <div class="header">
     
     
     
    <video  autoplay loop=7>
     
    <source src="<?php bloginfo('template_url');?>/video/pmks_a.mp4" type="video/mp4" >
     
    <source src="<?php bloginfo('template_url');?>/video/pmks_a.ogv" type="video/ogg">
     
    <source src="<?php bloginfo('template_url');?>/video/pmks_a.webm" type="video/webm">
     
    <img src= "<?php bloginfo('template_url');?>/img/header2a.jpg" width="1200px" height="548px" alt="Ваш браузер не поддерживает видео">
     
    </video>

    Там ничего лишнего....

    По поводу дизайна сайта, что конкретно вы бы переделали? Я, так понял, вы хотели написать "старенький"?

    И ещё: почему у меня, когда пишу статью, не работает относительный путь к картинке, а в шапке сайта отн. путь к видео спокойно работает, да и к фону, он же то же картинка????

    Вот код, к примеру:

    <img src="<?php bloginfo('template_url');?>/images/italia/Florenzia/" alt="" align="center">
    • Касательно дизайна да, желательно его как-то осовременить, сделать более привлекательным.

       

      По поводу встраивания видео в статьи, если видео загружено через медиафайлы, то проблем быть не должно, если возникают проблемы, то стоит посмотреть на изменения в движке, файле function вашей темы, либо плагины (если какие-то стоят или делались какие-то изменения в чем-то), возможно также и другие файлы. Обычно проблем не должно быть, по крайней мере у меня нет и на стандартном движке без тем и т.п. нет. С картинками тоже самое, но путь относительный не будет работать как пример по коду выше (последняя строчка), насколько я помню не работает подобный путь в статьях, нужно допиливать и ковырять движок.

      Лучше использовать медиафайлы. Да и разрешение не забывайте ставить у файлов, если они не стоят, тоже как причина не рабочей картинки.

  6. Можно ли как то скрыть все вот эти ссылки из шапки сайта на подобии link id ? сайт вот Клик

    • открывает через https... у вас в ссылки добавляется https 🙁

    • Не понял какие ссылки скрыть, но если вы про меню, то ищите его где-то в коде и изменяйте как вам нужно, если в шаблоне нет такой функции. Либо нужно писать функцию по скрытию, но это лишнее мне кажется. Если конечно я вас правильно понял. А что касается https, то да, у меня автоматически добавляется это к адресам всех моих ссылок culabra.ru  

  7. Как убрать появившийся лишний Div в WordPress???
    У меня сайт, до автообновления, работал нормально. После обновления окно поиска съехало вниз.... Посмотрел свой код "меню" и в редакторе и в настройках вордпресса - всё ОК.
    Но при нажатии правой кнопкой мышки на сайте - "просмотр кода" я вижу, что появился лишний DIV , ОТСЕКАЮЩИЙ "ПОИСК" ОТ МЕНЮ! Как эту беду в вордпрессе устранить???

    • Сайт посмотрел, никаких косяков с формой поиска не заметил. Работает нормально, выглядит тоже, меню только в обратном направлении сделано, не очень удобно, но никаких блоков между ними нет. Если на скрине только покажите как это все у вас...

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

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