概要
wp_delete_post_revision
関数は、WordPressのリビジョン(投稿の過去のバージョン)を削除するために使用されます。この関数は、リビジョンを収集し、データベース内のストレージを効率的に管理する際に役立ちます。開発者はこの関数を次のような機能を実装する際によく使用します。
- 繰り返しリビジョンを自動的に削除する
- 特定の条件に基づいてリビジョンをフィルタリングする
- 定期的なメンテナンスタスクの一部としてリビジョンを削除する
- エディターや管理インターフェースのカスタマイズ
- データベースの容量を最適化する
- ユーザーがリビジョンを手動で管理できる機能の実装
- データの整合性を保つためのトリミングプロセス
- 投稿のパフォーマンス改善のためのデータ削除
構文
wp_delete_post_revision( $revision_id );
パラメータ
$revision_id
(int): 削除するリビジョンのID。
戻り値
- 成功した場合は
true
、失敗した場合はfalse
。
関連する関数
この関数は、WordPress 2.6.0以降で使用可能です。wp_delete_post_revision
関数は、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. 特定のリビジョンを削除する
このコードは、特定の投稿のリビジョンを削除します。
$revision_id = 123; // 削除するリビジョンのID
$result = wp_delete_post_revision( $revision_id );
if ( $result ) {
echo 'リビジョンが削除されました。';
} else {
echo 'リビジョンの削除に失敗しました。';
}
引用元: https://developer.wordpress.org/reference/functions/wp_delete_post_revision/
2. 投稿のすべてのリビジョンを削除する
このコードは、特定の投稿に関連するすべてのリビジョンを削除します。
$post_id = 123; // 投稿のID
$revisions = wp_get_post_revisions( $post_id );
foreach ( $revisions as $revision ) {
wp_delete_post_revision( $revision->ID );
}
引用元: https://developer.wordpress.org/reference/functions/wp_delete_post_revision/
3. リビジョン削除時のフックを使用する
このコードは、投稿が保存されたときに古いリビジョンを削除します。
function delete_old_revisions( $post_id ) {
$revisions = wp_get_post_revisions( $post_id );
// 上限リビジョン数を超えたリビジョンを削除
while ( count( $revisions ) > 5 ) {
wp_delete_post_revision( array_pop( $revisions )->ID );
}
}
add_action( 'save_post', 'delete_old_revisions' );
引用元: https://developer.wordpress.org/reference/functions/wp_delete_post_revision/
4. 自動で古いリビジョンを削除する
次のコードは、毎分古いリビジョンを自動的に削除するためのCronジョブを設定します。
if ( ! wp_next_scheduled( 'delete_old_revisions_cron' ) ) {
wp_schedule_event( time(), 'hourly', 'delete_old_revisions_cron' );
}
add_action( 'delete_old_revisions_cron', 'delete_old_revisions_callback' );
function delete_old_revisions_callback() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'numberposts' => -1,
);
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$revisions = wp_get_post_revisions( $post->ID );
while ( count( $revisions ) > 5 ) {
wp_delete_post_revision( array_pop( $revisions )->ID );
}
}
}
引用元: https://developer.wordpress.org/reference/functions/wp_delete_post_revision/
5. 失敗した場合のエラーログを記録
このコードは、リビジョンの削除に失敗した場合にエラーログを記録します。
$revision_id = 123; // 削除するリビジョンのID
$result = wp_delete_post_revision( $revision_id );
if ( !$result ) {
error_log( 'リビジョンの削除に失敗しました。ID: ' . $revision_id );
}
引用元: https://developer.wordpress.org/reference/functions/wp_delete_post_revision/