如何修改wordpress的the_post_thumbnail函数?

How to modify the the_post_thumbnail function on wordpress?

首先:这可能吗?

我想要一个函数 returns 一个 srcset <img> 标签来使我的 wordpress 布局响应。这对我来说很重要,因为我的 wrapper 是 1400 宽的,这对于宽度超过 1400 @1 或 700 @2 的屏幕来说是好的,但是对于手机来说太宽了,720px 的宽度对于 @2 甚至 @3 屏幕来说已经足够了(因为它们可以变得更锐利,但眼睛不会注意到太多)。

问题是在处理 php 时我不知道要提供哪个缩略图大小...所以我想使用 srcset。为此,我知道我必须在 functions.php 上写点东西。但是我应该做什么以及如何做?我应该修改 the_post_thumbnail() 函数吗?还是我应该创建一个新的?在那种情况下,如何从 post 缩略图的不同大小获取不同的图像名称?

您可以使用 wp wp_get_attachment_image_src() and get_post_thumbnail_id() 函数自行创建 <img> 标签:

global $post;
$url1 = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'thumbnail' );
$url2 = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium');
<img src="<?php echo $url1[0]; ?>" srcset="<?php echo $url2[0]; ?> 500w" alt="alt-text" />

其中 "thumbnail" 和 "medium" 是图像尺寸名称。例如,默认的 WordPress 大小是缩略图、中等、大和完整。您的主题可以声明更多尺寸。

如果您在循环内,则无需声明 de global $post

您可以使用过滤器修改the_post_thumbnail函数。

使用以下过滤器修改 the_post_thumbnail 函数生成的输出。

           add_filter( 'post_thumbnail_html', 'your_function', 10, 6 );