概要
wp_get_post_revisions
関数は、指定された投稿のリビジョン情報を取得するために使用されます。この関数は、過去のバージョンを参照したり、比較したりする際に便利です。具体的には、以下のような機能を実装する際に使用されることが多いです。
- 投稿の履歴を表示する
- 過去のリビジョン間での差分チェック
- 管理画面でリビジョンの一覧表示
- 特定のリビジョンに基づく投稿の復元
- リビジョンごとのメタデータ表示
- 投稿編集時の自動保存履歴の解析
- プラグインによるリビジョン管理機能の拡張
- テーマ開発時の投稿履歴機能の実装
構文
wp_get_post_revisions( int $post_id, array $args = array() );
パラメータ
post_id
(int): リビジョンを取得したい投稿のID。args
(array, optional): リビジョンの取得に関するオプション引数。
戻り値
- 取得したリビジョンの配列または空の配列。
関連する関数
使用可能なバージョン
この関数は WordPress 3.6.0 以降で利用可能です。
コアファイルのパス
wp-includes/post.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 一般的なリビジョンの取得
このコードは、投稿IDからすべてのリビジョンを取得し、タイトルを表示します。
$post_id = 123; // 取得したい投稿のID
$revisions = wp_get_post_revisions($post_id);
foreach ($revisions as $revision) {
echo '<h2>' . get_the_title($revision->ID) . '</h2>';
}
サンプルコード2: リビジョン数の制限付き取得
このコードは、投稿のリビジョンを取得し、最新の5件のリビジョンを表示します。
$post_id = 123; // 取得したい投稿のID
$args = array('numberposts' => 5);
$revisions = wp_get_post_revisions($post_id, $args);
foreach ($revisions as $revision) {
echo '<h2>' . get_the_title($revision->ID) . '</h2>';
}
サンプルコード3: 特定のリビジョンの取得
このコードは、特定のリビジョンIDを使用して、そのリビジョンの内容を表示します。
$revision_id = 456; // 取得したいリビジョンのID
$revision = wp_get_post_revision($revision_id);
if ($revision) {
echo '<h2>' . get_the_title($revision->ID) . '</h2>';
echo '<div>' . apply_filters('the_content', $revision->post_content) . '</div>';
}
サンプルコード4: リビジョンのメタデータ表示
このコードは、リビジョンのメタデータを取得して表示します。
$post_id = 123; // 取得したい投稿のID
$revisions = wp_get_post_revisions($post_id);
foreach ($revisions as $revision) {
echo '<h2>' . get_the_title($revision->ID) . '</h2>';
echo '<p>' . get_post_meta($revision->ID, '_edit_last', true) . '</p>'; // 最終編集者
}
サンプルコード5: リビジョンの復元
このコードは、リビジョンを復元するための簡単な実装例です。
$revision_id = 456; // 復元したいリビジョンのID
$revision = wp_get_post_revision($revision_id);
if ($revision) {
// 投稿を復元する
wp_update_post(array(
'ID' => $revision->ID,
'post_content' => $revision->post_content,
));
}