我一直在寻找一种方法来阻止人们在评论中发布外部图像,我
<img alt="my photo" src="http://example.co.uk/pic.jpg" />
并显示图像,无需所有者的许可。这在核心的某个地方是硬编码的,但我找不到一种方法来消除这种行为。谢谢我一直在寻找一种方法来阻止人们在评论中发布外部图像,我
<img alt="my photo" src="http://example.co.uk/pic.jpg" />
并显示图像,无需所有者的许可。这在核心的某个地方是硬编码的,但我找不到一种方法来消除这种行为。谢谢您可以很容易地剥离显示的图像。
add_filter(
\'comment_text\',
function($comment) {
$allowed_html = array(
\'a\' => array(
\'href\' => array(),
\'title\' => array()
),
\'br\' => array(),
\'em\' => array(),
\'strong\' => array()
);
return wp_kses($comment, $allowed_html);
}
);
这将删除所提供数组中未列出的所有标记。要专门剥离带有外部源链接的图像,您需要更复杂的东西。function strip_external_images($match) {
if (empty($match)) return;
$site = parse_url(get_site_url());
$parsed = parse_url($match[1]);
if (empty($parsed[\'host\']) || $site[\'host\'] !== $parsed[\'host\']) {
return \'\';
} else {
return $match[0];
}
}
add_filter(
\'comment_text\',
function($comment) {
$pattern = \'|<img.*src="([^"]*)"[^>]+>|\';
return preg_replace_callback($pattern,\'strip_external_images\',$comment);
}
);
这应该允许用户将图像添加到评论中,但只能将图像托管在与站点本身相同的域中。我在您的第一个函数中添加了iframe,以允许从youtube和instagram等网站进行嵌入。我想这是一种安全的方式?现在它按预期工作。我不确定你的第二个函数完成了什么,不管有没有它,最终结果都是一样的。也许我对我最初的问题中想要实现的目标还不够清楚?非常感谢你。我会接受你的回答。
add_filter(
\'comment_text\',
function($comment) {
$allowed_html = array(
\'a\' => array(
\'href\' => array(),
\'title\' => array()
),
\'br\' => array(),
\'em\' => array(),
\'strong\' => array(),
\'iframe\' => array(
\'src\' => array(),
\'height\' => array(),
\'width\' => array()
),
);
return wp_kses($comment, $allowed_html);
}
);
为什么所有wordpress评论都会成为垃圾邮件?我没有安装任何插件来保护博客免受评论和trackback垃圾邮件的影响。请帮我找到一个解决方案。