我有这两个功能,我在网上找到并根据我的需要进行了编辑。
我要做的是将wordpress帖子的缩略图设置为默认值,以前在函数本身图像中设置,或者嵌入在帖子中的第一个图像。
然而,某处出了点问题……
wptuts_save_thumbnail($post_id) -> 将帖子的缩略图设置为默认值,或者如果尚未设置第一张图片(由帖子的作者...)!
function wptuts_save_thumbnail( $post_id ) {
$post_thumbnail = get_post_meta( $post_id, '_thumbnail_id', true );
if (!wp_is_post_revision($post_id)) { // Verify that the post is not a revision
if (empty($post_thumbnail)) { // Check if Thumbnail does NOT exist!
$firstImg = firstImg($post_id); // Get the first image of a post (if available)
if(!$firstImg){ // if available, update the post thumbnail
update_post_meta( $post_id, '_thumbnail_id', 'link to default image here' );
} else { // else -> set thumbnail to default thumbnail
update_post_meta( $post_id, '_thumbnail_id', $firstImg );
}
}
}
}
firstImg($post _id) -> 用于获取帖子的第一张图片(通过 id)
function firstImg($post_id) {
$post = get_post($post_id);
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches[1][0];
$urlLength = strlen(site_url());
$first_img = substr($first_img, $urlLength);
if(empty($first_img)){
return false;
}
return $first_img;
}
这些函数的唯一问题在于if(!$firstImg) - else
语句。
图像将始终设置为默认值,无论是否在帖子中嵌入图像。
$firstImg
如果存在则确实返回第一张图像,因此问题必须在 2if
的任何一个中:if(empty($first_img))
OR if(!$firstImg)
。
我试图寻找问题的任何线索,但我一无所获。
希望有人可以对这个问题有所了解:)
提前致谢!
附加信息:
- 这两个功能都写在functions.php
我的主题中。
-wptuts_save_thumbnail($post_id)
设置为每次发布新帖子时运行。
- 返回时,$first_img
是图像的相对路径(即 /wp-contents/uploads/img.jpg),或false
.