プログラミングバイト三、四日目「WordPress!!」
こんにちは。ちっちゃくらです。
学校のテストでブログがかけないうちに、プログラミングバイトに2回行きました。
そのご報告です!
「Accessの使い方知ってる〜?」
「じゃあ、データベースを作ってもらおうか〜〜!」
という一言で始まった三日目のバイト。
え?とうやってデータを移行するんですか・・・?
という戸惑いが僕を襲います。CSVで入れたらいいらしいのですが、僕はそのやり方が全くわかりません。社長にその旨を伝えると、
「MicrosoftのAccessってのがあるんやけど、使い方分かる?」
と言われました。わかりません!と潔く答えると、使い方を丁寧に教えてくれました。
すごい!すごいです!Access!これがあればデータベース管理が楽々!
プログラミングバイトをしなかったらおそらく、Accessを触ることなんてなかったでしょう。 本当に感謝です。
「サーバーにデータを入れよう」
そうしてAccessで、自社のサーバーからデータベースを引っ張ってきて、使いたいデータ構造を作った後、phpMyadminを使いcsvデータを一括で入れ込みました。
Wordpressを入れているサーバーのMysqlにデータを入れました。WordPressが使っているデータベースとは別のデータベースを作って、そこに入れました。
WordPressで異なるデータベースにアクセス
その後、Wordpress上でデフォルトではないデータベースに接続して、データを引っ張ってくる機能を加えました。
実現したかったのは、
・記事作成時に、ショートコードを使ってデフォルトではないデータベースに接続する
・ショートコードに、引数としてIDを与えて、対応するIDのデータを表示する
って機能でした。
$wpdbを使う
簡単にできるかなー。と思ったのですが、案外時間がかかりました。
実現したのは以下の仕組みです。
functions.phpファイルの中に、$wpdbクラスの変数を新たに作成します。その変数として設定するものは、新たに接続したいデータベースのサーバー名と、そのユーザー名やパスワードなどです。
新たにショートコードを作成します。そのショートコード内で、上に記述した$wpdbクラスの変数をglobal宣言をしたのち、その変数でデータベースに接続し、データを取ってきます。
取ってきたデータはオブジェクト型で保存されているので、そこからうまくデータをとりだし、return文の中身を、表示したいhtmlコードにして返します。
一からやったことはなかったのですが、調べながらなんとかここまで実装できました。
とりあえずアクセス成功
アクセスは成功して、とりあえずのデータ表示はできました。
しかし、そこで時間がなくなってしまったので、続きは次回に持ち越しになりました。
〜四日目〜
ショッピングカートを作ろう
四日目は、Wordpressにショッピングカートを実装しました。
これがなかなか難しかった・・・!
WordPressでjQuery,Ajaxを使う
え?私の技術力、不足すぎ・・・!?
Wordpressで実現したかった機能を詳しく書くと、
・Wordpressで作った商品ページの、「カートに入れる」ボタンを押すと、ショッピングカートに商品が入り、画面上のカートボタンの商品数が増える。
といったものでした。
ショッピングカートの中身の実現には、セッション関数を使うことにしました。
また、ボタンを押した後の挙動については、jQueryとAjaxを使って制御することにしました。
なんですけど・・・。
まずjQueryが動かない
ボタンを押したらjQueryが動くよう、サンプルのjQueryコード(ボタンを押すとアラート画面で「hello」と表示されるもの)を実装しようと挑戦しました。
ですがこれがなかなか難問でした・・・。WordpressでjQueryを使おうとすると、通常のhtmlファイルでは気にしないポイントを気にしなければならなかったんです・・・。
通常なら、jqueryのコードは<head>タグ内に書き込みます。javascriptと同じように。ですが、wordpressに書くときは、それではいけなかったです。functions.phpの中にあるheadタグが書き込まれるときに読み込まれるコードの中にjQueryを書かなければいけなかった。
単純にそれを意識すればよかったのですが、それを実装するために数時間かかってしまいました。
(他にも意識したポイントがあった気がします、が、忘れました・・・)
WordPressでセッション関数を使う
どこでスタートすればいいのぉぉぉ!!!
そして何よりも、セッション関数を実現するのが難しかったです。
PHPでセッション関数を使うには、「session_start」的なものを書かなければいけないのですが、Wordpressではその起動場所にコツがありました。
とにかく何よりも早くセッションのスタートを実現しなければいけなくて、そのためにはfunctions.php内に、「何よりも早く」実行されるfunctionを書かなければいけなかった。
そのことに気づいて実装するのに半日・・・。
なんとかセッション関数が使えるようにはなりましたが、時間がかかりすぎた・・・。
Ajaxを使うのも
Ajaxを使うときには、送信先のファイル名を指定しなければいけません。Wordpressではその送り先を、admin_ajax.php(だったけ)にしなければいけなくて、それを実現するのにもやはり、functions.phpにそれ用のコードを書き足さねばならず・・・。
あー時間がかかった。
まとめ
とても雑な文章になってしまいました。
自分のやったことのない機能を実装するのは、とても時間がかかります。
ですが、とても勉強になります。
本当に、感謝。
スポンサーリンク