这是一篇关于此https://css-tricks.com/snippets/wordpress/get-the-first-image-from-a-post/
的好文章但在文章中解释了如何从内容中捕获第一张图片
$output = preg_match_all('https://cdn.css-tricks.com/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
有没有办法检查自定义字段而不是内容?
因为我不使用the_content();
但是我正在使用
$photo_gallery = get_post_meta($post->ID,'my_custom_field', true);
echo $photo_gallery
所以我的问题是如何捕捉$ photo_gallery中的第一张图片
下面是一个尝试,但没有工作
function catch_that_image() {
global $post;
$first_img = '';
ob_start();
ob_end_clean();
$custom_content = get_post_meta($post->ID,'my_custom_field', false);
$output = preg_match_all('/[\w\-]+\.(jpg|png|gif|jpeg)/', $custom_content, $matches);
$first_img = $matches[1][0];
if(empty($first_img)) {
$first_img = get_template_directory_uri() . '/css/images/noimage.png';
}
return $first_img;
}
我将preg_match更改为/[\w\-]+\.(jpg|png|gif|jpeg)/
,因为我在自定义内容中将图片作为网址,但我看到了noimage.png。仍然没有工作
我应该使用全局$ wpdb而不是全局$ post吗?
答案 0 :(得分:0)
据我所知,您有多个图像存储为自定义字段(post meta),名称为“my_custom_field”,对吗?
$photo_gallery = get_post_meta($post->ID,'my_custom_field', true);
true
表示返回输入的最后一个值。如果您将其更改为false
,您将获得所有图像,这样您就可以获得第一个图像:
$photo_gallery = get_post_meta($post->ID,'my_custom_field', false);
$first_photo = $photo_gallery[0];
答案 1 :(得分:0)
您是否尝试使用$photo_gallery
进行更改,
在
$output = preg_match_all('https://yourdomain.com/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $photo_gallery, $matches);
您可以调试print_r($photo_gallery);
,看看您的$photo_gallery
是否是您想要的内容。