我的客户的目标网页显示了他们的博客。您在网站上看到的第一张图片是他们最新帖子中的第一张图片。默认情况下,它们的图像始终链接到图像文件。我找到了一个解决方案,将默认值更改为无链接,但对于过去的帖子,这不是一个好的解决方法。
我发现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;
}
这基本上只是删除了图像周围的链接。
我想知道如何而不是完全删除链接,链接到单个帖子页面?我认为这将是一个更好的解决方案,因为我认为很多人可能会点击第一张图片,认为它会将它们带到单个帖子页面。
有没有办法通过某种方式修改上面的代码来做到这一点?
答案 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)
的整个内容。