仅当链接为图像时才禁用指向图像的链接

时间:2017-02-09 作者:Tom T.

我正在寻找一个代码来加入我的自定义函数。php,它将仅禁用指向链接到图像(jpg、jpeg、png、gif等)的图像的链接

我使用了此页面提供的代码:remove links from images using functions.php

这是我在自定义函数中插入的代码。php

add_filter( \'the_content\', \'attachment_image_link_remove_filter\' );

function attachment_image_link_remove_filter( $content ) {
$content =
    preg_replace(
        array(\'{<a(.*?)(wp-att|wp-content\\/uploads)[^>]*><img}\',
            \'{ wp-image-[0-9]*" /></a>}\'),
        array(\'<img\',\'" />\'),
        $content
    );
return $content;
}
但它过于健壮,并且禁用了围绕图像的每个链接。我仍然想要指向页面、帖子、PDF、文档的链接。

你们谁能帮忙吗?也许可以修改上面的代码来识别图像扩展,而只禁用它们?

谢谢你的好意。

1 个回复
最合适的回答,由SO网友:Ismail 整理而成

我不是正则表达式方面的专业人士,但这应该能够捕获href 指向图像文件的属性链接((png|jpg|gif|jpeg|bmp) 可以随意添加/删除扩展):

add_filter(\'the_content\', function($c){
    return preg_replace_callback("#<\\s*?a\\b[^>]*>(.*?)</a\\b[^>]*>#s", function($m){
        $tpl = $m[0];
        $cnt = isset($m[1]) ? $m[1] : null;

        if ( preg_match(\'/<a(.*?)?href=[\\\'"]?.+\\.(png|jpg|gif|jpeg|bmp)[\\\'"]?(.*?)?><\\/a>/i\', str_replace($cnt, \'\', $tpl)) ) {
            return $cnt;
        } else {
            return $tpl;
        }
    }, $c);
});
我在本地测试了它,它正在工作,如果有帮助,请告诉我。

相关推荐

Convert emoji to images

我有一个私有插件,可以导出所有没有“主题化”的帖子,所以输出的只是内容的html(帖子主题为H1,日期/时间为H2)。如果帖子包含表情符号,它会正确显示在主题页面上。但是如果我将HTML输出保存到一个文件中,表情符号会显示为&eth;&#159;&#153;&#129; 这些是UniCode字符(我想),我需要生成的HTML页面将表情符号显示为图形图像。创建HTML输出的代码使用标准WP\\u查询对象,然后在have\\u posts循环中输出内容:$thest