ワードプレスのwp_delete_post_revision関数の使用方法・解説

概要

wp_delete_post_revision 関数は、WordPressのリビジョン(投稿の過去のバージョン)を削除するために使用されます。この関数は、リビジョンを収集し、データベース内のストレージを効率的に管理する際に役立ちます。開発者はこの関数を次のような機能を実装する際によく使用します。

  1. 繰り返しリビジョンを自動的に削除する
  2. 特定の条件に基づいてリビジョンをフィルタリングする
  3. 定期的なメンテナンスタスクの一部としてリビジョンを削除する
  4. エディターや管理インターフェースのカスタマイズ
  5. データベースの容量を最適化する
  6. ユーザーがリビジョンを手動で管理できる機能の実装
  7. データの整合性を保つためのトリミングプロセス
  8. 投稿のパフォーマンス改善のためのデータ削除

構文

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/

この関数について質問する


上の計算式の答えを入力してください