検索キーワードを入力
カテゴリーを選択

WordPress管理画面「ツール」の「インポート」の設定ページに独自項目を追加する実装方法を解説

投稿日:2025年08月02日(土)
WordPress管理画面「ツール」の「インポート」の設定ページに独自項目を追加する実装方法を解説|UMENOKI|すぐに仕事で使えるIT技術情報メディア

みなさんこんにちは!エンジニアの高澤です!

今回は、WordPress管理画面「ツール」の「インポート」の設定ページに独自項目を追加する実装方法を解説したいと思います。

当記事での実装内容はこれまたニッチなものとなるかと思いますが、例えばプラグインやテーマ開発でインポート関連の独自機能を実装する際や、クライアントからインポート周りの実装を依頼された場合に有効なノウハウになるかと思います。

実際引き算方式でWordPressのもともと備わっている機能やインターフェースに従って実装することは使いやすさやわかりやすさを追求するなら必須の考え方かと思います。

そのため、ぜひインポートやエクスポート機能を実装する場合に当記事をお仕事などでお役立ていただけましたら幸いです。

管理画面ツールのインポートの場所と実装イメージ

まず実装に入る前に、管理画面ツールのインポートの場所と実装イメージについて解説いたします。

今回実装する対象の管理画面は、WordPress管理画面左メニュー「ツール」→「インポート」のページになります。

実装としては、下図のようにWordPressで実装済みの既存の項目とは別に、同じようにオリジナルの独自項目を追加するイメージになります。

下図のような感じですね。

実装自体はWordPressテンプレートタグであるregister_importer()関数とadmin_initフックを使って実装することになります。

管理画面ツールのインポートに独自項目を実装できるメリット

管理画面ツールのインポートに独自項目を実装できるメリットについて解説しておきたいと思います。

メリットとしては以下があげられるかと思います。

  • 既存UIとの統一感があり、ユーザーにとって直感的
  • クライアントワークでの汎用性・再利用性が高い
  • WordPressの標準機能と共存しやすい
  • 自作ツールを「他のインポーター」と同じ立ち位置にできる

それぞれ解説いたします。

既存UIとの統一感があり、ユーザーにとって直感的

WordPressが元々提供しているインポートページに統合することで、ユーザーは慣れたUIの中で操作できるため、別画面や別メニューに誘導する必要がなくなり、学習コストが下がります。

クライアントワークでの汎用性・再利用性が高い

企業やクライアントから「CSVデータの取り込み」や「他システムからのデータ移行」などを求められた際に、公式のインポート機能を拡張する形で提案できるため、信頼性があり、導入もスムーズです。

WordPressの標準機能と共存しやすい

独自の画面を一から作るよりも、register_importer()関数を使って既存機能に乗せることで、WordPress本体や他のプラグインとの競合リスクが減り、保守性も高まります。

自作ツールを「他のインポーター」と同じ立ち位置にできる

「Movable Typeインポーター」などの標準インポーターと並列に表示されることで、ユーザーにとって“正式な手段”として認識されやすくなるというUI/UX上の信頼性が生まれます。

管理画面ツールのインポートに独自項目の追加実装方法

それでは早速、管理画面ツールのインポートに独自項目の追加実装方法を解説したいと思います。

コードの説明の前に、まずは以下のコードをfunctions.phpにコピー&ペーストしてください。

<?php
/**
 * WordPressインポーター機能
 */

// インポーターを登録
add_action('admin_init', 'simple_importer_register');

function simple_importer_register() {
    if (!current_user_can('import')) return;
    
    register_importer(
        'simple-importer',
        'シンプルインポーター',
        'データを移行します。',
        'simple_importer_page'
    );
}

function simple_importer_page() {
    if (!current_user_can('import')) {
        wp_die('権限がありません。');
    }
    
    echo '<div class="wrap"><h1>データ移行</h1>';
    
    // 実行処理
    if (isset($_POST['run_import'])) {
        $result = do_import();
        echo $result ? '<p>完了しました。</p>' : '<p>エラーが発生しました。</p>';
    }
    
    // フォーム表示
    echo '<form method="post">
        <p><input type="submit" name="run_import" class="button-primary" value="投稿ページを一件追加"></p>
    </form></div>';
}

function do_import() {
    // Gutenbergの段落ブロックとして投稿本文を記述
    $post_content = <<<HTML
<!-- wp:paragraph -->
<p>この投稿はインポーター経由で作成されました。</p>
<!-- /wp:paragraph -->
HTML;

    $post_data = array(
        'post_title'    => 'インポートされた投稿',
        'post_content'  => $post_content,
        'post_status'   => 'publish',
        'post_author'   => get_current_user_id(),
        'post_category' => array(1), // カテゴリID 1(未分類など)
    );

    $post_id = wp_insert_post($post_data);

    return !is_wp_error($post_id) && $post_id > 0;
}

上記コードは、WordPressの管理画面にある「ツール」>「インポート」ページに「シンプルインポーター」という独自のインポート項目を追加し、ボタン一つで投稿を1件自動的に作成できる機能を実装しています。

ユーザーがインポート権限を持っている場合、register_importer()関数を用いてこのインポーターが登録され、インポート画面に表示されるリンクから専用の画面に遷移できます。

その画面では、インポート処理を実行するボタンが用意されており、クリックするとインポート処理用に定義した独自の関数であるdo_import()関数が呼び出されて、Gutenbergの段落ブロック形式に対応した投稿が1件作成されます。

投稿のタイトルや本文、ステータス、投稿者、カテゴリなどはあらかじめ設定されており、本文には<!– wp:paragraph –>というコメントタグを含むことで、ブロックエディターが段落ブロックとして正しく認識するようになっています。

これにより、管理画面の既存のインポート画面のUIと自然に統合しつつ、開発者や運用者が手軽に柔軟なインポート機能を提供できます。

ちなみにregister_importer()関数について詳しく知りたい方は、以下のWordPress公式ドキュメントをご確認ください。

ペーストして保存後、管理画面を更新していただくと下図のように独自項目が追加されているのが確認できるかと思います。

「インポーターの実行」のリンクテキストをクリックすると、下図のようにオリジナルの設定ページが表示されるかと思います。

設定ページの「投稿ページを一件追加」ボタンをクリックしてください。

すると、下図のようにWordPress管理画面左メニュー「投稿」の「投稿一覧」からご確認いただくとダミーの投稿が一件追加されているのが確認できるかと思います。

これで実装自体は完了です。お疲れ様でした!

あとはご自身でお好きなようにカスタマイズいただければ、より便利でリッチに仕上げることができるかと思います。

もし項目名などのラベル周りを変更したければコードの以下の部分などを変更してください。

    register_importer(
        'simple-importer',
        'シンプルインポーター',
        'データを移行します。',
        'simple_importer_page'
    );

そして、設定ページの機能自体をカスタマイズしたければコードの以下の部分を修正してください。

function do_import() {
    // Gutenbergの段落ブロックとして投稿本文を記述
    $post_content = <<<HTML
<!-- wp:paragraph -->
<p>この投稿はインポーター経由で作成されました。</p>
<!-- /wp:paragraph -->
HTML;

    $post_data = array(
        'post_title'    => 'インポートされた投稿',
        'post_content'  => $post_content,
        'post_status'   => 'publish',
        'post_author'   => get_current_user_id(),
        'post_category' => array(1), // カテゴリID 1(未分類など)
    );

    $post_id = wp_insert_post($post_data);

    return !is_wp_error($post_id) && $post_id > 0;
}

みなさんは無事実装できましたでしょうか?

もしうまくいかない場合は当記事のサンプルコードをそのまま一旦コピペしていただくなどしてみてください。

まとめ

今回ご紹介したのは、WordPress管理画面「ツール」>「インポート」ページに独自項目を追加する実装方法でした。

ややニッチな内容ではありますが、プラグインやテーマの開発、あるいはクライアントからのインポート機能に関する要望に応える際など、実践的に活用できるノウハウです。

WordPressが本来備えている機能やUIに沿って拡張することは、ユーザーにとっての「わかりやすさ」や「使いやすさ」を保つために非常に重要な考え方です。

インポートやエクスポート関連の機能を実装する際には、ぜひ本記事の内容を参考にしていただき、お仕事やプロジェクトの中でお役立ていただければ幸いです。

執筆者

UMENOKI編集部 高澤 翔汰

歴5年目(2024年8月以降から5年目です)のエンジニアです!
CMSでのサイト構築とWebデザイン制作を兼任して5年目になります。
自作のiOSアプリ(iPhoneアプリ)やWordPressプラグインを開発することもあり、まだまだ現在進行形で勉強中です!

お気軽に皆さんのご要望をお聞かせください!

どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!

例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など

送信と同時にプライバシーポリシーに同意したものとします。