今回はワードプレスのアイキャッチです。記事内はじめの画像を取ってくる方法は結構出回っているので、リンク先の画像を撮ってくる方法をプラスしたやり方になります。
記事内はじめの画像を取得する方法は結構ありますが、よくよく探したらあったかもしれませんがリンク先の画像を取ってくる方法がなかったので自作しました。とはいっても単純に条件をつけただけなのです。
一応1番目じゃなくて2番目の画像を表示させたい場合などにも設定できるようにしてあります。
単純にfunctions.phpに以下の関数をいれます。取得したい画像の位置に2とすれば2番目の画像を撮ってくれます。
functions.php
function get_the_image() {
global $post;
$get_img = '';
// 取得したい画像の位置
$number = 1;
$pattern1 ='/<a href=[\'"]([^\'"]+.(jpg|jpeg|gif|png|svg))[\'"]>/i';
$pattern2 ='/<img.*src=[\'"]([^\'"]+)[\'"].*>/i';
// リンク先画像があるかどうか
$match_num = preg_match_all($pattern1, $post->post_content, $matches);
if($match_num === 0){
// リンク先画像がない場合は最初の画像を取得
preg_match_all($pattern2, $post->post_content, $matches);
}
$get_img = $matches[1][$number - 1];
if(empty($get_img)){
// 記事内に画像がない場合のデフォルト画像を設定
// デフォルト画像を非表示にしたい場合は下にある$get_img = false;の左側の//を消したらよいです。
$get_img = get_template_directory_uri()."/img/default.jpg";
// $get_img = false;
}
if($get_img === false){
return false;
} else{
// 画像表示設定
$alt = get_the_title();
$img = '<img src="'.$get_img.'" alt="'.$alt.'" class="attachment-post-thumbnail size-post-thumbnail wp-post-image">';
return $img;
}
}
あとはアイキャッチを表示させたい場所にて以下の通り記載するだけです。
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(); ?>
<?php else : ?>
<?php echo get_the_image(); ?>
<?php endif ; ?>
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。