HOME>WEBプログラム覚書>[WordPress3.5] WP_Post

[WordPress3.5] WP_Post

WordPress 3.5で$postの型がstdClassからWP_Postに変更になったのでメモ。

WP_Post

public WP_Post::get_instanse($id)

int $id
投稿ID

投稿IDからWP_Postオブジェクトを作成

作成されたオブジェクトはこんな感じ。

WP_Post プロパティ

  1. <?php
  2. object(WP_Post)[1852]
  3.   public 'ID' => int 1
  4.   public 'post_author' => string '1' (length=1)
  5.   public 'post_date' => string '2012-12-27 16:22:35' (length=19)
  6.   public 'post_date_gmt' => string '2012-12-27 16:22:35' (length=19)
  7.   public 'post_content' => string 'WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください !' (length=126)
  8.   public 'post_title' => string 'Hello world!' (length=12)
  9.   public 'post_excerpt' => string '' (length=0)
  10.   public 'post_status' => string 'publish' (length=7)
  11.   public 'comment_status' => string 'open' (length=4)
  12.   public 'ping_status' => string 'open' (length=4)
  13.   public 'post_password' => string '' (length=0)
  14.   public 'post_name' => string 'hello-world' (length=11)
  15.   public 'to_ping' => string '' (length=0)
  16.   public 'pinged' => string '' (length=0)
  17.   public 'post_modified' => string '2012-12-27 16:22:35' (length=19)
  18.   public 'post_modified_gmt' => string '2012-12-27 16:22:35' (length=19)
  19.   public 'post_content_filtered' => string '' (length=0)
  20.   public 'post_parent' => int 0
  21.   public 'guid' => string 'http://35.wordpress.com/?p=1' (length=28)
  22.   public 'menu_order' => int 0
  23.   public 'post_type' => string 'post' (length=4)
  24.   public 'post_mime_type' => string '' (length=0)
  25.   public 'comment_count' => string '1' (length=1)
  26.   public 'filter' => string 'raw' (length=3)
  27. ?>

stdClassの時と基本的にはpublicなプロパティは変更ない感じだが $filterってのが新しいっぽい??

public WP_Post::__constract($post)

$post
たぶんWP_Post

投稿IDからWP_Postオブジェクトを作成

ふぁっ!?

public・・・??しかも引き数$postってWP_Postオブジェクトってこと?? WP_Postオブジェクトを生成するためにはWP_Postオブジェクトをささげる必要があるって ことになるんだけど、どういうことなんだろうか。

実際のコードがこんな感じで、もうどうしていいのかわからないので見なかったことにしようと思います。

WP_Post::__constract

  1. <?php
  2. public function __construct( $post ) {
  3.     foreach ( get_object_vars( $post ) as $key => $value )
  4.         $this->$key = $value;
  5. }
  6. ?>

とりあえずnewしないで普通にget_instanseを使うのがよいと思います。

public function filter( $filter )

string $filter
raw - 数値フィールドの値のみ無害化
edit - 各種フィルターフックで無害化
db - 各種フィルターフックで無害化
display - 数値フィールドの値のみ無害化
attreibute - esc_attr() で無害化
js - esc_js() で無害化

最終定期にはDocs for page post.phpに行き着く。

public function __get( $key )

string $key

マジックメソッドのオーバーロード

public function __isset( $key )

string $key

マジックメソッドのオーバーロード

public WP_Post::to_array()

WP_Postのプロパティに加えancestors、page_template、post_category、tags_inputってプロパティが存在した場合その値も追加した配列を返す。 __set()を見る限りpage_template以外は必ず追加されるっぽい。

WP_Post::to_array()

  1. <?php
  2. array
  3. 'ID' => int 1
  4. 'post_author' => string '1' (length=1)
  5. 'post_date' => string '2012-12-27 16:22:35' (length=19)
  6. 'post_date_gmt' => string '2012-12-27 16:22:35' (length=19)
  7. 'post_content' => string 'WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください !' (length=126)
  8. 'post_title' => string 'Hello world!' (length=12)
  9. 'post_excerpt' => string '' (length=0)
  10. 'post_status' => string 'publish' (length=7)
  11. 'comment_status' => string 'open' (length=4)
  12. 'ping_status' => string 'open' (length=4)
  13. 'post_password' => string '' (length=0)
  14. 'post_name' => string 'hello-world' (length=11)
  15. 'to_ping' => string '' (length=0)
  16. 'pinged' => string '' (length=0)
  17. 'post_modified' => string '2012-12-27 16:22:35' (length=19)
  18. 'post_modified_gmt' => string '2012-12-27 16:22:35' (length=19)
  19. 'post_content_filtered' => string '' (length=0)
  20. 'post_parent' => int 0
  21. 'guid' => string 'http://35.wordpress.com/?p=1' (length=28)
  22. 'menu_order' => int 0
  23. 'post_type' => string 'post' (length=4)
  24. 'post_mime_type' => string '' (length=0)
  25. 'comment_count' => string '1' (length=1)
  26. 'filter' => string 'raw' (length=3)
  27. 'ancestors' =>
  28.     array
  29.         empty
  30. 'post_category' =>
  31.     array
  32.         1 => string '1' (length=1)
  33. 'tags_input' =>
  34.     array
  35.         empty
  36. ?>

まだまだ微妙な感じなので今後に期待ってことで、まだ今は自分でラッパー書いておくといいと思います。

参照サイト
投稿日 2013年1月 8日 03:40
カテゴリ PHP
タグ WordPress | 関数
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1318

コメント

コメントする
Name
Email Address
URL