让wordpress首页文章列表自动调用文章第一张图片作为缩略图和wordpress DUX 主页列表调用文章第一张图作为缩略图特色图片

不同模板有不同的解决方法,下面针对hmj-blog和DUX主题首页列表调用文章第一张图作为特色图片方法
DUX解决办法在底部。

wordpress有个功能,可以设置一篇文章的特色图像,这样在首页及各个列表页就可以利用the_post_thumbnail()这个函数来调用该图片的缩略图,而事实上我们在发博文的时候经常懒得多此一举(设置特色图像)。。其实懒人自有懒人的办法,下面这个小函数就可以实现自动调用文章的图片来作为缩略图而无需再设置特色图像(当然,如果一篇文章含有好几个图片又不想第一张图片作为缩略图的话,还是得手工设置一下)。
在外观–编辑里头找到functions.php,加入以下这个函数:

function emtx_auto_thumbnail($pID,$thumb='thumbnail') {   
    $blogimg = FALSE;   
    if (has_post_thumbnail()) {// 判断该文章是否已经设置了“特色图像”,如果有则直接显示该特色图像的缩略图  
        $blogimg = wp_get_attachment_image_src(get_post_thumbnail_id($pID),$thumb);  
        $blogimg = $blogimg[0];  
    } elseif ($postimages = get_children("post_parent=$pID&post_type=attachment&post_mime_type=image&numberposts=0")) {  
        //如果文章没有设置特色图像,则查找文章内是否有上传图片  
        foreach($postimages as $postimage) {  
            $blogimg = wp_get_attachment_image_src($postimage->ID, $thumb);  
            $blogimg = $blogimg[0];  
        }  
    } elseif (preg_match('/<img [^>]*src=["|\']([^"|\']+)/i', get_the_content(), $match) != FALSE) {  
        $blogimg = $match[1];  
    }   
    if($blogimg) {   
        $blogimg = '<a href="'. get_permalink().'"><img src="'.$blogimg.'" alt="'.get_the_title().'"  class="alignleft wp-post-image"  /></a>';  
    }  
    return $blogimg;  
}  

然后在相应的模板文件里面调用缩略图的地方做个修改,把原来调用the_post_thumbnail的地方按照实际需求改为诸如下面这样的代码即可(本模板是:template-all.php):

<?php if(emtx_auto_thumbnail($post->ID) ) {   
  echo emtx_auto_thumbnail($post->ID);  
} ?>  

DUX 大秀主题首页列表自动调用文章第一张图作为缩略图特色图片的解决办法:
找到控制缩略图的函数文件:functions-theme.php

在这个文件中一个函数 _get_post_thumbnail 并替换为下面的代码:

function _get_post_thumbnail($size = 'thumbnail', $class = 'thumb') {  
    global $post;  
    $html = '';  
    if (has_post_thumbnail()) {  
   
        /*$domsxe = simplexml_load_string(get_the_post_thumbnail()); 
        $src = $domsxe->attributes()->src; 
  
        $src_array = wp_get_attachment_image_src(_get_attachment_id_from_src($src), $size); 
        $html = sprintf('<img data-src="%s" class="%s"/>', $src_array[0], $class);*/  
   
        $domsxe = get_the_post_thumbnail();  
        // print_r($domsxe);  
        preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $domsxe, $strResult, PREG_PATTERN_ORDER);  
        $images = $strResult[1];  
        foreach($images as $src){  
            $html = sprintf('<img data-src="%s" class="thumb">', $src);  
            break;  
        }  
   
    }else {  
        $post_thumbnail_src = '';  
        ob_start();  
    ob_end_clean();  
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); 
    $post_thumbnail_src = $matches [1] [0];   //获取该图片 src 
    if(empty($post_thumbnail_src)){ 
        $random = mt_rand(1, 10); 
        $post_thumbnail_src = get_bloginfo('template_url').'/img/pic/'.$random.'.jpg'; 
        } 
        $html = sprintf('<img data-src="%s" class="thumb">', $post_thumbnail_src);  
    }  
    return $html;  
}  

覆盖同名函数,然后添加图片(命名为1-10).jpg/img/pic/文件夹下即可在没有图片的时候随机调用其中一张。

参考文章:
让wordpress文章列表页自动调用文章缩略图
http://www.phpabc.cn/rang-wordpress-wen-zhang-lie-biao-ye-zi-dong-diao-yong-wen-zhang-suo-lve-tu.html

wordpress DUX主图 文章缩略图不显示
http://www.lovean.net/?id=177

Dux主题修复首页缩略图不显示bug
http://www.dedewp.com/2568.html


 继续浏览关于 技术WordPress 的文章

 本文最后更新于 2019/06/22 17:02:07,可能因经年累月而与现状有所差异

 引用转载请注明:icret > 教程 > 让wordpress首页文章列表自动调用文章第一张图片作为缩略图和wordpress DUX 主页列表调用文章第一张图作为缩略图特色图片