ちょっと気になって調べたら案外簡単に出来たので、備忘録として書いておこうと思います。
今回行ったのは、特定のクラス(CSS)を加えたイメージタグの抽出方法です。
私が記事を書く時は、必ず頭にイメージを入れています。
(今日のシリーズやニコニコ紹介などは別)
このイメージは以下のように記述しています。
<img src="http://kome-suki.net/・・・" class="entry_thumb" />
他にも画像を入れる時があり、先頭に持ってきた画像(class=”entry_thumb”)だけを抽出したい。
これが出来れば、検索画面や関連記事や最近の記事などでサムネ付きというのが表示できるようになります。
プラグインや他の方法もググったら出てきましたが私的にいまいち合わなく、それらを踏まえていった上でもの凄く簡単に出来ました。
リニューアル後の表示変更を考えていたので、これは覚えておかなくてはいけない方法です。
search.phpなどを開き、記事のループを行っている中に以下のコードを書きます。
<?php
$cnt = get_the_content();
if (substr($cnt, 0, 1) == "<") {
preg_match("/<img(.*?)class=\"entry_thumb\" \/>/", $cnt, $thumb);
echo $thumb[0];
} else {
}
?>
解説
2行目 $cnt に記事内容を代入するんですが、『the_content()』だと記事が全て表示されてしまうので、必ず『get_the_content()』にする。
3行目 記事の1文字目が『<』じゃないと何も無しを返します。
6行目の else を書かないと、『Array』と表示されてしまうので注意。
4行目 PHPの『preg_match』関数で該当するタグ・クラスを書いて、$thumb に代入する。
『”/~~~/”』とダブルクォーテーション・スラッシュで囲むのが一般的らしいので、それ以外のダブルクォーテーション・スラッシュの前には¥(Macはバックスラッシュ)を記述する。
5行目 代入された $thumb[0] を echo ではき出す。
6~7行目 上記の例だと何も書いてませんが、『no image』みたいな画像を書き足してもOK。
画像の大きさを変えたかったら、<div>~~~</div>で囲ってCSSで変えた方が早いかもしれません。
取り合えず私個人用なので、別の方法(a や他のタグ)では試していませんが、応用すれば色々いけると思います。
勿論WordPress以外にも使えると思います。