カクニンプラスのweb日誌

WordPressのことを中心にwebに関することを書いています

WordPressAPIでハッピーになろう!

on 2011年12月5日

@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さんでえす!よろしくお願いします(*´∀`*)

Share on Facebook
このエントリーをはてなブックマークに追加
Post to Google Buzz
Share on FriendFeed
Post to Google Buzz


18 Responses to “WordPressAPIでハッピーになろう!”

  1. horike37 より:

    WordPressAPIでハッピーになろう! http://t.co/tKTmim9P via @horike37
    WordPress Advent Calendar 2011でブログった!!

  2. tekapo より:

    WordPress Advent Calendar 2011、5日目キター! WordPressAPIでハッピーになろう! http://t.co/X8LK6bGg via @horike37 でも明日は @Stocker_jp さんだよー!

  3. d_dp_p より:

    WordPressAPIでハッピーになろう! http://t.co/8RWoCtYo via @horike37

  4. jim0912 より:

    WordPressAPIでハッピーになろう! http://t.co/tKTmim9P via @horike37
    WordPress Advent Calendar 2011でブログった!!

  5. miya0001 より:

    WordPressAPIでハッピーになろう! http://t.co/Wzo0xaDU via @horike37

  6. hironoglyph より:

    WordPressAPIでハッピーになろう! http://t.co/UCYvhmbr

  7. akihiro_wp より:

    @bcures これっす♪つhttp://t.co/3VgcPIZd

  8. bcures より:

    WP List Table+カスタム投稿タイプ「」 カスタム投稿タイプとしてデータを登録するメリット WordPressAPIでハッピーになろう! http://t.co/nBIGU1Sq via @horike37

  9. shinichin より:

    ブログ初めて見た!!/WordPressAPIでハッピーになろう! http://t.co/rdsApIfP via @horike37

  10. wordpress_fan より:

    WordPress Advent Calendar 5日目 – WordPressAPIでハッピーになろう! « webの日記 http://t.co/vNfZn361

  11. 3__3 より:

    WordPress Advent Calendar 5日目 – WordPressAPIでハッピーになろう! « webの日記 http://t.co/vNfZn361

  12. hiro345 より:

    WordPress Advent Calendar 5日目 – WordPressAPIでハッピーになろう! « webの日記 http://t.co/vNfZn361

  13. [...] ※ カスタム投稿タイプについては、先日アドベントカレンダー5日目担当の確認さん (@horike37) がプラグイン内での使い方に触れて、実装例やデータ側からのメリットも書かれていました。そちらもご覧ください! [...]

  14. kanno_kanno より:

    3.1からはWpListTableなるものがあると

  15. kanno_kanno より:

    3.1からはWpListTableなるものがあると / “WordPressAPIでハッピーになろう! « webの日記” http://t.co/k9wz2Rsd

  16. wild_bunch_55 より:

    [*wordpress][*tips] / “WordPressAPIでハッピーになろう! « webの日記” http://t.co/9t0VXkek

  17. 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

  18. seo vancouver より:

    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.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>