Ответ 1
Если вы пытаетесь удалить только meta="generator"
добавьте эту строку в файл functions.php.
remove_action( 'wp_head', 'wp_generator' );
У меня есть эти теги:
<meta name="generator" content="Woo Framework Version 3.1.1" />
<meta name="generator" content="WordPress 3.5" />
<meta name="generator" content="Canvas 3.0" />
Я понимаю, чтобы удалить тег версии WordPress, который я добавляю:
remove_action( 'wp_head', 'wp_generator' ); // goes into functions.php
Но как мне удалить meta
тем?
Если вы пытаетесь удалить только meta="generator"
добавьте эту строку в файл functions.php.
remove_action( 'wp_head', 'wp_generator' );
Я искал решение для удаления мета-генератора Layer Slider, не нашел большой помощи ни на одном из немногих сайтов, на которые я смотрел, все они делятся одной и той же информацией, которая относится только к генератору WordPress или популярным плагинам, таким как WooCommerce.
Проблема в том, что каждый плагин будет иметь свои собственные имена хуков и соглашения об именах, поэтому узнать или узнать их все будет практически невозможно. Я думаю, что самый простой способ - это простой PHP с preg_replace
.
Рабочий код, протестированный в WordPress 4.7.2. Внутри functions.php вашей темы вставьте этот код, и он должен работать.
//Remove All Meta Generators
ini_set('output_buffering', 'on'); // turns on output_buffering
function remove_meta_generators($html) {
$pattern = '/<meta name(.*)=(.*)"generator"(.*)>/i';
$html = preg_replace($pattern, '', $html);
return $html;
}
function clean_meta_generators($html) {
ob_start('remove_meta_generators');
}
add_action('get_header', 'clean_meta_generators', 100);
add_action('wp_footer', function(){ ob_end_flush(); }, 100);
Я использую регулярное выражение для захвата meta
. Он охватывает, ставят ли они пробелы между знаком равенства или нет. Использование ob_start
для покрытия всего документа. Поэтому мы добавляем preg_replace
начиная с верхнего колонтитула до preg_replace
колонтитула. Посмотрите, как ob_start
работает в руководстве по PHP, также иногда кодекс WordPress заявляет, что он должен использовать ob_start
.
Если вы найдете это полезным, пожалуйста, добавьте большие пальцы, чтобы следующий ищущий мог найти рабочее решение, охватывающее все метагенераторы. Я считаю плохой безопасностью для разработчиков плагинов и платформ вставлять номера версий метагенераторов в код. Особенно с постоянно возникающими уязвимостями.
Я также добавил плагин, который делает именно это в репозитории WordPress.
Я нашел этот исходный код плагина, в котором говорится, что он удаляет автоматически сгенерированные метатеги WP. Вы можете попробовать это.
В нижней части файла functions.php добавьте следующий фрагмент php:
// hide the meta tag generator from head and rss
function disable_version() {
return '';
}
add_filter('the_generator','disable_version');
remove_action('wp_head', 'wp_generator');
Недавно я столкнулся с этой проблемой и мне пришлось удалить метатеги для обеспечения безопасности и спама для клиента. Мне удалось удалить метагенератор Wordpress, но тема использует woo framework, поэтому
remove_action('wp_head', 'wp_generator');
Недостаточно. Чтобы удалить
<meta name="generator" content="Woo Framework Version x.x.x" />
и любые теги метагенераторов, которые генерирует ваша тема, просто добавьте эту строку в конец вашего шаблона functions.php
// remove the unwanted <meta> links
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'woo_version');
Это работало для меня на Woo Framework 5.5.5. Чтобы определить место, где инициализируется метатег генератора, найдите файл admin-init.php
для вашего шаблона, а функция woo_version()
и функция woo_version_init()
должны быть там. Обычно он находится под папкой include в вашем источнике темы.
В случае, если он жестко закодирован в шаблон темы (т.е. в header.php), вы должны вручную удалить это!
В противном случае используйте это полное решение, чтобы удалить все теги версии:
// ============ removing inbuilt WP version meta-tags =========== http://stackoverflow.com/q/16335347/2377343 ========== //
//if included in wp_head
add_action( 'after_setup_theme', 'my_wp_version_remover' ); function my_wp_version_remover(){
remove_action('wp_head', 'wp_generator'); //remove inbuilt version
remove_action('wp_head', 'woo_version'); //remove Woo-version (in case someone uses that)
}
//clean all responses from VERSION GENERATOR
add_filter('the_generator', 'rm_generator_filter');
add_filter('get_the_generator_html', 'rm_generator_filter');
add_filter('get_the_generator_xhtml', 'rm_generator_filter');
add_filter('get_the_generator_atom', 'rm_generator_filter');
add_filter('get_the_generator_rss2', 'rm_generator_filter');
add_filter('get_the_generator_comment', 'rm_generator_filter');
add_filter('get_the_generator_export', 'rm_generator_filter');
add_filter('wf_disable_generator_tags', 'rm_generator_filter');
function rm_generator_filter() {return '';}
// Hide "?vers=XXXXX" strings from scripts and styles ( https://premium.wpmudev.org/blog/how-to-hide-your-wordpress-version-number/ )
add_filter( 'script_loader_src', 'fjarrett_remove_wp_version_strings' );
add_filter( 'style_loader_src', 'fjarrett_remove_wp_version_strings' );
function fjarrett_remove_wp_version_strings( $src ) { global $wp_version;
parse_str(parse_url($src, PHP_URL_QUERY), $query);
if ( !empty($query['ver']) && ($query['ver'] === $wp_version || $query['ver'] == $wp_version) ) { $src = remove_query_arg('ver', $src); } return $src;
}
// ========================================================== //
Следующий код избавляет от всех тегов генератора в Woo Framework. Я тестировал его с помощью Woo Framework 6.0.4 и темы Canvas 5.8.3:
// Remove the WooThemes version from the html headers
function no_woo_version ()
{
return true;
}
add_filter ('wf_disable_generator_tags', 'no_woo_version');
Если вы создали свою собственную тему WordPress, у вас не будет проблем с генератором в мета-коде, делайте так, как я делал в образце samll. Там не будет генератора, если вы не будете объявлять его как некоторые из ваших пользовательских функций. Я пытаюсь контролировать все JS-скрипты и стили моей темы, как здесь. Если у меня есть стиль из плагинов, там нужно еще немного работы.
но если вы используете бесплатную тему, да в 100% будет генератор. Поэтому добавьте в файл Function.php 1: http://sierra-group.in.ua/start-legkogo-rezhima-preprocesornoj-sborki-vashih-fajlov-stilej-i-skriptov.html/#custom-register-styles- sctiprs
function disable_version() { return '';}
add_filter('the_generator','disable_version');
remove_action( 'wp_head', 'wp_generator');
remove_action('wp_head', 'woo_version');
function no_woo_version (){ return true;}
add_filter ('wf_disable_generator_tags', 'no_woo_version');