WordPress. Как удалить теги в заголовке
WordPress добавляет внутрь тега <head>
множество служебных тегов, многие из которых бесполезны как для посетителей, так и для поисковых систем. Кроме того, некоторые мета-теги противоречат правилам безопасности. Например, мета-тег generator
содержит информацию об используемой версии WordPress, на что хакеры смотрят в первую очередь. Зная точную версию движка, злоумышленник может использовать эту информацию для для взлома сайта.
Удаляем служебные теги
Давайте посмотрим, что это за теги и как их удалить из заголовка WordPress. Код для удаления добавляем в файл functions.php
темы.
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.server.com/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.server.com/wp-includes/wlwmanifest.xml" /> <link rel='prev' title='Шестая запись блога' href='http://www.server.com/post-number-6/' /> <link rel='next' title='Восьмая запись блога' href='http://www.server.com/post-number-8/' /> <meta name="generator" content="WordPress 4.9.10" /> <link rel="canonical" href="http://www.server.com/post-number-7/" /> <link rel='shortlink' href='http://www.serever.com/?p=1881' />
Удаляем ссылку для редактирования внешними сервисами:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.server.com/xmlrpc.php?rsd" />
remove_action('wp_head', 'rsd_link');
Удаляем ссылку для редактирования клиентом Windows Live Writer:
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.server.com/wp-includes/wlwmanifest.xml" />
remove_action('wp_head', 'wlwmanifest_link');
Удаляем вывод ссылок на предыдущую и следующую запись:
<link rel='prev' title='Шестая запись блога' href='http://www.server.com/post-number-6/' /> <link rel='next' title='Восьмая запись блога' href='http://www.server.com/post-number-8/' />
remove_action('wp_head','adjacent_posts_rel_link_wp_head');
Удаляем версию WordPress из заголовка страницы:
<meta name="generator" content="WordPress 4.9.10" />
remove_action('wp_head', 'wp_generator');
Удаляем вывод канонических ссылок:
<link rel="canonical" href="http://www.host24.ru/post-number-7/" />
remove_action('wp_head', 'rel_canonical');
Удаляем вывод коротких ссылок:
<link rel='shortlink' href='http://www.host24.ru/?p=1881' />
remove_action('wp_head', 'wp_shortlink_wp_head');
Плагин для удаления тегов
Чтобы не переносить код удаления служебных тегов из одной темы в другую, можно оформить все в виде плагина. Создаем директорию tokmakov-clean-head
, а внутри нее — файлы tokmakov-clean-head.php
и uninstall.php
:
<?php /* Plugin Name: Удаляет теги из заголовка Plugin URI: https://tokmakov.msk.ru Description: Позволяет удалить неиспользуемые служебные теги, настройки на странице «Настройки • Общие». Version: 1.0 Author: Евгений Токмаков Author URI: https://tokmakov.msk.ru */ /* * Получаем настройки плагина и удаляем служебные теги в head */ add_action('init', function () { $option = get_option('tokmakov_head_clean', false); if (empty($option)) { return; } if (isset($option['edituri'])) { remove_action('wp_head', 'rsd_link'); } if (isset($option['wlwmanifest'])) { remove_action('wp_head', 'wlwmanifest_link'); } if (isset($option['prevnext'])) { remove_action('wp_head','adjacent_posts_rel_link_wp_head'); } if (isset($option['generator'])) { remove_action('wp_head', 'wp_generator'); } if (isset($option['canonical'])) { remove_action('wp_head', 'rel_canonical'); } if (isset($option['shortlink'])) { remove_action('wp_head', 'wp_shortlink_wp_head'); } }); /* * Добавляем возможность изменять настройки плагина в панели управления */ add_action('admin_init', function () { /* * Регистрируем новую опцию, которая содержит несколько checkbox-ов */ register_setting( 'general', 'tokmakov_head_clean' ); /* * Регистрируем новую секцию для этой опции из нескольких значений */ add_settings_section( 'tokmakov_head_clean_section', // идентификатор секции 'Плагин удаления служебных тегов', // заголовок секции function () { // выводит описание секции ?> <p> Плагин позволяет удалить служебные теги, которые бесполезны как для посетителей, так и для поисковых систем. </p> <?php $html = <<<HTML 1. <link rel="EditURI" type="..." title="..." href="..." /> 2. <link rel="wlwmanifest" type="..." href="..." /> 3. <link rel="prev" title="..." href="..." /> 3. <link rel="next" title="..." href="..." /> 4. <meta name="generator" content="..." /> 5. <link rel="canonical" href="..." /> 6. <link rel="shortlink" href="..." /> HTML; $html = esc_html($html); ?> <pre style="border: 1px solid #ddd; padding: 5px;"><?= $html; ?></pre> <?php }, 'general' ); /* * Добавляем поле формы для первого значения опции */ add_settings_field( 'tokmakov_head_clean_edituri', // идентификатор поля формы 'Удалить служебный тег № 1', // заголовок поля формы function () { // выводит html-код поля формы $option = get_option('tokmakov_head_clean'); $checked = ''; if (isset($option['edituri'])) { $checked = 'checked'; } ?> <input type="checkbox" id="tokmakov_head_clean_edituri" name="tokmakov_head_clean[edituri]" value="1" <?= $checked; ?> /> <label for="tokmakov_head_clean_edituri"> Ссылка для редактирования блога внешними сервисами </label> <?php }, 'general', // страница меню «Настройки» 'tokmakov_head_clean_section' // идентификатор секции ); /* * Добавляем поле формы для второго значения опции */ add_settings_field( 'tokmakov_head_clean_wlwmanifest', // идентификатор поля формы 'Удалить служебный тег № 2', // заголовок поля формы function () { // выводит html-код поля формы $checked = ''; $option = get_option('tokmakov_head_clean'); if (isset($option['wlwmanifest'])) { $checked = 'checked'; } ?> <input type="checkbox" id="tokmakov_head_clean_wlwmanifest" name="tokmakov_head_clean[wlwmanifest]" value="1" <?= $checked; ?> /> <label for="tokmakov_head_clean_wlwmanifest"> Ссылка для редактирования блога клиентом Windows Live Writer </label> <?php }, 'general', // страница меню «Настройки» 'tokmakov_head_clean_section' // идентификатор секции ); /* * Добавляем поле формы для третьего значения опции */ add_settings_field( 'tokmakov_head_clean_prevnext', // идентификатор поля формы 'Удалить служебный тег № 3', // заголовок поля формы function () { // выводит html-код поля формы $checked = ''; $option = get_option('tokmakov_head_clean'); if (isset($option['prevnext'])) { $checked = 'checked'; } ?> <input type="checkbox" id="tokmakov_head_clean_prevnext" name="tokmakov_head_clean[prevnext]" value="1" <?= $checked; ?> /> <label for="tokmakov_head_clean_prevnext"> Ссылки на предыдущую и следующую записи блога </label> <?php }, 'general', // страница меню «Настройки» 'tokmakov_head_clean_section' // идентификатор секции ); /* * Добавляем поле формы для четвертого значения опции */ add_settings_field( 'tokmakov_head_clean_generator', // идентификатор поля формы 'Удалить служебный тег № 4', // заголовок поля формы function () { // выводит html-код поля формы $checked = ''; $option = get_option('tokmakov_head_clean'); if (isset($option['generator'])) { $checked = 'checked'; } ?> <input type="checkbox" id="tokmakov_head_clean_generator" name="tokmakov_head_clean[generator]" value="1" <?= $checked; ?> /> <label for="tokmakov_head_clean_generator"> Мета-тег установленной версии WordPress (особо опасен) </label> <?php }, 'general', // страница меню «Настройки» 'tokmakov_head_clean_section' // идентификатор секции ); /* * Добавляем поле формы для пятого значения опции */ add_settings_field( 'tokmakov_head_clean_canonical', // идентификатор поля формы 'Удалить служебный тег № 5', // заголовок поля формы function () { // выводит html-код поля формы $checked = ''; $option = get_option('tokmakov_head_clean'); if (isset($option['canonical'])) { $checked = 'checked'; } ?> <input type="checkbox" id="tokmakov_head_clean_canonical" name="tokmakov_head_clean[canonical]" value="1" <?= $checked; ?> /> <label for="tokmakov_head_clean_canonical"> Вывод канонической ссылки на пост или страницу </label> <?php }, 'general', // страница меню «Настройки» 'tokmakov_head_clean_section' // идентификатор секции ); /* * Добавляем поле формы для шестого значения опции */ add_settings_field( 'tokmakov_head_clean_shortlink', // идентификатор поля формы 'Удалить служебный тег № 6', // заголовок поля формы function () { // выводит html-код поля формы $checked = ''; $option = get_option('tokmakov_head_clean'); if (isset($option['shortlink'])) { $checked = 'checked'; } ?> <input type="checkbox" id="tokmakov_head_clean_shortlink" name="tokmakov_head_clean[shortlink]" value="1" <?= $checked; ?> /> <label for="tokmakov_head_clean_shortlink"> Вывод короткой ссылки на пост или страницу </label> <?php }, 'general', // страница меню «Настройки» 'tokmakov_head_clean_section' // идентификатор секции ); });
<?php if (!defined('WP_UNINSTALL_PLUGIN')) { exit; } delete_option('tokmakov_head_clean');
- WordPress. API настроек (опций). Часть 3 из 4
- WordPress. Установка и использование WP-CLI
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
- WordPress. Добавляем мета-теги. Часть 3 из 3
- WordPress. Метабоксы. Часть 2 из 2
Поиск: WebSocket • WordPress • Настройка • Оптимизация • Мета теги • remove_action • Плагин • Plugin