WordPressの管理画面の投稿一覧に「URLコピー」機能を追加する方法

WordPress

WordPressの管理画面で投稿一覧を確認する際、「この投稿のURLをコピーしたい」と思うことはありませんか?

デフォルトでは、投稿の編集画面を開くか、公開ページへ移動しないとURLを取得できません。しかし、ちょっとしたコードを追加するだけで、投稿一覧ページに「URLコピー」ボタンを設置できるようになります。

この記事では、初心者の方でも簡単に実装できるように、ステップごとに詳しく解説していきます。

注意点

誤った記述をすると、WordPressの管理画面が開けなくなる可能性があります。念のため、以下の方法でバックアップを取っておくと安心です。

  1. テーマのバックアップを取る
    • 外観 > テーマエディター から編集する前に、functions.php の内容をコピーしてメモ帳などに保存。
    • 可能であればFTPソフトを使い、wp-content/themes/使用中のテーマ/functions.php をローカルに保存。
  2. プラグインを利用する
    • 「Code Snippets」プラグインを使えば、テーマファイルを直接編集せずにカスタムコードを追加できます。
  3. 子テーマを使用する
    • functions.php を編集する場合は、親テーマではなく子テーマを利用すると、テーマのアップデート時に変更が消える心配がありません。

どんな機能を追加するの?

今回のカスタマイズで実装するのは、以下の3つの機能です。

  1. 投稿一覧ページに「投稿URL」という新しい列を追加する。
  2. その列に各投稿のURLを表示し、クリックでコピーできるようにする。
  3. クリックするとコピー完了のメッセージを表示する。

これにより、わざわざ投稿を開かなくてもURLを取得できるようになります。

実装コード(functions.php に追加)

以下のコードを functions.php に追加すると、投稿一覧にURLコピー機能が追加されます。

// 管理画面の投稿一覧にURLコピーを追加
function add_copy_url_feature() {
    // 1. 投稿一覧に新しい列を追加
    add_filter('manage_posts_columns', function($columns) {
        $columns['post_url'] = __('投稿URL', 'textdomain');
        return $columns;
    });

    // 2. 各投稿のURLを表示
    add_action('manage_posts_custom_column', function($column, $post_id) {
        if ($column === 'post_url') {
            $url = get_permalink($post_id);
            echo '<a href="#" class="copy-url" data-url="' . esc_url($url) . '">' . esc_url($url) . '</a>';
        }
    }, 10, 2);

    // 3. JavaScriptでクリック時にURLをコピー
    add_action('admin_footer', function() {
        ?>
        <script type="text/javascript">
            jQuery(document).ready(function($) {
                $('.copy-url').on('click', function(e) {
                    e.preventDefault();
                    var url = $(this).data('url');
                    navigator.clipboard.writeText(url)
                        .then(() => alert('URL\n' + url + '\nのコピーが完了しました'))
                        .catch(err => console.error('コピー失敗:', err));
                });
            });
        </script>
        <?php
    });
}
add_action('admin_init', 'add_copy_url_feature');

コードの解説

投稿一覧に新しい列を追加する

まず、add_filter('manage_posts_columns', function($columns) {...}) を使って、「投稿URL」というカスタム列を追加します。これにより、投稿一覧に新しい列が表示されるようになります。

各投稿のURLを取得して表示する

get_permalink($post_id) を使用し、各投稿のURLを取得します。そのURLを <a> タグの data-url 属性に埋め込むことで、後ほどJavaScriptで取得しやすくしています。

JavaScriptでクリック時にURLをコピー

管理画面のフッター部分(admin_footer)にJavaScriptを追加し、クリック時の処理を設定します。

  • クリックすると navigator.clipboard.writeText(url) を使ってURLをクリップボードにコピー。
  • 成功したらアラートを表示し、「コピーが完了した」ことを知らせる。
  • 失敗した場合はエラーメッセージをコンソールに出力。

管理画面の変化

今回紹介したコードをfunction.phpに追加すると、管理画面の投稿一覧ページに「投稿URL」が追加されます。

「投稿URL」の各記事のURLをクリックするとクリップボードにコピーされるようになります。

クリップボードにコピーされるとアナウンスが表示されます。

まとめ

このカスタマイズを導入することで、管理画面の投稿一覧から簡単に投稿URLをコピーできるようになります。
特に、SNSでのシェアやクライアントへの共有が多い方にとっては、大幅な時短につながる便利な機能です。
ぜひ、試してみてください!

タイトルとURLをコピーしました