@jim0912さんからのバトンを受けて、WordPress Advent Calendar 2011 の5番バッターを担当させていただきます。確認さんこと@horike37です!
僕のテーマは「WordPressAPIでハッピーになろう!」というタイトルで開発よりの記事を書きます!
WordPressでプラグインを作成する時はWordPressから便利なAPIが提供されています。しかし、そのほとんどは英語のcodexにしかなかったりと日本語の情報はなかなかみつかりません。しかし、コアから提供されてるAPIを正しく継承してプラグインを作成すると作る工数が大幅に下がったり、メンテナンス性が大幅に向上したり、使用するユーザのユーザビリティが向上したりといいことづくめなのです!
今回はそんな素敵なAPIを2つ紹介します!
WP List Table
これは管理画面にて投稿一覧のようなページを作成するために用意されたクラスです。要は管理画面にて一覧ページを実装するために用意されたクラスのことですね。こちらはWordPress3.1から実装されている機能ですね。
関数リファレンス/WP List Table
以下のような形でクラスを継承して各メソッド、プロパティをオーバーライドしていくという方法で実装を行います。
class Example_List_Table extends WP_List_Table {}
$example_lt = new Example_List_Table();
実際の使用方法についてですが、Custom List Table Exampleというプラグインがありまして、これはWP List Tableクラスの使い方の実装例を提示しているプラグインです。このソースを自分のプラグインのソースにコピペして適宜変更していけば、あっという間に一覧ページができちゃいます!一覧ページのUIは投稿一覧の形式にしてあげた方がユーザビリティも向上しますからね!
以下が例で作った一覧画面です。

カスタム投稿タイプ
つづいてはカスタム投稿タイプです。
こちらはWordPress3.0から実装された機能ですが、wp_postsとwp_postmetaテーブルを使用してデータを格納してやろうという考え方です。作成しているプラグイン独自のカスタム投稿タイプを定義して、以下のようにwp_insert_post()関数を使用してwp_postsテーブルにデータを格納します。これで親となるデータの登録は完了します。
$post = array( 'post_type' => 'カスタム投稿タイプ名', 'post_status' => 'publish', 'post_title' => 'タイトル' ); $post_id = wp_insert_post( $post );
さらに親に紐づいた子データをwp_post_metaに登録します。こちらは配列をそのままシリアライズした形でデータを登録できるので、データを配列としてどう表現するのかがデータ設計のきもになりますね。こちらもupdate_post_meta(‘wp_postsのID’, ‘キー’, ‘登録したいデータの配列’)関数を呼び出して必要なデータを登録していきます。実装例としては以下のような形ですね。
$post_id = wp_insert_post( $post );
if ( $post_id ) {
update_post_meta( $post_id, 'name', $name );
update_post_meta( $post_id, 'validation', $_POST['validation'] );
update_post_meta( $post_id, 'admin_mail', $_POST['admin_mail'] );
update_post_meta( $post_id, 'form_admin', $_POST['form_admin'] );
update_post_meta( $post_id, 'form_front', $_POST['form_front'] );
}
なぜ、カスタム投稿タイプとしてデータを登録するメリットですが、以下のとおりです。
- 独自テーブルを持たせると、テーブル構造を変更したい場合バージョンアップの際にalter table文を都度発行しなくてはいけなくなる
- エクスポート・インポート機能が使える
- get_posts関数を使用してテーマ側(フロントページ)にてデータを表示させることができる
- SQL文を書かなくて良いので、実装が楽
ね?いいことずくめだと思いませんか!?
ですので、ある程度複雑なデータをプラグインにもたせたい場合はまず、カスタム投稿タイプとして、どのようにデータをもたせるのかを考えるとすごくハッピーになれますよ!
私の記事は以上です。
さてWordPress Advent Calendar 2011の6番目の担当の方は。。。@Stocker_jpさんでえす!よろしくお願いします(*´∀`*)
WordPressAPIでハッピーになろう! http://t.co/tKTmim9P via @horike37
WordPress Advent Calendar 2011でブログった!!
WordPress Advent Calendar 2011、5日目キター! WordPressAPIでハッピーになろう! http://t.co/X8LK6bGg via @horike37 でも明日は @Stocker_jp さんだよー!
WordPressAPIでハッピーになろう! http://t.co/8RWoCtYo via @horike37
WordPressAPIでハッピーになろう! http://t.co/tKTmim9P via @horike37
WordPress Advent Calendar 2011でブログった!!
WordPressAPIでハッピーになろう! http://t.co/Wzo0xaDU via @horike37
WordPressAPIでハッピーになろう! http://t.co/UCYvhmbr
@bcures これっす♪つhttp://t.co/3VgcPIZd
WP List Table+カスタム投稿タイプ「」 カスタム投稿タイプとしてデータを登録するメリット WordPressAPIでハッピーになろう! http://t.co/nBIGU1Sq via @horike37
ブログ初めて見た!!/WordPressAPIでハッピーになろう! http://t.co/rdsApIfP via @horike37
WordPress Advent Calendar 5日目 – WordPressAPIでハッピーになろう! « webの日記 http://t.co/vNfZn361
WordPress Advent Calendar 5日目 – WordPressAPIでハッピーになろう! « webの日記 http://t.co/vNfZn361
WordPress Advent Calendar 5日目 – WordPressAPIでハッピーになろう! « webの日記 http://t.co/vNfZn361
[...] ※ カスタム投稿タイプについては、先日アドベントカレンダー5日目担当の確認さん (@horike37) がプラグイン内での使い方に触れて、実装例やデータ側からのメリットも書かれていました。そちらもご覧ください! [...]
3.1からはWpListTableなるものがあると
3.1からはWpListTableなるものがあると / “WordPressAPIでハッピーになろう! « webの日記” http://t.co/k9wz2Rsd
[*wordpress][*tips] / “WordPressAPIでハッピーになろう! « webの日記” http://t.co/9t0VXkek
great to meet you horike.lolipop.jp admin found your blog via search engine but it was hard to find and I see you could have more visitors because there are not so many comments yet. I have discovered website which offer to dramatically increase traffic to your website http://xrumerservice.org they claim they managed to get close to 1000 visitors/day using their services you could also get lot more targeted traffic from search engines as you have now. I used their services and got significantly more visitors to my website. Hope this helps
They offer most cost effective backlinks Take care. Jason
I appreciate all the effort you put into writing this post about Walk 4 Good Feed Reader – The latest news feeds and Url Shortener feed viewer read any feed find any feed twitter feed facebook feed craigslist feed . I will post a backlink back to your blog on my website as I think some of my clients might find it interesting.