缩略图要求是,如果文章有图就显示第一张图,如果没图就不显示。

修改wp-content/themes/主题名称/functions.php,加入一个函数,用来返回图片的url

function junzibuqi_get_post_img_url($thumbnail = true) {
global $post;
if (has_post_thumbnail ()) {
$domsxe = simplexml_load_string ( get_the_post_thumbnail () );
$thumbnailsrc = $domsxe->attributes()->src;
return $thumbnailsrc;
}elseif ($thumbnail) {
$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) {
return $strResult [1] [0] ;
} else {
return trailingslashit( get_template_directory_uri() ) . ‘images/thumbnail.png’;
}
}else {

}
}


2021年11月14日补充:
上面代码如果地址有问题,可以试试吧其中preg开头一行换成这个:
preg_match_all ( ‘/<img.*?(?: |\\t|\\r|\\n)?src=(.+?)?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim’, $content, $strResult, PREG_PATTERN_ORDER );

修改wp-includes/formatting.php,查找这一行$excerpt_more = apply_filters( ‘excerpt_more’, ‘ ‘ . ‘[&hellip;]’ );

将后面}之前的内容修改为

$text = wp_trim_words( $text , 150 );
if(substr(junzibuqi_get_post_img_url(true),-13,13)<>”thumbnail.png” )
if(is_home() or is_category() or is_archive() or is_search() )
echo ‘<img src=”‘ . substr(junzibuqi_get_post_img_url(true),26,100) . ‘” alt=”‘ . get_the_title() . ‘” height=”100″ width=”100″ align=”left” hspace=”8″ vspace=”8″/>’;

$text = wp_trim_words( $text , 150 );里面的150是摘要字数,可以修改。

junzibuqi_get_post_img_url(true)的地址是绝对路径https://开头的,比如 img src=”https://retire50blog.wang/wp-content/uploads/2019/01/2019-01-11_145713.png”

http会导致chrome提示连接不安全,必须用https。

substr(junzibuqi_get_post_img_url(true),26,200)就是把域名这部分截掉,<img src会自动补上https的域名。变成 img src=”https://retire50blog.wang/wp-content/uploads/2019/01/2019-01-11_145713.png”

junzibuqi_get_post_img_url这个函数是百度来的,我也搞不明白他怎么写的,反正改一下能用就行了。


2021年11月14日补充:

因为改了wp-includes/formatting.php,而这个文件如果wordpress更新,就会被替换掉,所以需要禁止自动更新

搜索wp-config.php,再下面加一行:

define( ‘AUTOMATIC_UPDATER_DISABLED’, true );


2021年12月29日补充:

修改wp-includes/formatting.php,查找这一行$excerpt_more = apply_filters( ‘excerpt_more’, ‘ ‘ . ‘[&hellip;]’ );

将后面}之前的内容修改为

$text = wp_trim_words( $text , 150 );

if(substr(junzibuqi_get_post_img_url(true),-13,13)<>”thumbnail.png” ) {

if(is_home() or is_category() or is_archive() or is_search() )
echo ‘<img src=”‘ . substr(junzibuqi_get_post_img_url(true),26,150) . ‘” alt=”‘ . get_the_title() . ‘” height=”100″ width=”100″ align=”left” hspace=”8″ vspace=”8″/>’;}

elseif(is_home() or is_category() or is_archive() or is_search() )
{echo ‘<img src=”‘ . junzibuqi_get_post_img_url(true) . ‘” alt=”‘ . get_the_title() . ‘” height=”50″ width=”50″ align=”left” hspace=”8″ vspace=”14″/>’;}

这样,有传图的文章就用第一张图做缩略图,没传图的文章就用默认图片

wp-content/themes/wordstar/images/thumbnail.png

substr(junzibuqi_get_post_img_url(true),26,150)里面的150是截取字符串的长度,如果路径文件名比较长就得改大一些。

有回复请通知我
提醒

0 评论
内联反馈
查看所有评论