
目次
Excelデータの二重管理、こんな悩みはありませんか?
料金表や商品スペックをExcelで管理しているのに、WordPressのページにも同じデータを手動でコピペしている——そんな運用をしていませんか?
Excelを更新するたびにWordPress側も修正しなければならず、更新漏れが発生したり、作業コストが積み上がったりするのは、よくある悩みです。
この記事では、そうした二重管理の手間を解消する自作WordPressプラグイン「ExcelRange」を紹介します。Excelファイルをアップロードするだけで、ショートコードを使って投稿・固定ページ上にセルの値を直接表示できます。プラグインは無料でダウンロードできます。
ExcelRangeについて
ExcelRangeは、ExcelファイルのセルデータをWordPressの投稿メタ(post_meta)に取り込み、ショートコードで任意の場所に出力できるプラグインです。
主な機能:
- 管理画面からExcelファイル(.xlsx / .xls / .xlsm)をアップロードしてインポート
- ショートコードでセル値をページ上に表示
- リンクのURL欄にセルのURLを差し込むプレースホルダー記法
- インポート済みデータの確認・削除機能
前提:CBX PhpSpreadSheet Libraryが必要です
ExcelRangeは、PHPでExcelファイルを読み込むために CBX PhpSpreadSheet Library を使用しています。WordPressの公式ディレクトリには非公開ですが、GitHubで配布されています。「CBX PhpSpreadSheet Library」で検索 するとリポジトリが見つかります。
ExcelRangeをインストールする前に、CBX PhpSpreadSheet Libraryを先にインストール・有効化してください。
インストール手順
- CBX PhpSpreadSheet Library をGitHubから入手してインストール・有効化
- ExcelRangeのZIPファイルをダウンロード(記事末尾のリンク)
- WordPressの「プラグイン」→「新規追加」→「プラグインのアップロード」からZIPをインストール・有効化
- 管理画面左メニューに「Excelインポート」が表示されれば完了
使い方
1. Excelをインポートする
管理画面の「Excelインポート」画面で、投稿タイプを選択し、対象の投稿をタイトル検索またはIDで指定します。Excelファイルを選択して「インポート実行」を押すと、アクティブシートの A1〜AZ300 の範囲が読み込まれ、値が保存されます。
2. ショートコードで値を表示する
投稿・固定ページの本文中に以下のショートコードを記述します。
// 現在の投稿に紐づいたExcelデータのB2セルを表示
[excel range="B2"]
// 別の投稿(ID: 123)のデータを参照
[excel range="B2" post_id="123"]
3. リンクのURLにセル値を使う
Gutenbergのリンク設定でURLを直接入力する場合、#excel:セル番地 という記法が使えます。the_content フィルターで自動的にセルの値(URL文字列)に置換されます。
// リンクのURL欄に記述する例
#excel:A1
技術的な実装について
プラグインの核心部分を簡単に紹介します。
CBXでExcelを読み込む
require_once CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load( $tmp_path );
$sheet = $spreadsheet->getActiveSheet();
$data = [];
foreach ( $columns as $col ) {
for ( $row = 1; $row <= 300; $row++ ) {
$value = $sheet->getCell( $col . $row )->getValue();
if ( $value !== null && $value !== '' ) {
$data[ $col . $row ] = (string) $value;
}
}
}
CBXが提供する autoload.php を読み込むことで、PhpSpreadsheet のクラスがそのまま使えます。アクティブシートを取得し、A〜AZの列・1〜300行を走査して、空でないセルだけを連想配列に格納します。
post_metaに保存する
update_post_meta( $post_id, 'excelrange_import', $data );
取得したセルデータをWordPressの post_meta に保存します。キーは 'A1' 'B2' などのセル番地、値はセルの文字列値です。
ショートコードで取り出して出力する
function exrg_excel_shortcode( $atts ) {
$atts = shortcode_atts( [ 'range' => '', 'post_id' => 0 ], $atts, 'excel' );
$post_id = $atts['post_id'] ? (int) $atts['post_id'] : get_the_ID();
$data = get_post_meta( $post_id, 'excelrange_import', true ) ?: [];
return $data[ strtoupper( $atts['range'] ) ] ?? '';
}
add_shortcode( 'excel', 'exrg_excel_shortcode' );
ショートコードで指定されたセル番地をキーに、post_meta から値を取り出して返します。同一ページ内の複数呼び出しに備え、static $cache で取得結果をキャッシュしています。
注意事項
- インポートできる範囲はアクティブシートの A1〜AZ300 です
- セル内のHTMLタグやJavaScriptコードもそのまま出力されます。値の安全性は自己責任で確認してください
- インポートを実行すると既存データは上書きされます
ダウンロード
ExcelRangeは無料でダウンロードできます。
有償サポートやカスタマイズをご希望の方は、弊社サポートページ からお問い合わせください。
自己紹介
インディーズでミュージシャンをやっていたのですがいつのまにか…
とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。
「Excel VBA」からスタートして、Yamaha RTX シリーズで VPN環境構築、Hyper-V環境構築、Windowsアプリ開発などを経験した後、「 WordPress 」に出会い、どっぷりハマっています。
現在勤めているETBS合同会社では、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。
宮崎県 都城市 出身。東京都 葛飾区 在住。現在、代表兼二児のパパ。子育てを通じて、こどもたちにもプログラミングの楽しさに触れてほしいと思うようになり、「 こどもICTかつしか教室 」を開講中。最近は童心に帰り、簡単なゲーム制作なんかも楽しんでいます(^_^)。







コメントを残す