MTS Simple Bookingの有料版 で予約一覧を並び替える方法 ― PHP本体の並び替えと JavaScript 表示ソートの正しい使い分け ―
⚠ 対応プラグインについての重要な注意
※本記事は MTS Simple Bookingの有料版 専用 です。
MTS Simple Booking-Cの無料版 には対応していません。
※本記事は実運用で詰まった方向けの技術メモです。実際の環境やカスタマイズ状況によっては、そのまま適用できない場合があります。
ここから先は環境依存になります。個別条件が絡む場合は、無理に触らず専門対応を検討してください。
1 並べ替えをしたい
WordPressの予約プラグイン MTS Simple Booking(有料版) を使っていると、管理画面や一覧ページで
- 予約ID順に並べたい
- 予約時間順で見たい
- 列をクリックして並び替えたい
といった要望が出てきます。
この記事では、
「PHPで本体データを並び替える方法」と
「JavaScriptで画面上だけ並び替える方法」の違いと、
それぞれの正しい使い所を解説します。
2 結論:この2つは役割がまったく違う
| 方法 | 役割 |
|---|---|
| PHP(usortなど) | データそのものの正しい並び順を決める |
| JavaScript | 画面表示をユーザー操作で並び替える |
まず大前提として、PHPの並び替えが「本体」です。
JavaScriptはあくまで「見た目の補助」に過ぎません。
3 ① PHPで予約データを並び替える(本体処理)
MTS Simple Booking(有料版)では、予約一覧を配列として扱っているため、PHPの usort() を使うことで確実に並び替えができます。
3.1 例:予約IDで昇順に並び替える
この方法は、管理画面の表示順だけでなく、CSV出力・帳票・集計結果にも影響するため、JavaScriptでは代替できません。
// ★予約IDで昇順に並べる
usort($filteredBookings, function ($a, $b) {
return (int)$a['booking_id'] <=> (int)$b['booking_id'];
});
この並び替えは、
- 画面表示
- 印刷
- CSV出力
- JavaScriptが無効な環境
すべてに影響します。
「正しい順序を保証したい場合は、必ずPHP側で並び替える」
これが鉄則です。
4 ② JavaScriptで一覧表をクリック並び替え(表示用)
次に、管理画面などで便利なのが
テーブルの列をクリックして並び替える方法です。
これはデータを書き換えるのではなく、
HTML上の行の順番を入れ替えているだけです。
4.1 テーブルクリックで並び替えるJavaScript
<script>
document.addEventListener('DOMContentLoaded', function () {
const table = document.querySelector('table.day-meibo');
if (!table) return;
const ths = table.querySelectorAll('thead th');
let sortDirection = {};
ths.forEach((th, colIndex) => {
th.style.cursor = 'pointer';
th.addEventListener('click', function () {
const tbody = table.querySelector('tbody');
const rows = Array.from(tbody.querySelectorAll('tr'));
const getCellValue = (row) =>
row.children[colIndex]?.textContent.trim() || '';
sortDirection[colIndex] = !sortDirection[colIndex];
rows.sort((a, b) => {
const aVal = getCellValue(a);
const bVal = getCellValue(b);
if (aVal < bVal) return sortDirection[colIndex] ? -1 : 1;
if (aVal > bVal) return sortDirection[colIndex] ? 1 : -1;
return 0;
});
rows.forEach(row => tbody.appendChild(row));
// 矢印表示
ths.forEach((header, i) => {
header.textContent = header.textContent.replace(/[▲▼]/g, '');
if (i === colIndex) {
header.innerHTML += sortDirection[colIndex]
? ' ▲'
: ' ▼';
}
});
});
});
});
</script>
この方法の特徴は、
- PHPに影響しない
- 表示だけが切り替わる
- リロードすると元に戻る
という点です。
5 よくある勘違い
「JavaScriptで並び替えているから、PHPはいらないのでは?」と思われがちですが、それは誤りです。
JavaScriptはあくまで補助であり、
- 検索結果の正当性
- 帳票・印刷
- 不具合時の安全性
これらはPHP側の並び替えがあってこそ成立します。
6 おすすめ構成(実務)
- PHP:基準となる並び順を決める(必須)
- JavaScript:管理画面での操作性向上(任意)
この2つを混同しないことが、
MTS Simple Booking(有料版)を安全にカスタマイズするコツです。
7 まとめ
- 並び替えの本体はPHP
- JavaScriptは表示専用
- 両方を併用すると使いやすくなる
この記事が、MTS Simple Booking のカスタマイズで悩んでいる方の参考になれば幸いです。
⚠ 対応プラグインについての重要な注意
※本記事は MTS Simple Bookingの有料版 の実装解説です。
MTS Simple Booking-Cの無料版 には対応していません。


