我有这些标签:
<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
代码?
答案 0 :(得分:20)
如果您只想删除meta="generator"
,请将此行添加到 functions.php 。
remove_action( 'wp_head', 'wp_generator' );
答案 1 :(得分:14)
正在寻找一个删除Layer Slider元生成器的解决方案,在我看过的几个网站中没有找到很多帮助,它们都共享相同的信息,这只与有关WordPress 生成器或热门插件,如 WooCommerce 。
这里的问题是每个插件都有它自己的钩子名称和命名约定,所以学习或了解它们几乎是不可能的。我认为最简单的方法是使用preg_replace
的简单PHP。
已在 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
一直到页脚。了解ob_start
ob_start
的工作原理,有时PHP Manual说明它应该使用Dataframe
。
如果您发现这个有用,请添加一个竖起大拇指,以便下一个看的人可以登陆覆盖所有元生成器的工作解决方案。我觉得这些插件和平台开发人员将元生成器版本号放在代码中的安全性很差。特别是随着不断发现的漏洞的不断发现。
我还添加了一个插件,可以在 WordPress存储库上执行此操作。
答案 2 :(得分:3)
我找到了插件的this源代码,声明它会删除自动生成的WP元标记。你可以试试。
答案 3 :(得分:3)
在 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');
答案 4 :(得分:3)
如果它被硬编码到主题的模板中(即在header.php中),那么你必须手动删除它!
否则,请使用此完整解决方案删除所有版本标记:
// ============ removing inbuilt WP meta-tag =========== 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');
}
//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 '';}
// ========================================================== //
答案 5 :(得分:2)
我最近遇到了这个问题,为了客户端的安全性和垃圾邮件原因,我不得不删除元标记。我能够删除Wordpress的元生成器,但主题使用woo框架,所以使用
remove_action('wp_head', 'wp_generator');
还不够。要删除
<meta name="generator" content="Woo Framework Version x.x.x" />
以及您的主题生成的任何元生成器标记只需将此行添加到模板函数的末尾.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()
函数应该在那里。通常它位于主题源中的includes文件夹下。
答案 6 :(得分:1)
以下代码删除了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');
答案 7 :(得分:1)
这是将删除WP meta和版本删除的插件: cpprefence
答案 8 :(得分:0)
如果您制作了ouw自定义WordPress主题,则meta中的生成器将没有问题,就像我在samll示例中所做的那样。如果您不像某些自定义函数那样声明它,则将没有生成器。我尝试控制主题like here的所有JS脚本和样式。 如果我有插件样式,还需要更多工作。
但是,如果您使用免费主题,是的,在100%中将有生成器。 因此,添加File Function.php 1:http://sierra-group.in.ua/start-legkogo-rezhima-preprocesornoj-sborki-vashih-fajlov-stilej-i-skriptov.html/#custom-register-styles-sctiprs
template <class T, std::size_t N>
auto operator()(std::array<T, N> const &) const; // Only `std::array` please
答案 9 :(得分:0)
这个是由谷歌找到的站点工具包,但可以修改任何内容。感谢this article和他的plugin。
add_action('get_header',function (){
ob_start(function ($o) {
return preg_replace('/\n?<.*?content="Site Kit by Google.*?>/mi','',$o);
});
});
add_action('wp_head',function (){
ob_end_flush();
}, 992);