WordPressの固定ページ(又は投稿)を利用したアプリケーションの作成
WordPressはカスタマイズも簡単で便利なCMSです。
ブログやホームページをWordPressを利用して公開する事が主な利用方法ではありますが、
ユーザーの操作に合せて、何らかの結果を表示するような、
Webアプリケーションを組み込むことも容易です。(アイディア次第?)
アプリケーションを主としたサイトとして作りながら、
「新着情報はブログ(投稿)、使い方などは固定ページを利用」という
使い方をするとWordPressをオマケとして活用することもできます。
尚、本ページは以下の1コンテンツとして紹介しているものです。
一連の流れは以下をご参照ください。
概要
WordPressの固定ページ(又は投稿)を利用したアプリケーションの作成
WordPressにアプリケーションを組み込むと言っても、
大げさなことをする訳ではありません。
皆大好き「ショートコード」を独自に定義して、
そのショートコードを固定ページや投稿のコンテンツエリアに貼るだけです。
ショートコードが実行するプログラムの内容は人それぞれでしょう。
ショートコードって渡すパラメータが固定になるんじゃないの?
一般的にはショートコードの使い方としては以下のように記載するでしょう。
[shortcode a=123]
記事や固定ページの中に「a=123」と書いてしまっては、
もうそのパラメータに縛られた動作しかしない事になるので、
そう思うのは仕方ないかもしれません。
しかし、ショートコードが受け取れる値は、
当然ショートコードパラメータだけではありません。
GETやPOST、クエリ文字列などPHP(Web)として受け渡せる値を元にして、
挙動を変えるショートコードを作ればいいだけなのです。
その場合、コンテンツエリアからはパラメータを渡す必要は当然なくなります。
[shortcode]
URLからパラメータを受け取り、それを表示する例
以前、投稿内でご紹介したアクセスしたURLによって、
受け取る値が変化し、その値を投稿内のエリアに表示するのが簡単な例です。
以下のリンクから
「https://rensrv.com/2018/05/query_string-approach-is-reversed/」という
投稿のURLにアクセスすると、
投稿内のエリアに「/hogehoge/」部分の「hogehoge」が表示されます。
https://rensrv.com/2018/05/query_string-approach-is-reversed/hogehoge/
同様ですが「あああ」としても同じです。
https://rensrv.com/2018/05/query_string-approach-is-reversed/あああ/
これはURLの一部をパラメータとして利用して、
ショートコードが値を受け取って、表示する簡単なものです。
実際のプログラムを考える
このような仕組みを利用してURLで与えられた日付から、
その日の曜日を画面に表示するプログラムを実装してみます。
尚、以下プログラムの実行環境として、
クエリ文字列の追加とリライトルール定義を済ませている前提です。
WordPressのご利用のテーマディレクトリ内の
functions.phpに対してショートコードを定義します。
個人的にはというか一般的にはテーマをカスタマイズするなら、
子テーマ化をしてから、子テーマのfunctions.phpを編集する事をお勧めします。
子テーマにしたからと言ってミスったら真っ白けっけになるのは同じですので、
併せて、バックアップとローカル環境での十分なテストを行ったうえでアップロードしましょう。
また私は「functions.php」に直接ソースを書かずに、
機能ごとに別のファイルを作り、そのファイルをincludeして利用しています。
1 |
include 'functions_sitemapdemo.php'; |
読み込んでいるファイルは以下のように書いています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
function weekday_demo_handler() { global $wp_query; $wd_ymd=null; $wjp = array('日','月','火','水','木','金','土'); if( isset( $wp_query->query_vars['wd_ymd'])) { $wd_ymd = urldecode (htmlspecialchars($wp_query->query_vars['wd_ymd'])); } if($wd_ymd <> null){ $da = split('/',$wd_ymd); // nnnn/mm/dd しかリライトされない $y = $da[0]; $m = $da[1]; $d = $da[2]; $tdate = new Datetime( "$y-$m-$d" ); $cnv = $tdate->format('Y年m月d日'); //日付生成失敗 if($tdate === false){ return "ご指定の日付({$wd_ymd})では処理ができませんでした。申し訳ありませんがご確認お願い致します。"; } //曜日を求める $wdnum = (int)date_format($tdate, 'w'); $wk = $wjp[(int)$wdnum]; //出力の整形 $res = <<<eof <p>ご指定の日付(<span style="color:blue;font-weight:bold;">{$wd_ymd}</span>)は<span style="color:blue;font-weight:bold;">「{$wk}曜日」</span>でした。<br/> 以下をクリックする事でGoogle先生で答え合わせができます。(グレゴリオ暦ベース)<br/> ※999年以前は正しくない模様・・・そもそも古くは六曜とかですし答えがあるかさえ。。。<br/> <a href="https://www.google.co.jp/search?q={$y}%2F{$m}%2F{$d}+%E6%9B%9C%E6%97%A5&oq={$y}%2F{$m}%2F{$d}%E3%80%80%E6%9B%9C%E6%97%A5" target="_blank">>「{$cnv}」 が本当に<span style="font-weight:bold;">「{$wk}曜日」</span>かをGoogleで確認</a><br/> <a href="https://ja.wikipedia.org/wiki/Wikipedia:%E4%BB%8A%E6%97%A5%E3%81%AF%E4%BD%95%E3%81%AE%E6%97%A5_{$m}%E6%9C%88#{$m}%E6%9C%88{$d}%E6%97%A5" target="_blank">>「Wikipedia:今日は何の日_{$m}月#{$m}月{$d}日」を見てみる。</a></p> eof; return $res; } return print_r(array($wd_ymd),true); } add_shortcode("weekday_demo", "weekday_demo_handler"); |
先に上記ソースの実行イメージを確認するには以下URLで実行の確認ができます。
処理としてはWordPressのグルーバル変数($wp_query)から、
パラメータの「wd_ymd」という値を受け取りサニタイズ処理をして利用します。
取得した日付から曜日を求めて、
固定ページ用の出力としてショートコードへreturnします。
アプリケーションの作成が終われば、機能的には動作します。
ただ直接ユーザーさんがURLを叩くというより、
本来は入力フィールドを設けて、入力値から実行する事が多いはずです。
ここでは目的とは逸脱しますので、その点は割愛させて頂きます。
実際には以下のようなツールになるかと思います。
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: