wordpress修改缩略图和摘要字数
缩略图要求是,如果文章有图就显示第一张图,如果没图就不显示。
修改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’, ‘ ‘ . ‘[…]’ );
将后面}之前的内容修改为
$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’, ‘ ‘ . ‘[…]’ );
将后面}之前的内容修改为
$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是截取字符串的长度,如果路径文件名比较长就得改大一些。