get_the_contentよりアイキャッチ画像を設定する
WordPressのアイキャッチ画像を常に設定したりしない場合でも、記事の中に挿入した画像をアイキャッチとして出したい場合がある。
今、制作しているテンプレートで、その機能が必要となったので作成。
記事の中に挿入した画像のURLを全て配列として抽出するコード。
こいつを元に、出てきたURLをアイキャッチとして設定する。
作成したところ、それなりに使えそうなので掲載しときます。
コード
functionsに記載する。
/*****************************************************************/ /* func名:getContentImageArray() */ /* 目的:指定した文字列(HTML)の中から画像URLを全て抽出する */ /* 引数:第1引数…対象文字列(get_the_content等) */ /* 返値:引数で指定した文字列の中に含まれる画像の全URLの配列 */ /*****************************************************************/ function getContentImageArray($arg = ”){ $ret; $arr = array(); $flg = true; $num = 0; $arr[$num] = preg_replace(‘/\r\n|\r|\n/’, ”, strip_tags($arg, ‘’)); if(strval(strpos($arr[$num], ‘<img’)) != ”){ while($flg){ $arr[$num] = substr($arr[$num], intval(strpos($arr[$num], ‘src="’)) + 5); $arr[$num + 1] = $arr[$num]; $arr[$num] = substr($arr[$num], 0, intval(strpos($arr[$num], ‘"’))); if(strval(strpos($arr[$num + 1], ‘<img’))){ $num++; }else{ $arr[$num + 1] = false; $flg = false; $ret = $arr; } } }else{ $ret = false; } return $ret; }
呼び出し例
テンプレートに記載する。
//ループ $num = 0; $arr = getContentImageArray(get_the_content()); while($arr[$num]){ echo ‘<img src="’.$arr[$num].’" alt="画像" />’; $num++; } //単一 $arr = getContentImageArray(get_the_content()); $arr = $arr[0]; echo ‘<img src="’.$arr.’" alt="画像" />’;
アイキャッチ画像の取得関数はこっち。