使用过滤器(或 jquery)删除 Wordpress 图像周围的锚元素

Posted

技术标签:

【中文标题】使用过滤器(或 jquery)删除 Wordpress 图像周围的锚元素【英文标题】:remove anchor element around Wordpress images with filter (or jquery) 【发布时间】:2011-04-19 06:58:36 【问题描述】:

我有一个这样的锚元素:

<a href="/link-to-image/" rel="attachment wp-att-7076"><img src="/uploads/img.jpg"  title=""   class="alignnone size-full wp-image-7076" /></a>

(这是 Wordpress 在帖子中嵌入上传图片的标准方式。)

我想移除图像元素周围的锚点,但保留图像。我只是希望图像显示而不可点击。

这可以通过 Wordpress 中的帖子内容过滤器或在页面加载 javascript 后完成。最好在 Wordpress 中进行过滤。我不知道如何做这两个选项中的任何一个。

【问题讨论】:

【参考方案1】:

找到有用的代码here:

试过了,但导致代码无效。

../your_theme/functions.php 中的代码如下所示:

function remove_anchor($content) 
    // the code for removing the anchor here
    $content =
        preg_replace(
            array('<a(.*?)(wp-att|wp-content\/uploads)[^>]*><img', '</a>'),
            array('<img',''),
            $content
        );
    return $content;


// then use WP's filter/hook system like this:
add_filter('the_content', 'remove_anchor');

【讨论】:

【参考方案2】:

进入你的 WP 主题文件夹,编辑“functions.php”。添加如下代码:

function remove_anchor($data)

    // the code for removing the anchor here

    // (not sure if you need help there, too).  

    // you will work on the $data string using DOM or regex
    // and then return it at the end


    return $data;


// then use WP's filter/hook system like this:
add_filter('the_content', 'remove_anchor');

add_filter 表示每次显示帖子时,都会调用remove_anchor 函数。

jQuery 可能更简单,你只需要识别图像而不是让它们可点击(这是未经测试的)

$(document).ready(function()

    $('#post a.some-class-name').click(function()
    
        return false;
    
);

【讨论】:

你有这个的工作版本吗?很想看到完整的代码。我刚刚将 Blogger 导入 WordPress,并且能够使用插件将外部图像转换为本地副本,但它们仍然包裹在指向 Blogger 的锚点中。还有,这个函数是不是真的更新了数据库,所以运行一次就可以删除了?谢谢!

以上是关于使用过滤器(或 jquery)删除 Wordpress 图像周围的锚元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 JQUERY 过滤 JSON 数据

如何从函数中删除jquery过滤器

jQuery DataTables - 删除标签

使用 Jquery 过滤功能锚定标签和浏览器历史记录

通过EQ过滤删除元素不会从jQuery对象中删除该元素

使用 ASPX、AJAX 控件或 JQuery 的下拉列表过滤器?