SEO чистка WordPress
21

Удаляем ненужный код из 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

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

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

  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 , ОТСЕКАЮЩИЙ "ПОИСК" ОТ МЕНЮ! Как эту беду в вордпрессе устранить???

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

  8. Здравствуйте!

    Прошу прощения, что не совсем в тему, но очень нужна помощь. По неопытности вставлял код вывода блока AdSense вручную в каждый пост (в середину текста), теперь мне нужно удалить блок из всех записей. Не подскажете, как можно быстро удалить его из всех статей, чтобы не чистить каждую вручную? Их порядка 500. Может, есть какой-то скрипт или плагин?

    Спасибо!

    • Как вариант попробуйте вот этот запрос в mysql. не знаю подойдет или нет, но как вариант. Используйте запрос в phpmyadmin, sql:

      UPDATE `table` SET `column` = REPLACE( column, 'search', 'replace' ) ;

      table - название таблицы

      column - название колонки

      search - фраза, которую ищем

      replace - фраза, на которую заменяем то что нашли

  9. Здравствуйте. Не знаю к кому обратиться за помощью по настройке подвала блога не вордпрессе. Блог стоит на теме Simple Catch. Поставил плагин Footer Putter. Как его настроить то. Там вроде и всё есть, но по аглицки))). В инете ни где нет. Искать запарился. В самом подвале php там поубирал, чтоб надписи пропали, типа сайт работает на вордпресс и т.д. А они всё равно висят. Знаю что где-то ещё этот html  закопан, но капать не решаюсь. А мне надо прописать туда ссылку политики конфеденц-ти. Ну копирайт одним слов по русски. Как сделать? Или может есть другой плагин подходящий. Задолбался просто.Заранее спасибо.

    • Эти надписи закопаны могут быть в frameworke темы, либо в настройках, как вариант еще где-то Все по разному распихивают их. По файлам темы лучше пробежаться и почистить её.

       

      Попробуйте посмотреть файл: content\themes\название_вашей_темы\footer.php

      Найти там что-то вроде этого:

      	
      
      
      < ?php wp_footer(); ?>
      
      
      

      А получиться должно нечто такое:

      	<footer id="colophon" role="contentinfo">
      		<div id="site-generator">
      			<?php echo __('© ', 'major-media') . esc_attr( get_bloginfo( 'name', 'display' ) ) . ' 2008 - '.date(Y);  ?>
       
      		</div>
      	</footer><!-- #colophon -->
      </div><!-- #page -->
       
      <?php wp_footer(); ?>
       
      </body>
      </html>
  10. Добрый день. Спасибо за ваши советы. Возникла только проблема с удалением ненужных строк.

    <link rel="pingback" href="https://sitename.ru/xmlrpc.php" />

    Причем где пингбэк у меня такая строка:

    <link rel="pingback" href="https://sitename.ru/xmlrpc.php" />

    а в профиле вплоть до символа.
    Подскажите, нужно ли удалять вторую строку с ссылкой на карту сайта (плагин
    Yoast) и как убрать первую.

    • Добрый день. Можете удалять её смело, они может выглядеть иначе, но суть её одинакова.

      Что касается плагина Yoast, то по нему не скажу ничего. Я его не использую и не буду никогда использовать, да и вам не советую. Возьмите лучше All in One Seo Pack, с ним будет и меньше вопросов, и меньше проблем, да и попроще он будет мне кажется в освоении...

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

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