Wordpress:如何将内联帖子图像链接到单个帖子页面

时间:2015-06-03 16:18:48

标签: php wordpress

我的客户的目标网页显示了他们的博客。您在网站上看到的第一张图片是他们最新帖子中的第一张图片。默认情况下,它们的图像始终链接到图像文件。我找到了一个解决方案,将默认值更改为无链接,但对于过去的帖子,这不是一个好的解决方法。

我发现this code会删除帖子内容中图片的链接:

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;
}

这基本上只是删除了图像周围的链接。

我想知道如何而不是完全删除链接,链接到单个帖子页面?我认为这将是一个更好的解决方案,因为我认为很多人可能会点击第一张图片,认为它会将它们带到单个帖子页面。

有没有办法通过某种方式修改上面的代码来做到这一点?

1 个答案:

答案 0 :(得分:0)

有点hacky但这样的事情应该有效:

add_filter( 'the_content', 'attachment_image_link_remove_filter' );
function attachment_image_link_remove_filter( $content ) {
    global $post;
    $post_permalink = post_permalink($post->ID);
    return preg_replace_callback( '#<a(?:.*?(?:wp-att|wp-content\/uploads)[^>]*)><img[^>]*></a>#i', function( $match ) use ( $post_permalink ) {
        return preg_replace('#href="[^"]+"#', 'href="' . $post_permalink . '"', $match[0]);
    }, $content ); 
}

它使用回调函数,然后用post_permalink href $post (替换->ID)的整个内容。