Web制作コラム

OGPとは|SNSで共有されたときの見え方を決める設定

用語・技術解説

リンクを貼ったときに出る画像とタイトルを決める設定です。最低限入れるタグと、反映されないときの対処をまとめます。

OGP とは、SNSやチャットにURLを貼ったときに表示される画像・タイトル・説明文を指定するための記述です。指定していないと、本文の一部が勝手に抜き出されたり、画像が出ずにURLだけが並んだりします。

最低限入れる4つ

head の中

<meta property="og:title" content="ページのタイトル">
<meta property="og:description" content="1〜2文の説明">
<meta property="og:image" content="https://example.com/img/og.png">
<meta property="og:url" content="https://example.com/page/">

この4つが入っていれば、どのSNSでも最低限の見え方になります。

OGPタグの一覧

使うものはそれほど多くありません。上から順に、入れておく価値が高いものです。

タグ役割扱い書き方の注意
og:titleSNSに出るタイトル必須ページの title と同じで構いません。ただし「|会社名」の繰り返しは削ったほうが読みやすくなります
og:image一緒に出る画像必須1200×630 が基準。必ず絶対URLで書きます。相対パスは読まれません
og:urlそのページの正規URL必須canonical と同じURLにします。末尾スラッシュの有無まで揃えます
og:description説明文推奨1〜2文。meta description と同じで構いません
og:typeページの種類推奨トップや一覧は website、記事は article
og:site_nameサイト名推奨サイト全体で同じ値
og:locale言語と地域任意日本語なら ja_JP
og:image:width / og:image:height画像の寸法任意初回の読み込みで枠がずれるのを防げます
og:image:alt画像の説明任意画像が表示できないときに読まれます
article:published_time公開日時任意og:type が article のときだけ。ISO 8601 で書きます

※ 横にスクロールできます

og: で始まるものは property、twitter: で始まるものは name で書きます。ここを取り違えると読まれません。コピーして増やすときに混ざりやすい部分です。

Twitterカード(Xでの見え方)

X(旧Twitter)は独自の twitter: タグを持っていますが、無い場合は OGP を読みます。そのため、OGPを正しく入れてあれば、追加で書くのは1行だけです。

head の中

<meta name="twitter:card" content="summary_large_image">

この1行で、画像が大きく出る形になります。入れない場合は小さな正方形のサムネイルになります。

タグ値・役割必要か
twitter:cardsummary_large_image(画像を大きく) / summary(小さく横に並ぶ)入れる価値あり
twitter:titleタイトル不要。無ければ og:title が使われます
twitter:description説明文不要。無ければ og:description が使われます
twitter:image画像不要。無ければ og:image が使われます
twitter:siteサイトの公式アカウント(@から書く)任意

※ 横にスクロールできます

twitter: と og: の両方を書いた場合、X では twitter: が優先されます。つまり両方書いて内容がずれていると、Xだけ古い文言が出ます。片方に寄せる(OGP + twitter:card だけ)のが管理しやすいです。

まとめて書くとこうなる

head の中

<meta property="og:type" content="article">
<meta property="og:site_name" content="ワプラボ">
<meta property="og:locale" content="ja_JP">
<meta property="og:title" content="OGPとは|SNSで共有されたときの見え方を決める設定">
<meta property="og:description" content="リンクを貼ったときに出る画像とタイトルを決める設定です。">
<meta property="og:url" content="https://wp-coding.jp/column/ogp/">
<meta property="og:image" content="https://wp-coding.jp/img/column/ogp/thumb.webp">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675">
<meta name="twitter:card" content="summary_large_image">

画像の作り方

  • サイズは 1200×630 が基準。これで各SNSに収まります
  • 絶対URLで指定する(相対パスだと読まれません)
  • 文字を入れるなら中央寄りに。端は切られることがあります
  • 文字は大きく。一覧の中では縮小して表示されます

画像が用意できないページのために、サイト共通の既定画像を1枚作っておいてください。何も出ないより、ロゴだけでも出るほうがクリックされます。

ページごとに変える

サイト全体で同じ画像とタイトルになっていると、どの記事を共有しても同じ見た目になり、何のリンクか伝わりません。記事ごとにタイトルと説明文を変え、できれば画像も変えます。

当サイトのコラムでは、記事ごとに内容に合わせた図を自動で作って使っています。記事が増えても手間が増えない作り方です。

WordPressでの出し方

SEO系のプラグインを入れていれば、OGPは自動で出力されています。まずページのソースを表示して、すでに og:title が入っているか確認してください。二重に出すと、どちらが使われるか分からなくなります。

出ていない場合や、記事ごとの画像を自分で組み立てたい場合は functions.php から出します。

functions.php

add_action("wp_head", function () {
    if (is_singular()) {
        $title = get_the_title();
        $desc  = get_the_excerpt();
        $url   = get_permalink();
        $img   = get_the_post_thumbnail_url(null, "full")
            ?: get_template_directory_uri() . "/img/og-default.png";
        $type  = "article";
    } else {
        $title = get_bloginfo("name");
        $desc  = get_bloginfo("description");
        $url   = home_url("/");
        $img   = get_template_directory_uri() . "/img/og-default.png";
        $type  = "website";
    }

    $tags = [
        "og:type"        => $type,
        "og:site_name"   => get_bloginfo("name"),
        "og:locale"      => "ja_JP",
        "og:title"       => $title,
        "og:description" => wp_trim_words($desc, 60, ""),
        "og:url"         => $url,
        "og:image"       => $img,
    ];
    foreach ($tags as $prop => $content) {
        printf(
            '<meta property="%s" content="%s">' . "\n",
            esc_attr($prop),
            esc_attr($content)
        );
    }
    echo '<meta name="twitter:card" content="summary_large_image">' . "\n";
});

アイキャッチが設定されていない記事のために、既定の画像を1枚用意しておくのが要点です。画像が無いと、リンクだけが並んだ見た目になります。

esc_attr を必ず通してください。記事のタイトルに二重引用符が入っていると、タグが途中で閉じて head が壊れます。

直したのに変わらないとき

SNS側が以前の内容を保持しているためです。各社が提供している確認ツールでURLを入れ直すと、読み直されます。

  • Facebook … シェアデバッガー
  • X … ポストカードバリデータ(現在は投稿して確認するのが早い場合もあります)
  • LINE … 再取得の仕組みがないため、画像のファイル名を変えるのが確実です

それでも変わらない場合は、画像のURLが絶対URLになっているか、画像がベーシック認証の内側にないかを確認してください。確認用サイトの画像を指したままになっている例もあります。

公開前のチェック項目に入れておく

OGPは公開後に気づきにくい項目です。一度SNSに流れてしまうと、直しても最初に共有されたものは古い見た目のまま残ります。

当社では納品前に主要ページのOGPを確認し、既定画像もあわせてご用意しています。既存サイトに後から入れる作業だけのご依頼も承っています。

「用語・技術解説」のコラム

この記事と同じカテゴリの記事です。

一覧に戻る

SERVICES

WordPressとECサイトの制作、
まとめてご相談いただけます

WordPress

WordPress制作・構築代行

デザインデータやコーディング済みHTMLを、オリジナルテーマとして構築します。プラグイン開発も対応。

構築基本費用 50,000円

詳しく見る
コーディング

コーディング代行

デザインデータをHTML/CSSに起こします。WordPress化まで通しでも、コーディングだけでも承ります。

1ページ 15,000円〜

詳しく見る
React

Reactコーディング代行

デザインデータをReactのコンポーネントとして実装します。既存アプリへの画面追加・UI改修だけでも承ります。

1ページ 18,000円〜

詳しく見る
Next.js

Next.js制作・コーディング代行

検索エンジンに読まれるHTMLを返せるNext.jsで構築します。静的書き出しでレンタルサーバーでも公開できます。

1ページ 18,000円〜

詳しく見る
EC / WordPress

WelcartでのECサイト構築

WordPress専用のネットショップ構築プラグイン。機能面まで踏み込んだカスタマイズができます。

デザイン制作+構築 一式 120万円〜

詳しく見る
EC / EC-CUBE

EC-CUBEでのECサイト構築

国産オープンソースのECパッケージ。決済・受注・在庫まわりを業務に合わせて作り込めます。

デザイン制作+構築 一式 120万円〜

詳しく見る
EC / ASPカート

ECサイト制作代行

Shopify・MakeShop・カラーミーなどのカートに、オリジナルデザインを組み込みます。

構築基本費用 100,000円

詳しく見る

制作のご相談も承っています

デザインデータと画面数をお知らせいただければ、お見積りと納期をご提示します。