【スポンサーリンク】

WordPressの古いリビジョンをまとめるカスタムプラグインを作った

WordPressの古いリビジョンをまとめるカスタムプラグインを作った
  • WordPressの古いリビジョンを整理するカスタムプラグインを作成しました。
  • このプラグインは一週間以上前のリビジョンから日ごとに最新の一つだけを残し、データベースの肥大化を防ぎます。
  • 管理画面からリアルタイムで進行状況を確認でき、毎日自動実行されるため効率的なサイト管理ができます。
WordPressの古いリビジョンをまとめるカスタムプラグインを作った

WordPressの記事保存の処理は、体感ではそこまで速くはなりませんでした。

\記事が役に立ったらシェアしてね/
免責事項

なるべく正確な情報になるよう努力していますが、個々のPC/スマホにより状況は異なり、結果の保証はできません。
操作の際には、十分に注意の上、ご自身の判断と責任で行っていただくようお願いいたします。

【スポンサーリンク】

1. 編集履歴を管理するプラグインを作った

WordPressで記事を保存する処理が遅くなってきた気がします。
リビジョン(編集履歴)が増えていることが原因と考え、古いリビジョンを整理するカスタムプラグインを作りました1
一週間以上前のリビジョンは一日あたり最新の一つだけを残し、他は自動的に削除します。

編集履歴を管理するプラグインを作った

これにより、データベースの肥大化を防ぎ、サイトの動作を軽快に保ちます。

1-1. プラグインのファイル構成

プラグインは、以下の構造でファイルを配置しました。

プラグインのファイル構成

これ圧縮して「wp-content/plugins」ディレクトリにインストールします。

プラグインのファイル構成

プラグインの誤動作に備えて、サイト全体のバックアップを作成したり、検証用WordPressサイトでテストしたりしました。

「Chiilabo Revision Cleaner」を有効化すると、メニューの「ツール」に「リビジョン整理」という項目が追加され、管理画面にアクセスできるようになります。

プラグインのファイル構成
プラグインのファイル構成

このカスタムプラグインはサンプルコードです。
動作の保証はできません。

自分で作ったほうが良いと思います。

1-2. 【残念】リビジョンを削除できたが効果は薄かった

リビジョンを削除する処理には時間がかかりましたが、ちゃんと減っていました。

【残念】リビジョンを削除できたが効果は薄かった

ただし、思ったほどの効果はありませんでした。
記事保存中にかかる時間はやはり20秒ぐらいかかっています。

【残念】リビジョンを削除できたが効果は薄かった

リビジョンデータのサイズはそこまで大きくなく、バックアップサイズに与える影響もわずかでした。

2. 主な機能と使い方

このプラグインには以下の機能があります:

  • 一週間以上前のリビジョンを自動整理(各日付の最新1件のみ保持)
  • 毎日午前3時に自動実行
  • 「今すぐ実行」ボタンによる手動実行
  • 実行履歴の確認機能
  • リアルタイムの進行状況確認

2-1. 進行状況の確認方法

  1. 管理画面の「今すぐ実行」ボタンをクリック
  2. 「バックグラウンドで実行」(デフォルトでオン)のまま実行
  3. 進行状況確認画面で処理状態を確認

進行状況画面では:

  • 3秒ごとの自動更新で最新状態を表示
  • 手動更新ボタンでも状態更新可能
  • 全体の進捗状況を表示
  • 直近の処理内容を色分けして表示(削除/保持)
  • 処理完了時に自動更新停止

2-2. 実行中の動作確認

このプラグインは、ブラウザを閉じても問題なく動作します。
WordPress標準のCronシステム(WP-Cron)を使用しているため、管理画面を閉じた後でも自動実行は継続されます。

プラグインがセットアップしたCronジョブは、WordPress自体の仕組みの中で管理されます。
次回サイトへのアクセス時に、予定時刻を過ぎていれば実行されます。

手動実行の場合は、「今すぐ実行」ボタンを押した後、処理が完了するまでページを開いておく必要があります。

注意点:

  • WordPressのCronはサイトへのアクセスがあった時のみ実行されます
  • アクセスが長期間ない場合、スケジュール通りに実行されない可能性があります
  • より正確な実行が必要な場合は、サーバーのCronで「wp-cron.php」を直接実行するよう設定できます

3. プラグインの構造と仕組み

プラグインは複数のファイルに分かれており、それぞれが特定の役割を担っています。

wp-revision-cleaner/
├── wp-revision-cleaner.php
├── includes/
│   └── class-revision-cleaner.php
└── admin/
    ├── class-admin-page.php
    ├── css/
    │   └── admin-style.css
    └── js/
        └── admin-script.js
  • メインファイル(wp-revision-cleaner.php)は、プラグインの入り口となるファイルです。
    定数の定義や必要なファイルの読み込み、プラグインの有効化・無効化・削除時の処理などを行います。
  • 機能実装ファイルは二つあります。
    「class-revision-cleaner.php」はリビジョン削除の中心的な機能を提供します。
    古いリビジョンを検索して整理するための処理や、データベース操作、結果の記録などを行います。
    「class-admin-page.php」は管理画面の表示を担当します。
    メニュー項目の追加や実行結果の表示、履歴の管理などを行います。
  • アセットファイルも二つあります。
    「admin-style.css」は管理画面のデザインを定義します。
    「admin-script.js」は詳細表示の切り替えや実行前の確認など、画面の動作を制御します。
プラグインの構造と仕組み

Claudeの生成するコードは、だいぶ大がかりなものになってきたね。

3-1. 処理の流れ

プラグインの動作は次のような流れで行われます。

  • 初期化時には、WordPressがプラグインのメインファイルを読み込み、必要なクラスファイルが準備されます。
    プラグイン有効化時には、定期実行のためのスケジュールが登録されます。
  • 定期実行時には、WordPressのCron機能が「daily_revision_cleanup」アクションを実行し、古いリビジョンの検索と整理が行われます。
    処理結果はログに記録されます。
  • 管理画面にアクセスすると、次回の実行予定や過去の実行履歴が表示されます。
    「今すぐ実行」ボタンも表示されます。
  • 手動実行時には、フォーム送信によりリビジョン整理処理が実行され、結果ページにリダイレクトされます。
  • プラグイン無効化時には、登録されたCronジョブが削除されます。
    プラグイン削除時には、保存されたオプションデータも削除されます。
  • バックグラウンド実行モードでは、実行ボタンの下に「バックグラウンドで実行」オプションが追加されました。
    チェックを入れると進行状況確認画面に移動し、チェックを外すと従来通りの同期実行になります。
こちらもどうぞ。
[WordPress]カスタムプラグインで投稿文字数の自動集計機能を追加した
[WordPress]カスタムプラグインで投稿文字数の自動集計機能を追加した
WordPressの投稿文字数を日々集計し、データベースに保存するプラグインを作成しました。従来は集計画面表示時のみ実行されていた処理を、記事保存時に自動実行するように改善しました。下書き保存時の処理は負荷を考慮して省略し、公開・更新・削除時のみ実行する仕様としました。

WordPressのカスタムプラグインのエラー(get_postsのメモリ不足)
WordPressのカスタムプラグインのエラー(get_postsのメモリ不足)
自作プラグインが動かなくなった原因は、サーバー処理のメモリ不足でした。 $posts = get_posts( array( 'post_type' => 'post', 'post_status' => array( 'publish', 'pending', 'draft', 'future'), 'orderby' => 'modified', /* date, modified */ 'numberposts' => -1 ) ); $count = 0; forea...

アカウント登録の練習用ダミーページを作った(PHP)
アカウント登録の練習用ダミーページを作った(PHP)
アカウント登録の練習用ダミーページをPHPで作成しました。このページでは、データを実際に送信せずにローカルで処理し、パスワード入力やフォーム検証の練習ができます。アカウント登録の練習用ダミーページを作ったブラウザで開いてパスワード入力を練習するためのページを作りました。練習用ページでは、実際のデータは送信されず、ローカルで処理されます。データの非保存:フォームのsubmitイベントをJavaScriptで制御し、実際にはデータを送信せず、ローカルで処理しています。フォーム検証...

WordPressの編集画面での差し替えた画像が古い状態で表示される?(画像キャッシュ)
WordPressの編集画面での差し替えた画像が古い状態で表示される?(画像キャッシュ)
WordPressの画像キャッシュ問題により、差し替えた画像が古い状態で表示されることがあります。これは、ブラウザのキャッシュと画像URLの仕様が主な原因でした。キャッシュが読み込まれないように、functions.phpに管理者用に JavaScriptのコードを追加して、動的に画像URLにタイムスタンプを付与するようにしました。WordPressの画像キャッシュ問題WordPressでサイトを運営しているのですが、差し替えた画像ファイルをプラグイン(Media Clean...

(補足)

  1. 「Claude 3.7 Sonnet が」ですが。-
QRコードを読み込むと、関連記事を確認できます。

WordPressの古いリビジョンをまとめるカスタムプラグインを作った
【スポンサーリンク】
タイトルとURLをコピーしました