与the_post_thumbnail直接输出不同,get开头的函数,包括但不限于get_the_post_thumbnail,往往会返回一些值。在需要对这些值进行操作,比如转存或修改时,我们需要使用get系的函数。
<?php echo get_the_post_thumbnail( $post_id, $size, $attr ); ?>
因为页面中逐个判断缩略图,当博客数量较多的时候,感觉循环判断挺浪费资源的。所以想在文章修改或保存之后直接将缩略图存入自定义的meta中。
function tbs_meta($post_id,$post){
if( has_post_thumbnail($post_id) ){
$define_attr = array(
'class' => '',
'alt'=> '',
'title' => '',
);
update_post_meta($post_id,'test',get_the_post_thumbnail($post_id,thumbnail));
return;
}
ob_start();
ob_end_clean();
preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
update_post_meta($post_id,'test',$matches[0][0]);
}
add_action( 'save_post', 'tbs_meta',10,2 );
以上代码会在每次保存文章时修改自定义字段的信息,这样在实际呈现过程中就可以不必去判断用哪一张图了。自定义test字段实际保存下来的代码如下:
<img width="150" height="150" src="https://blog.abddb.com/wp-content/uploads/2023/06/OIP-C-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" alt="OIP-C" />
如果不希望有过多的类与其他信息,也可以考虑用另一个函数:
“get_the_post_thumbnail_url()”,该函数仅需要提供id以及图片尺寸,返回对应尺寸图片的实际地址。
get_the_post_thumbnail_url($post_id,thumbnail)
上述函数实际返回的值如下:
https://blog.abddb.com/wp-content/uploads/2023/06/OIP-C-150x150.jpg