doudonn WEB制作やサーバーの話とかいろいろ

【PHP imagewebp】ワードプレスのアイキャッチ画像をwebpに変換する方法を雑に解説

doudonn 更新日:
【PHP imagewebp】ワードプレスのアイキャッチ画像をwebpに変換する方法を雑に解説

アイキャッチ画像だけでもwebpに

記事中の画像までwebpにするとファイル数が増えすぎる。
ということで自分はアイキャッチ画像だけやっています。

プラグインなんて使わないやり方を解説。

1、ワードプレスのアイキャッチ画像のwebp変換について

ワードプレスのアイキャッチ画像のwebp変換について

合計で5サイズあるので、それぞれwebpに変換する。

もちろん、ここは自分が使うサイズだけ変換すればいい。
使う分だけ変換すればファイル数も抑えられてヨシ。
そもそも使わないならjpg生成すらしないよう設定しよう。

「eyecatch.jpg.webp」という名前にする方法もありますが、
なんか気持ち悪いので自分はやりません。
ただ、その方が扱いやすいのでおすすめです。

2、アイキャッチ画像のwebp作成方法

※自分の場合です。$eyecatch_passなどは変更ください。
※ソースの意味がわかる人だけ使用ください。

<?php
//webpに変換したいサイズを指定
$imgsizes = array('full','large','medium_large','medium','thumbnail');

$args = array(
'posts_per_page' => -1
);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();

$postid = get_the_ID(); 
$thumbid = get_post_thumbnail_id( $postid );

foreach ( $imgsizes as $imgsize ) {

$eyecatch = wp_get_attachment_image_src($thumbid, $imgsize);
$eyecatch_pass = str_replace("https://doudonn.com/", "/var/www/html/doudonn.com/", $eyecatch[0]);

if(stripos($eyecatch[0],".jpg") !== false){
$eyecatch_pass_webp = str_replace(".jpg", ".webp", $eyecatch_pass);
}elseif(stripos($eyecatch[0],".png") !== false){
$eyecatch_pass_webp = str_replace(".png", ".webp", $eyecatch_pass);
}else{
continue;
}

if (file_exists($eyecatch_pass_webp)) {
continue;
}

if(stripos($eyecatch[0],".jpg") !== false){
$img = imagecreatefromjpeg($eyecatch_pass);
}elseif(stripos($eyecatch[0],".png") !== false){
$img = imagecreatefrompng($eyecatch_pass);
}

imagewebp($img, $eyecatch_pass_webp,70);
imagedestroy($img);

}

endwhile;
endif;
?>

<ポイント>

・最初に配列で変換するサイズを指定。

・「記事」だけ対象(固定ページは非対象)

・「$eyecatch_pass」の置換はURLを絶対パスに変換しています

・ファイル名に「.jpg」「.png」がついているものが対象
(「img.jpg.png」など変なファイル名は非対応)

・すでにwebpがある場合はスキップ

・「imagewebp関数」の数字は品質レベルです

3、注意点

失敗すると削除が面倒くさいので、意味がわかる人だけ使ってください。

このサンプルを見れば自分のやりたいよう修正できるはずです。
自分は自分の環境に合わせて一番簡単なよう作っています。
わざわざファイルタイプを関数を使って識別する必要が無い。

記事作成ごとにwebpを作ることになるので、作成済みの場合のスキップは大事。
ループの「continue」があるので記述がスマートではないです。

キーとなるのは「imagewebp関数」。
詳細は公式の解説ページを見てください。

imagewebp - Manual - PHP

ワードプレスの関連記事

記事一覧はこちら:ワードプレス

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

プロフィール
お知らせ

2022年11月30日に全記事削除しました。
無駄にページ表示速度にこだわってます。

役立ちサイト
wiki

プライバシーポリシー・広告について


© 2022-2024 doudonn All Rights Reserved.