※この記事は11年以上前の記事です。
現在は状況が異なる可能性がありますのでご注意ください。
最近少し仕事が空き気味で、調べ物をすることが多い。
そんな今日のプリンです。
んで、今日は、WordPressで一歩踏み込んだ情報を取得する方法を書いていこうと思う。
投稿などの"リビジョン"の情報の取得方法だ。
このリビジョンとは、WordPress上の、
投稿の修正とか、何かの修正とかを保存しとくもので、
要は、データベース上のバックアップとかアンドゥみたいなもの。
便利だけど、データベースを圧迫するので、
増えると動作が重くなったりするらしい。
んで、この情報を引っ張ってくるといった事をする人は少ないのか、
検索しても、リビジョンを削除する方法とか、リビジョンの管理をするプラグイン・・・
といったことしかでてこない。
つまり、本エントリのタイトル通りの事をする方法を見つけるのが大変苦労したので、
備忘録も兼ねて。
はい、前置きが長いですね。
下記スクリプトで取得できます。
<?php global $id; $args = array( 'post_parent' => $id, 'post_type' => 'revision', 'numberposts' => -1, 'post_status' => 'any', ); $st = -1; $images = &get_children( $args, $output); if ( empty($images) ) { $st = 0; } else { foreach ( $images as $attachment_id) { $st = $st + 1; } } echo $st;
大事なのは、&get_children
というWordPress関数。
これは、通常の投稿などの、"子投稿"の情報を取得できるのだ。
なんで、わざわざリビジョンの情報を取ってくるのに、投稿の子情報なのかというと、
WordPress上ではリビジョンも実は投稿として扱われるからだ。
つまり、"投稿のリビジョン"をとってくるには、その投稿と、リビジョンを関連付けた上で取得しなければいけない。
要は"投稿"と"そのリビジョン"は親子関係でなりたっているわけで、
その投稿の子情報の中として、リビジョンが存在するというわけだ。
と、感覚的に書いてるので、わかりづらいかもしれないが、
とかくこれで、その投稿のリビジョンの情報をとってくるには、
この方法でできるわけ。
このget_children、他にも応用ききそうな感じですね。
コメントする