画像のSEO対策で必要な「ALTタグ」。画像が表示さないときの代替テキストになったり、検索エンジンが画像の内容を理解するために重要な要素です。
記事内にいくつも画像がある場合、1つ1つALTタグを設定するのが面倒なときがあります。
そんなときのために、ALTタグに投稿タイトルを自動で設定するPHPをChatGPTに考えてもらいました。
altが未設定の場合に、自動で記事タイトルに設定する
/*==================================
記事内の画像にaltが未設定の場合に自動で記事タイトルをaltに設定
分類:新規処理
参考:ChatGPT
==================================*/
function add_alt_to_images($content) {
// 現在の投稿タイトルを取得
if (is_singular() && in_the_loop() && is_main_query()) {
global $post;
$post_title = esc_attr($post->post_title);
// 画像タグを正規表現で検索し、alt属性が空または存在しない場合に追加
$content = preg_replace_callback(
'/<img([^>]*?)>/i',
function ($matches) use ($post_title) {
$img_tag = $matches[0];
$attributes = $matches[1];
// alt属性を確認
if (!preg_match('/alt=["\']([^"\']*)["\']/', $attributes)) {
// alt属性が存在しない場合、追加
$img_tag = str_replace('<img', '<img alt="' . $post_title . '"', $img_tag);
} elseif (preg_match('/alt=["\']\s*["\']/', $attributes)) {
// alt属性が空の場合、記事タイトルを設定
$img_tag = preg_replace('/alt=["\']\s*["\']/', 'alt="' . $post_title . '"', $img_tag);
}
return $img_tag;
},
$content
);
}
return $content;
}
add_filter('the_content', 'add_alt_to_images');
※上記コードはChatGPTによって出力されたものです。
フィルタフック「the_content」で本文を出力する前に処理が行われます。
画像のように、altタグに記事タイトルが設定されれば完了です。
コード使用の注意点
紹介したコードは、あくまで本文出力に関わる「the_content」がフィルタフックとなっています。
そのため、本文以外の画像…例えば、記事一覧ページや関連記事のアイキャッチには反映されません。
ぬかりなくaltを生成したいのであれば、フィルタフックを追加するか、functions.phpではなくテーマのPHPを編集する必要があります。
あくまで簡易的な処置としてご利用ください。
アフィリエイトサイト運営時での注意点
アフィリエイトサイトのタグの種類によっては、計測用として<img>タグが使われている場合があります。
上記のコードはaltがついていない<img>タグに処理を行うので、アフィリエイトコードに改変を加えてしまうおそれがあります。
そのため、アフィリエイトやアドセンス関連のサイトは上記のコードを使わないことをおすすめします。