WordPress – どこからでも自由にモーダル画面を表示できるようにする!

皆さん、こんにちはこんばんは。

WordPressの管理画面でモーダル画面を表示させたいな〜と思い、せっかくならどこの画面からでも呼び出せるようにしたいと思ったので、
今回はWordpressでどこからでもモーダル画面を表示できるような実装をご紹介したいと思います。

想定するパターン

まずモーダル画面を表示させるのに想定しているパターンとしては、以下の通りです。

静的コンテンツを表示させる

動的コンテンツを表示させる

上記2パターンを想定したモーダル画面の実装を行なっていきたいと思います。
内容としては静的コンテンツはjsでそのまま作ったhtmlを表示させる方法で、動的コンテンツはサーバーからhtmlデータを取得し表示させる方法となります。

どちらにも対応できるような仕組みを作っていきます。

jsの処理を実装

モーダル画面の実装のメインとなるjsの処理を作っていきます。

実装はObject形式で設定をしており”modalObj”という変数をグローバル化させてどこからでも呼び出せるようにしておきます。
外部から”modalObj.open”や”modalObj.close”のメソッドをそれぞれ呼び出すとモーダル画面を表示させたり非表示にできます。
APIの処理には”fetch”を使っていますが、jQueryのajaxの方がやりやすい方はそちらで実装してもらっても同じことはできるようになります。

実際に呼び出す側の実装も行っていきます。

基本はオプションの中身を上書きする仕組みで動作させることができ、コールバックの仕組みも用意しているので柔軟性が高まります。

※サンプルコードでは動的コンテンツの場合レスポンスで返却する際は”html”プロパティを追加しそちらにhtmlデータを格納する必要があります。
ここはレスポンス形式をjsonではなくtextで返却してもらっても良いですし自分がやりやすいような形式にしてもらえればと思います。

ただ、これだけではページ下部にコンテンツが追加されるだけですのでcssを充ててしっかり画面上にモーダル画面を表示できるようにします。

最低限こちらのcssがあればしっかりモーダル画面の実装が行えるようになります。

これでモーダル画面を表示する処理は整いましたのでWordpressで読み込ませていきます。

WordPressに用意したjsとcssを読み込ませる、エンドポイントを作る

管理画面でどこからでもモーダル画面を表示できるようにすることが今回のメインテーマとなりますので、グローバルに読み込ませていきAPIのエンドポイントも作っておきます。

現在利用しているテーマの”functions.php”に以下の行を追加しましょう。

これで全てのページへアクセスした時に読み込まれるようになるのでどこからでもモーダル画面を表示させることができます。
“path/to”となっている箇所はプロジェクトに合わせて変更してください。

実際にモーダル画面を表示させるとこのようになります。

最後に

いかがでしたでしょうか。
モーダル画面を都度都度作るのって大変ですし時間も勿体無いですよね。このように1つにまとめてしまえばいつでも呼び出せたりどこでも使えるようになるのでかなり便利ですね。

また、こちらを応用すれば公開画面にも適用することが出来るのでUI向上にも繋がってくるのでみなさんも是非試してみてください。

タイトルとURLをコピーしました