Убираем мусор в исходном коде сайта на WordPress и в выдаче ПС

Собрал в этом посте несколько фишек для сайта на WordPress с других блогов, чтобы потом не бегать не искать их по всему инету. Этот список будет пополняться.

1. Отключаем иконки emoji, которые создают мусор

Отключаем иконки emoji

В function.php вставляем код:

// отключает иконки с версии 4.2
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
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' );
//----- end --

2. Отключаем ссылку на wp-json

Убираем из head ссылку на wp-json, чтобы в выдаче ПС не появлялись мусорные страницы вида https://site.ru/wp-json/. Плюс включается редирект с таких страниц на главную.

убираем ссылку на wp-json

Для этого добавляем в function.php код:

// Отключаем сам REST API
add_filter('rest_enabled', '__return_false');

// Отключаем фильтры 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 );

// Отключаем события 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 );

remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// если собираетесь выводить вставки из других сайтов на своем, то закомментируйте след. строку.
remove_action( 'wp_head',                'wp_oembed_add_host_js'                 );

// Для редиректа с https://site.ru/wp-json/ на главную
// ИНОГДА ВЫЗЫВАЕТ ПРОБЛЕМУ ВХОДА В АДМИНКУ!!! (проверяйте сразу)
add_action( 'template_redirect', function() {
        if ( preg_match( '#^/wp-json/(.*)#', $_SERVER['REQUEST_URI'] ) ) {
                wp_redirect( get_option( 'siteurl' ), 301 );
                die();
        }
} );

3. Удаление информации о версии WP (meta name generator)

В файл function.php вставляем код:

function wp_remove_version() {
return '';
} 
add_filter('the_generator', 'wp_remove_version');

4. Запрет индексации feed страниц wordpress для ПС

Заметил что в поиске Яндекса много страниц вида https://site.ru/что-то-там/feed

 

Зашел в robots.txt, проверил, вроде есть строчки закрывающие feed:

Disallow: */feed/
Disallow: /?feed=

Зашел в Вебмастер Яндекса проверить, закрывают ли они индексацию вышеназванных страниц, оказалось что нет. Нужно добавить еще (без слеша на конце):

Disallow: */feed

Теперь закрыто:

запрет индексации страниц feed

Туда же можно добавить на всякий случай и это (о чем писалось выше):

Disallow: /wp-json

Можно вообще убрать feed, но я не рекомендовал бы это делать, если вам нужна rss лента на сайте.
Но если она вам не нужна и вы хотите перестраховаться, чтобы никто её не парсил, то можете добавить такой код в function.php:

// Отключение rss ленты
function fb_disable_feed() {
    wp_redirect(get_option('siteurl'));
}

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);

remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );

На заметку

В исходном коде страницы в head могут еще присутствовать строчки вида:

<link rel='dns-prefetch' href='//ajax.googleapis.com' />
<link rel='dns-prefetch' href='//s.w.org' />

Они что-то там ускоряю, и лучше их не убирать.

Оцените статью
Дневник Сеошника
Добавить комментарий

  1. seoonly.ru

    А плагина нет для этого? Чтобы поставил и все сделалось само собой?

    Ответить
    1. ARKSEO

      Есть платный плагин — Clearfy.

      Ответить
  2. Настя

    Интересная информация.Как раз сейчас начала изучать WordPress. Собираю всю полезную информацию.

    Ответить
  3. Павел

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

    Ответить