2026年10月16日

2026年10月16日

WooCommerceの商品ページにSNSシェアボタンを追加する方法(プラグインとコード)

WooCommerceの商品ページにX・Facebook・LINEなどのシェアボタンを付けるには、シェア系プラグインで商品ページだけに表示する方法と、WooCommerceが用意している woocommerce_share フックにリンク型のボタンを出す方法の2通りがあります。この記事では、両方の手順に加えて、シェアしたときに商品画像と価格が正しく表示されるようにするOGPの確認、ブロックテーマで表示されないときの対処までを解説します。

どちらの方法を選ぶか

  • プラグイン:ボタンの種類を管理画面で選べ、アイコンやシェア数の表示も用意されています。コードを触りたくない場合や、ブログ記事にも同じボタンを付けたい場合に向いています。
  • コード(リンク型):各SNSのシェア用URLへのリンクを並べるだけなので、外部のJavaScriptを読み込まずに済み、表示速度やプライバシーへの影響が小さくなります。商品ページだけに、決まったデザインで出したい場合に向いています。

どちらの場合も、シェアされたときの見た目を決めるのはボタンではなく、商品ページの OGP(og:title、og:image など)です。ボタンを付ける前に、OGPが出ているかを確認しておくと手戻りがありません。

方法1:プラグインで追加する

実在して更新が続いている代表的なものに AddToAny Share Buttons があります。また、Jetpack を使っているサイトなら、Jetpack の共有ボタン機能(ブロックテーマでは「共有ボタン」系のブロック)でも追加できます。どちらも設定画面の構成やブロック名は版によって変わるため、ここでは目的ごとに説明します(2026年10月現在)。

  1. プラグインをインストールして有効化します。導入前にサイトのバックアップを取り、できればステージング環境で試します。
  2. 設定画面で、表示するサービス(X、Facebook、LINE、Pinterest など)を選びます。日本向けのストアならLINEを入れておくと、購入検討中の家族や友人への共有に使われやすくなります。
  3. 表示する場所の設定で、投稿や固定ページとは別に「商品」(WooCommerceの投稿タイプ product)に表示するかを選びます。プラグインによっては、商品ページへの表示がWooCommerce用の位置指定として別に用意されています。
  4. 商品ページを開き、ボタンの位置と、スマホでの折り返しを確認します。

シェア数を表示する機能は、SNS側がシェア数の提供をやめたり制限したりしているため、サービスによっては表示されません。数字が0のまま並ぶと逆効果になることもあるので、表示しない設定にしておくのも一つの判断です。

方法2:woocommerce_share フックでリンク型ボタンを出す

クラシックテーマの商品ページでは、商品概要エリアの最後のほう(カテゴリーやタグの表示の後)で woocommerce_share アクションが呼ばれます。ここにボタンを出すと、テーマを問わず価格やカートボタンの下に並びます。

コードは子テーマの functions.php か、mu-plugin(wp-content/mu-plugins/ に置くPHPファイル)に書きます。親テーマを直接編集すると、テーマの更新で消えるためです。

<?php
defined( 'ABSPATH' ) || exit;

/**
 * 商品ページにリンク型のシェアボタンを出力する。
 */
function my_wc_share_buttons() {
	if ( ! is_product() ) {
		return;
	}

	$url   = get_permalink();
	$title = wp_strip_all_tags( get_the_title() );
	$image = get_the_post_thumbnail_url( get_the_ID(), 'large' );

	$links = array(
		'X'        => 'https://twitter.com/intent/tweet?url=' . rawurlencode( $url ) . '&text=' . rawurlencode( $title ),
		'Facebook' => 'https://www.facebook.com/sharer/sharer.php?u=' . rawurlencode( $url ),
		'LINE'     => 'https://social-plugins.line.me/lineit/share?url=' . rawurlencode( $url ),
	);
	if ( $image ) {
		$links['Pinterest'] = 'https://www.pinterest.com/pin/create/button/?url=' . rawurlencode( $url )
			. '&media=' . rawurlencode( $image ) . '&description=' . rawurlencode( $title );
	}

	echo '<div class="my-share" aria-label="この商品をシェア">';
	foreach ( $links as $name => $href ) {
		printf(
			'<a class="my-share__link my-share__link--%1$s" href="%2$s" target="_blank" rel="noopener noreferrer">%3$s</a>',
			esc_attr( strtolower( $name ) ),
			esc_url( $href ),
			esc_html( $name )
		);
	}
	echo '</div>';
}
add_action( 'woocommerce_share', 'my_wc_share_buttons' );

/**
 * 商品ページでだけボタン用のCSSを追加する。
 */
function my_wc_share_style() {
	if ( ! is_product() ) {
		return;
	}
	$css = '.my-share{display:flex;flex-wrap:wrap;gap:.5em;margin-top:1em}'
		. '.my-share__link{display:inline-block;padding:.4em .9em;border:1px solid currentColor;border-radius:4px;text-decoration:none;font-size:.9em}'
		. '.my-share__link:focus-visible{outline:2px solid;outline-offset:2px}';
	wp_register_style( 'my-wc-share', false, array(), '1.0' );
	wp_enqueue_style( 'my-wc-share' );
	wp_add_inline_style( 'my-wc-share', $css );
}
add_action( 'wp_enqueue_scripts', 'my_wc_share_style' );

コードのポイントは3つです。

  • URLのエンコードとエスケープ:商品名に「&」や日本語が入ってもリンクが壊れないよう、各パラメーターを rawurlencode() で処理し、出力時に esc_url() と esc_html() を通しています。
  • **rel="noopener noreferrer"**:新しいタブで開くリンクに付け、開いた先のページから元のページを操作されないようにします。
  • CSSは商品ページだけ:wp_add_inline_style() で、商品ページを表示したときにだけ小さなCSSを足しています。ボタンはテキストのリンクなので、外部アイコンの読み込みでレイアウトがずれる(CLS)心配もありません。アイコンを使う場合は、SVGをテーマ内に置き、幅と高さを指定してください。

XのシェアURLは、2026年10月現在 twitter.com/intent/tweet の形式が引き続き使えますが、X側の仕様変更で変わる可能性があります。各SNSのシェア用URLは、公式の開発者向けドキュメントで定期的に確認してください。

シェアしたときの表示(OGP)を確認する

ボタンを押すとSNSは商品ページのURLを読みに来て、OGPタグから題名・説明・画像を取り出します。OGPが無いと、画像が出ない、ストア名だけが出る、といった状態になります。

Yoast SEO や Rank Math などのSEOプラグインを使っていれば、商品ページにもOGPが出力されているのが一般的です。ブラウザで商品ページのソースを開き、og:image に商品画像のURLが入っているかを見ます。Facebook のシェアデバッガーなど、各SNSが用意している確認ツールを使うと、キャッシュされた古い情報の再取得もできます。

画像は横長(おおむね1.91:1)で十分な大きさのものが推奨されることが多い一方、商品画像は正方形が多いため、SNSによっては上下が切れて表示されます。重要な文字を画像の端に置かないようにしておくと安心です。

ブロックテーマで表示されないとき

Twenty Twenty-Five などのブロックテーマでは、商品ページがブロックで組まれたテンプレートで表示されます。WooCommerceは一部のクラシック用フックを互換のために呼び出していますが、テンプレートの構成によっては woocommerce_share の位置に出ない、または出力されないことがあります。

その場合は、次のどちらかで対応します。

  1. サイトエディターで「単一商品」テンプレートを開き、ボタンを出したい位置に、プラグインが用意しているブロックやショートコードのブロックを置く。
  2. 上のコードの出力部分をショートコードとして登録し(add_shortcode())、テンプレートのショートコードブロックから呼び出す。

テンプレートを編集する前に、サイトエディターでの変更内容を書き出しておくと、元に戻したいときに困りません。

確認方法

  • PCとスマホで商品ページを開き、ボタンが価格やカートボタンの近くに並ぶか、折り返しで崩れないかを見る。
  • 各ボタンを押し、シェア画面に商品名とURLが正しく入るかを見る(実際に投稿する必要はありません)。
  • キーボードのTabキーでボタンに移動でき、フォーカスの枠が見えるかを確かめる。
  • バリエーションのある商品でも、URLが親商品のものになっているかを確認する。

まとめ

  • 手軽さ重視ならAddToAnyやJetpackの共有機能、軽さ重視ならリンク型ボタンを woocommerce_share フックで出す。
  • リンクは rawurlencode() でパラメーターを処理し、esc_url() と esc_html() でエスケープする。
  • シェア時の見た目はOGPで決まる。og:image に商品画像が入っているかを先に確認する。
  • ブロックテーマで出ないときは、単一商品テンプレートにブロックかショートコードで配置する。
  • SNSのシェア用URLや仕様は変わるため、公式ドキュメントを定期的に確認する。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲