MENU
  • ブログ用語集(ガイド)
  • ブログ運営基礎知識
  • SEOノウハウ
  • ブログ収益化
  • WordPress
  • Webデザイン
  • PC
  • サービス一覧
  • 無料相談
セオリコ
  • ブログ用語集
  • 記事一覧
    • ブログ基礎知識
      • ブログ基礎知識
      • ブログの書き方
      • サーバー関連
    • ブログ収益化
      • Google AdSense
    • SEO
    • Webデザイン
      • CSSデザイン
    • WordPress
      • WordPress エラー修正方法まとめ
      • WordPressテーマ
      • WordPressプラグイン
      • ブログカスタマイズ
    • PC関連
      • OS・ソフトウェア
      • ハードウェア
  • サービス一覧
    • ブログ個別サポート(コンサルティング)
    • サイト診断(Google AdSense 審査対策)
    • Search Console データ分析
    • WordPress エラー修復
    • Link Map Insights
  • 無料相談
セオリコ
  • ブログ用語集
  • 記事一覧
    • ブログ基礎知識
      • ブログ基礎知識
      • ブログの書き方
      • サーバー関連
    • ブログ収益化
      • Google AdSense
    • SEO
    • Webデザイン
      • CSSデザイン
    • WordPress
      • WordPress エラー修正方法まとめ
      • WordPressテーマ
      • WordPressプラグイン
      • ブログカスタマイズ
    • PC関連
      • OS・ソフトウェア
      • ハードウェア
  • サービス一覧
    • ブログ個別サポート(コンサルティング)
    • サイト診断(Google AdSense 審査対策)
    • Search Console データ分析
    • WordPress エラー修復
    • Link Map Insights
  • 無料相談

WordPress の見出しにセクションリンクコピーボタンを表示する方法

2024 10/15
ブログカスタマイズ
2024/10/15

WordPress で、「そのセクションの URL(=ページ内ジャンプリンクの URL)をコピーするボタン」を各見出しに実装する方法をご紹介します。

概要は以下のとおりです。

  • プラグイン「Table of Contents Plus」の id を使う
  • 各見出し(h2, h3)の横にコピーボタンを表示する
  • ボタンをクリックすると、そのセクションの URL がクリックボードにコピーされる
セクションの URL をコピーするボタンの動作サンプル
目次

セクションリンクコピーボタンを表示するコード

functions.php

以下のコードをコピーし、functions.php などに入れてご利用ください。

function custom_toc_enqueue_scripts() {
    // Font Awesomeを読み込む
    wp_enqueue_style('font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css');

    // WordPress標準のClipboard.jsを読み込む
    wp_enqueue_script('clipboard', includes_url('js/clipboard.min.js'), array(), null, true);

    // カスタムスクリプトをインラインで追加
    wp_add_inline_script('clipboard', '
        function addCopyButtons() {
            document.querySelectorAll(".toc_list a").forEach(function(tocLink) {
                var targetId = tocLink.getAttribute("href").substring(1);
                var targetElement = document.getElementById(targetId);
                if (targetElement) {
                    // 既にコピーリンクボタンがあるかどうかをチェック
                    if (!targetElement.querySelector(".copy-link-button")) {
                        var button = document.createElement("button");
                        button.className = "copy-link-button";
                        button.setAttribute("data-link", "#" + targetId);
                        button.setAttribute("aria-label", "セクションのURLをコピー"); // アクセシビリティ名を追加
                        button.innerHTML = \'<i class="fa-regular fa-clipboard"></i>\';

                        targetElement.appendChild(button);
                    }
                }
            });

            var clipboard = new ClipboardJS(".copy-link-button", {
                text: function(trigger) {
                    return window.location.origin + window.location.pathname + trigger.getAttribute("data-link");
                }
            });

            clipboard.on("success", function(e) {
                alert("セクションのURLをコピーしました");
                e.clearSelection();
            });

            clipboard.on("error", function(e) {
                alert("Failed to copy link.");
            });
        }

        window.addEventListener("load", function() {
            addCopyButtons(); // 目次が完全に生成された後に実行
        });
    ');
}
add_action('wp_enqueue_scripts', 'custom_toc_enqueue_scripts');

functions.php の編集に不慣れだったり、子テーマを利用していない場合は「Code Snippets」がおすすめです。エラーがあると実行できないよう制御してくれます。

Code Snippets の使い方

すでに Font Awesome を読み込んでいる場合、2 ~ 3 行目は削除推奨です。

アイコンは 21 行目で簡単に差し替えられます。もちろん Font Awesome 以外のアイコンも使えますし、画像でもよいと思います。

button.innerHTML = \'<i class="fa-regular fa-clipboard"></i>\';

Table of Contents Plus 以外のプラグインを使っている場合は、そのプラグインの仕様に合わせてカスタマイズしてください。

Table of Contents Plus カスタマイズ方法(CSS デザイン)

CSS デザイン

以下の CSS はシンプルな例です。テーマによって変わると思いますので、ご参考まで。

button.copy-link-button {
	background: none;
	border: none;
	color: #1a73e8;
	cursor: pointer;
	font-size: .8em;
	margin-left: .5em;
	opacity: .3;
}

button.copy-link-button:hover {
	opacity: 1;
}

色はテキストリンクとそろえ、ホバーしたときに色が濃くなるようにしています。

カスタムツールチップを実装する、position で位置を自由に動かす、などアレンジしていただければと思います。

コピーボタン実装の背景

コピーボタンを実装しようと思ったきっかけは、Google 検索セントラルです。

Google検索セントラルのリンクコピーボタン
https://developers.google.com/search/docs/fundamentals/creating-helpful-content?hl=ja

サイト診断や運営アドバイス時に検索セントラルのドキュメントを使用する機会が多く、セクションのリンクコピー機能も使っていたので真似してみました。

一般的な読み物としてのブログだと実装する意味はあまりないかもしれませんが、ガイドやヘルプといったドキュメントでは重宝するのではと思います。

Ahrefs のブログでも採用されていました。

Ahrefs Blogのリンクコピーボタン
https://ahrefs.com/blog/seo-tracking/

GitHub や Qiita でもカーソルを乗せるとセクションのリンクボタンが出てきます(コピー機能はなく、右クリックから URL をコピーする形)。

GitHubのリンクボタン
https://github.com/inc2734/snow-monkey

いずれのサイトもカーソルを乗せないと表示されないため、気づかない人も一定数いるかもしれません。でも、常時表示しているとそれはそれで邪魔な気もします。

UI の正解がわかりませんし、コピーボタン・コピー機能の正式な名称もわかりません。しばらくは半透明な状態で表示しておいて、クリック率など調査していこうと思います。

ブログカスタマイズ

著者

SEO コンサルタント 瀬尾

瀬尾 真

SEO コンサルタント

Web 歴 20 年以上の SEO コンサルタント。ライティング業務ほか、サイト制作・コンテンツ販売・メディア運営代行業務を行っています。当サイト(セオリコ)では、おもにブログ初心者向けのノウハウを配信。

ココナラでは WordPress エラー修正やハッキング修復、Search Console 分析サービスをご提供しています(年間400件以上対応)。

X (Twitter)
ココナラ
マシュマロ
お問い合わせ

関連記事

  • 記事別サイドバー広告
    WordPress サイドバーウィジェットに「この記事で紹介している商品」を表示する方法
  • wp_is_mobileの使い方
    PC とスマホの表示を切り替える is_mobile と wp_is_mobile の違い
  • FAQPage 構造化データマークアップ
    WordPress の FAQPage 構造化データマークアップ(FAQ リッチリザルト)
  • WordPress でページごとに個別の CSS を設定する方法 7 選
  • WordPress コード挿入
    WordPress の head 内や /body 直前にコードを挿入する 4 つの方法
  • WordPress 管理画面の投稿一覧に最終更新日や文字数を表示するカスタマイズ
  • WordPress カテゴリーページに説明文を表示する
    プラグインを使わずに WordPress カテゴリーページに説明文を表示する方法
  1. セオリコ
  2. WordPress
  3. ブログカスタマイズ
  4. WordPress の見出しにセクションリンクコピーボタンを表示する方法
Category
  • ブログ運営法
  • ブログ収益化
  • SEO
  • Webデザイン
  • WordPress
  • PC
Service
  • ブログ個別サポート
  • Google AdSense 審査対策
  • WordPress エラー修復
  • Search Console 分析
WordPress Plugin
  • Link Map Insights
Information
  • ブログ用語集(ガイド)
  • お問い合わせ
  • サイトマップ
  • セオリコ運営者情報
  • コンテンツポリシー
  • プライバシーポリシー
  • X (@seoryco)

© seoryco.

  • お問い合わせ
  • サービス一覧
  • 検索
  • 目次
  • トップへ
目次