Wordpressの記事の中で独自のmysqlテーブルを操作する
WordPressの記事の中で、mysqlのテーブル操作(検索、更新など)を行うには、どうしたら良いでしょうか?
基本的にWordpressの各テーブルは、Wordpressで用意されているAPI(Wordpressでは、タグと呼ばれているphp関数群)でほとんどの情報を操作することができます。
しかし、独自で作成したmysqlのテーブルはどうでしょう。
それを操作するためのタグ(API)も用意されていますので、今回は、それについて取り上げてみます。
準備
Wordpressで、独自のテーブルを記事の中で操作するには、記事の中でphpが動作するようなプラグインをインストールする必要があります。
以下の記事を参考にプラグインをインストールしましょう。
phpを記事の中で動作させるためのプラグイン記事;WordPressの記事の中でPHPを動作させる
また、その動作確認のためのmysqlのテーブルも用意しておきましょう。
ここでは、mysqlのテーブルは、テスト用として以下のようなものを用意しました。
※以下の例では、SSHなどでサーバーにログインできる場合の例です。
SSHでのログインができないような環境では、phpAdminが使えると思いますので、そこでログインし、SQLを実行すれば同じことができます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| > mysql -uxxx -pyyy -Dzzz
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.36-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE `test_run_post` (
-> `strkey` varchar(32) ,
-> `numkey` int ,
-> PRIMARY KEY (`strkey`) );
Query OK, 0 rows affected (0.11 sec)
mysql>
|
| 1 行目 : |
-uxxx : ログインユーザ名を指定します。xxx がユーザ名になります。
-pyyy : ログインユーザのパスワードを指定します。yyy がパスワードになります。
-Dzzz : 利用するデータベース名を指定します。zzz がデータベース名になります。
注意
ここで利用するデータベース名は、WordPressで使用しているデータベース名と同じものを使います。
|
| 8 行目 : |
実際にテーブルを作成しています。sql文です。
CREATE TABLE `test_run_post` (
`strkey` varchar(32) ,
`numkey` int ,
PRIMARY KEY (`strkey`) );
|
簡単なテーブルです。
strkey : 文字列
numkey : 数値
2つの情報だけです。
|
WordPressの記事の中でテーブルを操作してみましょう
Wordpressの記事の中でテーブルを操作するには、先のプラグインを有効にして、記事の中で実際に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
35
36
37
| <?php
global $wpdb;
$html = '';
// delete all table values.
$sql = 'DELETE FROM `test_run_post`';
$query_result = $wpdb->query($sql);
if($query_result!==false){
// OK
// insert table values.
for($ni=1;$ni<10;$ni++){
$sql = "INSERT INTO `test_run_post`(`strkey`,`numkey`) values('testkey".$ni."',".$ni.")";
$query_result = $wpdb->query($sql);
if($query_result===false){
$html .= "*** table insert error\n$sql";
break;
}
}
if(empty($html)){
// no-error
// print table values.
$html .= '<table><tr><td><b>strkey</b></td><td><b>numkey</b></td></tr>';
$sql = 'SELECT * FROM `test_run_post`';
$results = $wpdb->get_results($sql , ARRAY_A);
foreach($results as $row){
$html .= '<tr><td>'.$row['strkey'].'</td><td>'.$row['numkey'].'</td></tr>';
}
$html .= '</table>';
}
} else {
$html .= "*** table delete error\n";
}
// print out results.
echo $html;
?>
|
| 1 行目 : |
WordPressでmysqlを扱うときのデータベースオブジェクトになります。
Global宣言することで、ここで使えるようになります。
|
| 5-6 行目 : |
一旦、テスト用テーブルの値を全削除します。
|
| 10-17 行目 : |
テスト用テーブルにテスト用の値を9レコード分を追加します。
|
| 19-29 行目 : |
テスト用テーブルの全データをHTML形式で出力します。
|
これを実際に動作させると以下のようになります。
| strkey |
numkey |
| testkey1 |
1 |
| testkey2 |
2 |
| testkey3 |
3 |
| testkey4 |
4 |
| testkey5 |
5 |
| testkey6 |
6 |
| testkey7 |
7 |
| testkey8 |
8 |
| testkey9 |
9 |
ちょっと、長めですけど、データベースの操作について一通りのことをやってます。
ここでは、記事の中で実行する例を記載していますが、テーマテンプレートの中でも、同様にして動作させることができます。
これを駆使すれば、Wordpressと独自のデータを結合させて、情報の更新を簡単にできるようになります。
この記事を読んだ人は、こんな記事も読んでいます。:
コメント
2011年07月19日 @ 20:51:09
Good one.This is veryhelpful for the wordpress beginners.Thanks for such a interesting tutorial.
2011年08月04日 @ 17:55:52
This is Admin.
Thanks.