
Auto Post Thumbnail のカスタマイズの 2 回目です。Auto Post Thumbnail は goryugo.com さんのページなど多数のページで紹介されている人気のプラグインです。
標準では投稿の中の一番最初の画像が自動的にサムネイルに採用されます。投稿の中にアフィリエイト商品の画像を配置している場合、アフィリエイト提供の画像が選択されてしまう場合があるのでデザイン的にも画像の権利面でも困る場合があります。
これを解決するために、特定の文字列が URL に含まれる画像はサムネイル画像の選択対象にならないように少しカスタマイズをしてみます。今回も対象となるバージョンは Auto Post Thumbnail 3.2.3 です。
特定の文字列が含まれる場合だけ対象とする場合は preg_match_all
の正規表現を変更しても出来ますが、今回は複数の条件で除外したいので PHP コードで処理します。除外文字列の工夫次第ではアフィリエイト画像の回避以外にも使用できると思います。
前回と同じ auto-post-thumbnail.php
を編集します。apt_generate_post_thumb
関数が定義されている行を探します。288 行目あたりにあると思います。
288 289 |
function apt_generate_post_thumb($matches, $key, $post_content, $post_id) { |
となっている関数の先頭の箇所に
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 |
function apt_generate_post_thumb($matches, $key, $post_content, $post_id) { // Excludes $matches_count = count($matches); for ($i = $matches_count - 1; 0 < $i; $i--) { foreach (array('amazon', 'rakuten') as $exclude_url) { if (strpos($matches[$i][$key], $exclude_url)) { array_splice($matches, $i, 1); break; } } } if (!isset($matches[1])) { return null; } |
のように追加します。
上記の例では URL に “amazon” または “rakuten” を含む画像は選択されません。3 個以上を指定したい場合は array('amazon', 'rakuten', 'yahoo')
となります。
実は少し手抜きをしています。Auto Post Thumbnail は対象の画像を選択した後で $matchesTitle
という別の配列に画像のタイトルを取得しているのですが、そちらはスキップ処理をしないのでタイトルは最初の画像のものが設定されます。これを修正するのであれば、プラグインの構造を見直した方が綺麗なので割愛しています。
WordPress のプラグインは豊富に揃っていて本当に便利です。

One thought on “プラグインカスタマイズ 2”