php技术博客
让天下没有搞不定的bug~

在wp中自动获取文章中的图片

在调试主题的时候,有一个问题一直没解决。那就是自动显示缩略图。当然,我知道你可能想利用wordpress中的自定义字段(custom field)功能,显然,这是可行的。但并不自动,这样的话,我们总需要手动添加custom field。很是麻烦。现在好了,在10 Killer WordPress Hacks这篇文章中,我看到最有用的一个hack将能解决这个问题,自动搜索文章图片,然后,显示。

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>

<?php

$szPostContent = $post->post_content;

$szSearchPattern = ‘~<img [^\>]*\ />~’; // 搜索所有符合的图片

preg_match_all( $szSearchPattern, $szPostContent, $aPics );

$iNumberOfPics = count($aPics[0]); // 检查一下至少有一张图片

if ( $iNumberOfPics > 0 ) {

// 这里是你怎么处理图片的内容

for ( $i=0; $i < $iNumberOfPics ; $i++ ) {

echo $aPics[0][$i];

};

};

endwhile;

endif;

?>

但是,像你知道的,这样的话,如果一篇文章有多个图片的话,都统统会被显示出来。有时我们只需要显示一张,那这个代码就不符合我们的要求了,所以,让我们来小小地修改一下代码:

<?php

$soContent = $post->post_content;

$soImages = ‘~<img [^\>]*\ />~’;

preg_match_all( $soImages, $soContent, $thePics );

$allPics = count($thePics[0]);

switch ( $allPics > 0 ) {

case $allPics = 1:

echo $thePics[0][0]; // 显示文章中的第一张图片

break; // 当图片数量有1个时,不再执行

default:

echo “这里应该显示图片,而不是sofish”; // 这里加入没图片时显示的默认图片

};

?>

像上面说明的,我们用switch语句,而不是if…else if…else这样,来获取我们的一张图片。当检查到一张的时候,代码不再运行。这样也省去了对服务器的请求。

 

 

 

 

赞(0)
未经允许不得转载:PHP技术博客 » 在wp中自动获取文章中的图片