给WordPress新站改模板调用分类缩略图时遇到了一个问题, 有个模块要调用缩略图显示,如下图:

WordPress获取缩略图thumbnail调取最佳策略实践-钻芒博客

但是在如何获取分类文章循环输出头疼了一天之后,循环出来之后又为缩略图调取方式头疼。最开始的策略(别人写好策略)的直接获取文章的特色图片,而我因为模板的原因,基本上习惯了不特殊设置特色图片,因为Grace可以自动获取第一张图片做特色图 WordPress获取缩略图thumbnail调取最佳策略实践-钻芒博客 。所以这种方法调用。图基本都是挂掉的。好了不废话了,进入今天的正题。

WordPress获取缩略图thumbnail调取最佳策略实践


首先优先级第一肯定是文章特色图片,如果没有设置特色图片,那么就调取文章里第一张图片来当缩略图,如果文章内也没有图的话,就直接调用主题设置好的默认缩略图,这样在各种场景都能有图可用。

画了一张思维导图,简单明了。

WordPress获取缩略图thumbnail调取最佳策略实践-钻芒博客

参考代码:

代码参考下边的文章:

下边是我的。需要的拿走。细节可以自己调整。

使用方法:

把下面代码放到你主题的functions.php

然后在需要调用的地方调用 dm_the_thumbnail() 即可

调用实例:

<img  src="<?php dm_the_thumbnail() ?>"  />
WordPress获取缩略图thumbnail调取最佳策略实践-钻芒博客

functions.php代码

/*  
  
* WordPress获取缩略图thumbnail调取最佳策略实践
  文章:https://www.zmki.cn/5288.html
  项目基于:https://www.cnblogs.com/bojuetech/p/4891470.html
  转载请不要删除此段,不完整转载误人误己!
  钻芒博客:www.zmki.cn (这段可以删233)
*/ 
// 缩略图开始

 if ( has_post_thumbnail() )  
    the_post_thumbnail( 'thumbnail' );

   
function dm_the_thumbnail() {  
   
    global $post;  
   
    // 判断该文章是否设置的缩略图,如果有则直接显示  
   
    if ( has_post_thumbnail() ) {  
   
        echo the_post_thumbnail();//这里直接输出特色图片
   
    } else { //如果文章没有设置缩略图,则查找文章内是否包含图片  
   
        $content = $post->post_content;  
   
        preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);  
   
        $n = count($strResult[1]);  
   
        if($n > 0){ // 如果文章内包含有图片,就用第一张图片做为缩略图  
   
            echo $strResult[1][0] ; 
   
        }else { // 如果文章内没有图片,则用默认的图片。  
   
           echo  get_stylesheet_directory_uri() . '/img/thumb.png';  //具体路径根据自己调整
   
        }  
   
    }  
   
}  

// 缩略图结束