我正在创建一个Wordpress主题,我想抓住帖子中的第一张图片作为缩略图,用于Facebook的OG元标记。
我尝试使用函数get_the_post_thumbnail()
,但它会生成一个html img
元素。另外,我想在帖子中拍摄第一张图片,而无需在创建帖子时添加精选图片。
这应该很简单,因为已经为每个帖子生成了所有缩略图,我只是没有做对。
答案 0 :(得分:4)
在这里,我为你做了一些功能,你可以挂钩添加/编辑附件事件。
function set_first_as_featured($attachment_ID){
$post_ID = get_post($attachment_ID)->post_parent;
if(!has_post_thumbnail($post_ID)){
set_post_thumbnail($post_ID, $attachment_ID);
}
}
add_action('add_attachment', 'set_first_as_featured');
add_action('edit_attachment', 'set_first_as_featured');
还有很多需要改进的空间,但这个也很有魅力。在每个上传/编辑附件上,功能检查帖子是否已有特色图片。如果没有,则将有问题的图像设置为特色。每个下一张图片都会被忽略(因为帖子已经有特色图片)。
也许有人觉得它很有用(你在我的编码中找到了解决方案,所以...... :))
答案 1 :(得分:2)
我找到了这个解决方案:
$size = 'thumbnail'; // whatever size you want
if ( has_post_thumbnail() ) {
the_post_thumbnail( $size );
} else {
$attachments = get_children( array(
'post_parent' => get_the_ID(),
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
'numberposts' => 1)
);
foreach ( $attachments as $thumb_id => $attachment ) {
echo wp_get_attachment_image($thumb_id, $size);
}
}
答案 2 :(得分:0)
我找到了解决方案:
wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail' )[0];
工作正常。
答案 3 :(得分:0)
将此代码放入主题的functions.php:
中override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension;
}
然后在WordPress循环中添加以下代码:
// make the first image of WordPress post as featured image
function first_image_as_featured() {
global $post, $posts;
$first_img_featured = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img_featured = $matches [1] [0];
if(empty($first_img_featured)){ //Defines a default image
$first_img_featured = "/images/default.jpg";
}
return $first_img_featured;
}
如果未设置特色图像,它将自动将第一张图像作为特色图像。 资料来源:Get The First Image Of WordPress Post As Featured Image
答案 4 :(得分:0)
我尝试了以上解决方案,但没有成功。因此,我构建了一个新的简单解决方案:
function set_first_as_featured($post_id){
$medias = get_attached_media( 'image', $post_id );
if(!has_post_thumbnail($post_id)) {
foreach ($medias as $media) {
set_post_thumbnail($post_id, $media->ID);
break;
}
}
}
add_action('save_post', 'set_first_as_featured');
保存帖子时,此代码将检查其是否有缩略图。如果没有,那么它将把附加到该帖子的第一张图片设置为缩略图。