1.君子不器版
首先判断文章内是否设置了特色图像,如果有则输出特色图像的缩略图,因为如果你设置了特色图像,那么肯定是想要展示这一张图片,所以这个应该排在第一位。
如果文章中没有特色图像,那么就判断文章中是否有图片(外链图片也一样),如果有则输出获取到的第一张图片作为文章的缩略图。
如果文章中连图片都没有,则输出一张提前设置好的图片或者不输出。
复制下面的代码,然后将该代码放入你当前主题的模版函数(functions.php)文件中保存即可。
#输出缩略图
function junzibuqi_com_get_img() {
global $post;
if (has_post_thumbnail ()) {
//如果存在缩略图
$domsxe = simplexml_load_string ( get_the_post_thumbnail () );
$thumbnailsrc = $domsxe->attributes()->src;
echo "<a href=\"" . get_permalink() . "\">" ;
echo '<img data-src="' . $thumbnailsrc . '" class="thumb">';
echo '</a>';
} 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 "<a href=\"" . get_permalink() . "\">" ;
echo '<img src="' . $strResult [1] [0] . '" class="thumb">';
echo '</a>';
} else {
//如果文章没有图片则读取默认图片
echo "<a class=\"focus\" href=\"" . get_permalink() . "\">" ;
echo '<img src="' . get_stylesheet_directory_uri() . '"/img/thumbnail.png" referrerpolicy="no-referrer" class="thumb">';
echo '</a>';
}
}
}
调用方式
请复制下面的调用代码,放在你想要显示缩略图的位置即可
<?php junzibuqi_com_get_img();?>
2.水景一页版
将下面的函数放到主题的 functions.php 文件中(如果没有就自己创建一个),然后在需要的时候调用这个函数来获得相应图片的 url 地址。在调用该函数的时候记得将文章的 $id 传递过去。
function catch_the_image( $id ) {
// global $post, $posts;
$first_img = '';
// 如果设置了缩略图
$post_thumbnail_id = get_post_thumbnail_id( $id );
if ( $post_thumbnail_id ) {
$output = wp_get_attachment_image_src( $post_thumbnail_id, 'large' );
$first_img = $output[0];
}
else { // 没有缩略图,查找文章中的第一幅图片
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ // 既没有缩略图,文中也没有图,设置一幅默认的图片
$first_img = "https://yourdomain.tld/images/default.jpg";
}
}
return $first_img;
}
该函数返回的是图片的 url 地址。
在需要显示图片的地方输出图片:
<?php echo catch_that_image() ?>
3.暗淡的黑版
方法1.无视任何设置,直接获取文章中第一张图片并显示;如果文章无图片,获取自定义图片并显示。
①将以下代码粘贴到functions.php文件中。
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
//获取文章中第一张图片的路径并输出
$first_img = $matches [1] [0];
//如果文章无图片,获取自定义图片
if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
//请自行设置一张default.jpg图片
}
return $first_img;
}
②在需要显示图片的地方输出图片:
<?php echo catch_that_image() ?>
方法2.如果我们手动设置了特色图像,而且文章中又有图片,那该如何显示呢?我们自此可以使用逻辑判断,给他们一个优先条件。此方法网上代码重复太多,已经不知道原创是谁了…
function catch_that_image( $id ) {
// global $post, $posts;
$first_img = '';
// 如果设置了缩略图
$post_thumbnail_id = get_post_thumbnail_id( $id );
if ( $post_thumbnail_id ) {
$output = wp_get_attachment_image_src( $post_thumbnail_id, 'large' );
$first_img = $output[0];
}
else { // 没有缩略图,查找文章中的第一幅图片
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ // 既没有缩略图,文中也没有图,设置一幅默认的图片
$first_img = "/images/default.jpg";
}
}
return $first_img;
}
4.wp酷版
替换原本特色图像功能,设置外链缩略图
Functions.php:
add_theme_support( 'post-thumbnails' );
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$popimg=get_option( 'mao10_popimg');
$first_img = "$popimg";
}
return $first_img;
}
function mmimg($postID) {
$cti = catch_that_image();
$showimg = $cti;
has_post_thumbnail();
if ( has_post_thumbnail() ) {
$thumbnail_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'thumbnail');
$shareimg = $thumbnail_image_url[0];
} else {
$shareimg = $showimg;
};
return $shareimg;
}
调用方式:
<img src="<?php echo mmimg(get_the_ID()); ?>" alt="" />
5,云落版
自动选取文字的第一个图片,然后设为WordPress自动添加特色图片
function autoset_featured() {
global $post;
$already_has_thumb = has_post_thumbnail($post->ID);
if (!$already_has_thumb) {
$attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
if ($attached_image) {
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
}
}
} //end function
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');
使用方法
将代码添加进function.php即可,注意要在?>之前
看了下 基本思路都是一样的,照着做就行。


