0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressプラグインを作ってみた話

Last updated at Posted at 2025-08-15

はじめに

「入力されたデータを簡単に保存したいな〜」
「ユーザーにコード触らせたくないし、Django使うのも大げさだし…」
ってWordPress最初からデータベースが使えるじゃん!

それなら、フォーム作って、データ保存して、表示する仕組みも全部WordPressの中で完結できる!
ということで、今回はWordPressプラグインとしてまとめてみた覚書きです。


プラグインってどこに置くの?

いつもwordpressの管理画面からプラグインをインストールしている時は気づいていないかもしれませんが、
WordPressのプラグインは、wp-content/plugins/ フォルダ内に置くことで認識されます。

自作プラグインは、まずこのフォルダに専用のディレクトリを作るところからスタートです。

wp-content/plugins/my-plugin/
└── my-plugin.php

この my-plugin.php がプラグインの本体になります。


プラグインとして認識させるには?

ファイルの先頭に以下のようなコメントを書くだけです。
これだけでWordPressが「これはプラグインだ!」と認識してくれます。

<?php
/*
Plugin Name: わたしのプラグイン
Description: WordPressプラグイン作成の練習用です。
Version: 1.0
Author: あなたの名前
*/

これで管理画面の「プラグイン」一覧に表示されるようになります。


管理画面にメニューを追加するには?

管理画面内にページを割いて機能を表示させたい時は、以下のように書きます。

// 管理画面にメニューを追加
function add_admin_menu() {
    add_menu_page(
        'わたしのプラグイン', // ページのタイトル
        'わたしのプラグイン', // メニューに表示される名前
        'manage_options', // アクセスできるユーザーの権限。manage_optionsは管理者のみ
        'my-plugin', // ページのスラッグ(URLの一部になる)
        'add_plugin_page', //  管理画面の中身の関数。この後書きます。
        'dashicons-edit-page', // メニューアイコン
        20 // メニューの表示順
    );
};
add_action('admin_menu', 'add_admin_menu');

メニューアイコンは
developer.wordpress.org
に たくさんあるので、見てみると楽しいです。

とりあえず、中身を作っておきましょう。

// 管理画面の中身
function add_plugin_page() {
    echo '<h1>わたしのプラグイン</h1>';
}

ここまで来たら、プラグインを「有効化」
(既に有効化した方は、一旦無効化してから有効化)
add-plugin.jpg

すると、管理画面内でプラグインにアクセスできるようになりました。
empty-page.jpg


管理画面にフォームを追加してみる

フォームから入力したメッセージを保存して、後で表示できるようにしてみます。

※ 今回の趣旨とは異なるのでコードの説明は簡易なものとします。

// 管理画面の中身
function add_plugin_page() {
    echo '<h1>わたしのプラグイン</h1>';
?>
    <div class="wrap">
        <p>メッセージを入力してください。</p>
        <form method="post">
            <?php wp_nonce_field('my_plugin_nonce_action', 'my_plugin_nonce_field'); ?>
            <label for="message">メッセージ:</label><br>
            <input type="text" name="message" value="<?php echo esc_attr(get_option('my_plugin_message', '')); ?>"><br><br>
            <input type="submit" name="save_message" value="保存">
        </form>
    </div>

<?php     
}

// メッセージ保存処理
function message_save() {
    if (isset($_POST['save_message']) && check_admin_referer('my_plugin_nonce_action', 'my_plugin_nonce_field')) {
        $message = sanitize_text_field($_POST['message']);
        update_option('my_plugin_message', $message);
    }
}
add_action('admin_init', 'message_save');
?>

ポイント:

  • wp_nonce_field() と check_admin_referer() はCSRF対策
  • update_option() で保存、get_option() で取得

プラグインページを再読み込みするとフォームが表示されます。
「こんにちは」と、保存してみました。
msg.jpg

wordpressのデータベースを確認すると、データが入っていることが分かります。
db.jpg


固定ページに表示するには?

保存したメッセージを固定ページに表示するには、ショートコードを使います。

function call_message() {
    $message = get_option('my_plugin_message');
    return '<h1 id="view_message">' . esc_html($message) . '</h1>';
}
add_shortcode('my_form', 'call_message');

functionでショートコードを設置したページでの振る舞いを設定、
add_shortcode('my_form', 'call_message');の部分でショートコードとして登録しています。

これで [my_form] と書くだけで、保存されたメッセージが表示されます!
short-code.jpg

ショートコードを設定したページに、「こんにちは」と表示されました。
test-page.jpg

違うメッセージを保存して、ページを再読み込みするとメッセージが変わりますので、実感が湧くかもしれません。
nekogasuki00.jpg


functions.phpを触らずにJSやCSSを読み込むには?

プラグインとして独立したものにするなら、JavaScriptやCSSも functions.php を使わずに読み込みたいですよね。

WordPressでは、プラグイン内で wp_enqueue_script()wp_enqueue_style() を使って、JSやCSSを読み込むことができます。
管理画面と固定ページでは読み込み方法が異なるので注意しましょう。


管理画面用(admin_enqueue_scripts

function my_plugin_enqueue_admin_assets() {
    wp_enqueue_script('my-plugin-admin-js', plugins_url('js/admin.js', __FILE__), array('jquery'), null, true);
    wp_enqueue_style('my-plugin-admin-css', plugins_url('css/admin.css', __FILE__));
}
add_action('admin_enqueue_scripts', 'my_plugin_enqueue_admin_assets');

固定ページ・投稿用(wp_enqueue_scripts

function my_plugin_enqueue_assets() {
    wp_enqueue_script('my-plugin-js', plugins_url('js/script.js', __FILE__), array('jquery'), null, true);
    wp_enqueue_style('my-plugin-css', plugins_url('css/style.css', __FILE__));
}
add_action('wp_enqueue_scripts', 'my_plugin_enqueue_assets');

ファイル構成の例

上記のコードは、以下のような構成でファイルを配置することを前提としています:

wp-content/plugins/my-plugin/
├── my-plugin.php
├── js/
│   ├── admin.js
│   └── script.js
└── css/
    ├── admin.css
    └── style.css

読み込みさえできれば、好きにカスタマイズできますね!


サンプルコードはこちら
https://github.com/nyaataco/wp-my-plugin/tree/main


まとめ

今回は「WordPressプラグインってどうやって作るの?」という基本のきを紹介しました。

  • プラグインは wp-content/plugins/ に置く
  • ヘッダーコメントでWordPressに認識させる
  • 管理画面にメニューを追加できる
  • ショートコードで表示できる
  • JS/CSSも独立してプラグイン内で読み込める

基本のきなので、ただメッセージを表示するだけのプラグインになりましたが、様々に応用可能だと思います!

この記事が誰かの助けになれば幸いです:cat:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?