1. TOP
  2. 技術メモ
  3. ワードプレスの管理画面にオリジナルメニューとテキストフィールドを作成する

ワードプレスの管理画面にオリジナルメニューとテキストフィールドを作成する

ワードプレスの管理画面にオリジナルメニューとテキストフィールドを作成する

ワードプレスの管理画面にオリジナルメニューを追加する方法になります。また、メニュー内にテキストフィールドとテキストエリアを作成し、保存、出力までの流れをご紹介します。

 

カスタム管理ページ用のプラグインファイルを作成

WordPressのテーマフォルダ内にある functions.php ファイルに、以下のコードを追加します。これにより、新しい管理ページが追加されます。

functions.php

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
add_action('admin_menu', 'my_custom_menu');
function my_custom_menu() {
add_menu_page(
'テーマ設定', // ページのタイトル
'テーマ設定', // メニューのタイトル
'manage_options', // 権限
'custom-menu-slug', // スラッグ
'my_custom_menu_page', // コールバック関数
'dashicons-admin-generic', // アイコン
'6', // メニューの位置
);
}
function my_custom_menu_page() {
?>
<div class="wrap">
<h1>ここにカスタムメニューの内容を記入</h1>
<form method="post" action="options.php">
<?php
settings_fields('my_custom_settings_group');
do_settings_sections('my_custom_settings_group');
?>
<table class="form-table">
<tr valign="top">
<th scope="row">サンプルオプション</th>
<td><input type="text" name="my_sample_text_option" value="<?php echo esc_attr( get_option('my_text_option') ); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">テキストエリア</th>
<td><textarea name="my_sample_textarea_option" rows="10" cols="50"><?php echo esc_textarea( get_option('my_textarea_option') ); ?></textarea></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php
}
add_action('admin_menu', 'my_custom_menu'); function my_custom_menu() { add_menu_page( 'テーマ設定', // ページのタイトル 'テーマ設定', // メニューのタイトル 'manage_options', // 権限 'custom-menu-slug', // スラッグ 'my_custom_menu_page', // コールバック関数 'dashicons-admin-generic', // アイコン '6', // メニューの位置 ); } function my_custom_menu_page() { ?> <div class="wrap"> <h1>ここにカスタムメニューの内容を記入</h1> <form method="post" action="options.php"> <?php settings_fields('my_custom_settings_group'); do_settings_sections('my_custom_settings_group'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">サンプルオプション</th> <td><input type="text" name="my_sample_text_option" value="<?php echo esc_attr( get_option('my_text_option') ); ?>" /></td> </tr> <tr valign="top"> <th scope="row">テキストエリア</th> <td><textarea name="my_sample_textarea_option" rows="10" cols="50"><?php echo esc_textarea( get_option('my_textarea_option') ); ?></textarea></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php }
add_action('admin_menu', 'my_custom_menu');

function my_custom_menu() {
  add_menu_page(
    'テーマ設定', // ページのタイトル
    'テーマ設定', // メニューのタイトル
    'manage_options', // 権限
    'custom-menu-slug', // スラッグ
    'my_custom_menu_page', // コールバック関数
    'dashicons-admin-generic', // アイコン
    '6', // メニューの位置
  );
}
function my_custom_menu_page() {
  ?>
  <div class="wrap">
    <h1>ここにカスタムメニューの内容を記入</h1>
    <form method="post" action="options.php">
      <?php
      settings_fields('my_custom_settings_group');
      do_settings_sections('my_custom_settings_group');
      ?>
      <table class="form-table">
        <tr valign="top">
          <th scope="row">サンプルオプション</th>
          <td><input type="text" name="my_sample_text_option" value="<?php echo esc_attr( get_option('my_text_option') ); ?>" /></td>
        </tr>
        <tr valign="top">
          <th scope="row">テキストエリア</th>
          <td><textarea name="my_sample_textarea_option" rows="10" cols="50"><?php echo esc_textarea( get_option('my_textarea_option') ); ?></textarea></td>
        </tr>
      </table>
      <?php submit_button(); ?>
    </form>
  </div>
  <?php
}

入力した内容を登録

次に、入力した内容を登録するためのコードを functions.php に追加します。

functions.php

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
add_action('admin_init', 'my_custom_settings');
function my_custom_settings() {
register_setting('my_custom_settings_group', 'my_text_option');
register_setting('my_custom_settings_group', 'my_textarea_option');
}
add_action('admin_init', 'my_custom_settings'); function my_custom_settings() { register_setting('my_custom_settings_group', 'my_text_option'); register_setting('my_custom_settings_group', 'my_textarea_option'); }
add_action('admin_init', 'my_custom_settings');

function my_custom_settings() {
  register_setting('my_custom_settings_group', 'my_text_option');
  register_setting('my_custom_settings_group', 'my_textarea_option');
}

テキストフィールドとテキストエリアのショートコードを作成

functions.php ファイルに以下のコードを追加します。

テキストフィールド

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function display_sample_text_content_shortcode() {
$sample_text_content = get_option('my_text_option');
return '<div class="my-text-output">' . esc_html($sample_text_content) . '</div>';
}
add_shortcode('display_sample_text_content', 'display_sample_text_content_shortcode');
function display_sample_text_content_shortcode() { $sample_text_content = get_option('my_text_option'); return '<div class="my-text-output">' . esc_html($sample_text_content) . '</div>'; } add_shortcode('display_sample_text_content', 'display_sample_text_content_shortcode');
function display_sample_text_content_shortcode() {
  $sample_text_content = get_option('my_text_option');
  return '<div class="my-text-output">' . esc_html($sample_text_content) . '</div>';
}
add_shortcode('display_sample_text_content', 'display_sample_text_content_shortcode');

テキストエリア

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function display_sample_textarea_content_shortcode() {
$sample_textarea_content = get_option('my_textarea_option');
return '<div class="my-textarea-output">' . $sample_textarea_content . '</div>';
}
add_shortcode('display_sample_textarea_content', 'display_sample_textarea_content_shortcode');
function display_sample_textarea_content_shortcode() { $sample_textarea_content = get_option('my_textarea_option'); return '<div class="my-textarea-output">' . $sample_textarea_content . '</div>'; } add_shortcode('display_sample_textarea_content', 'display_sample_textarea_content_shortcode');
function display_sample_textarea_content_shortcode() {
  $sample_textarea_content = get_option('my_textarea_option');
  return '<div class="my-textarea-output">' . $sample_textarea_content . '</div>';
}
add_shortcode('display_sample_textarea_content', 'display_sample_textarea_content_shortcode');

ショートコードを使用

任意のページや投稿に以下のショートコードを追加して、それぞれの内容を表示させます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
//テキストフィールド
[display_sample_text_content]
//テキストエリア
[display_sample_textarea_content]
//テキストフィールド [display_sample_text_content] //テキストエリア [display_sample_textarea_content]
//テキストフィールド
[display_sample_text_content]
//テキストエリア
[display_sample_textarea_content]

テーマに追加して表示したい場合はこちら

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
//テキストフィールド
<?php echo do_shortcode('[display_sample_text_content]'); ?>
//テキストエリア
<?php echo do_shortcode('[display_sample_textarea_content]'); ?>
//テキストフィールド <?php echo do_shortcode('[display_sample_text_content]'); ?> //テキストエリア <?php echo do_shortcode('[display_sample_textarea_content]'); ?>
//テキストフィールド
<?php echo do_shortcode('[display_sample_text_content]'); ?>
//テキストエリア
<?php echo do_shortcode('[display_sample_textarea_content]'); ?>

 

これで、テキストフィールドとテキストエリアの内容をショートコードで表示させることができます。

作成したテキストエリアなどでHTMLを許可したい場合はこちら

PR

ニッチなテーマのイラスト素材を投稿中!ぜひご利用ください。

ナマケモノなど可愛いイラストをイラストACで無料配布中!

オリジナル絵本をKindleで出版!

ナマケモノのふにゃまるちゃんを読む

困ったときは格安で依頼!RU DESIGNも出品中

格安レンタルサーバーでサイト運営を始めよう

ドメイン取得は一括管理が便利!

応援・支援よろしくお願いします!サイト運営に活用させていただきます。

Braveクリエイターサポート
ホームページ制作ならRU DESIGN

関連記事

【WordPress初心者さん必見!】「これ、どうすればいいの?」検索しても意外と見つからない疑問を解決!
2025/04/19
WordPressでのサイト運営、始めてみましたか?✨ 最初は設定や記事の書き方など、覚えることがたくさんで大変ですよね!基本的な操作は色々なサイトで解説されて...
WordPressで「Missing a temporary folder」エラーを解決!ファイルがアップロードできない時の簡単な対処法
2025/04/19
WordPressで画像やプラグインをアップロードしようとしたら、「Missing a temporary folder」というエラーが出て、うまくアップロード...
WPFormsで「JavaScriptの問題を検出しました」メッセージが表示された時の原因と対処法
2025/04/19
WordPressサイトで人気の高いお問い合わせフォームプラグインの一つであるWPFormsを利用していると、サイトの管理画面や、実際にフォームが表示されている...
WordPressサイトの処理が止まる?「Maximum execution time exceeded」エラーの原因と対策
2025/04/18
WordPressサイトを運営していると、時々「Fatal error: Maximum execution time of XX seconds exceed...
WordPressで遭遇しやすい「原因が分かりにくい」エラーと解決策
2025/04/18
WordPressでウェブサイトを運用していると、予期しないエラーメッセージに遭遇することがあります。有名なエラー(例えば、白い画面だけが表示される「真っ白画面...