WordPressの保存ができない・オートセーブを完全に停止する

post-075-img-0001

概要

WordPressを使っていると、とつぜんページの保存ができなくなったり、メディアなどの画面が永遠に読み込み中になって表示されないことがあります。今回は、これらの不具合をなんとかしようというものです。今回紹介する方法は、上から準に試していくことをオススメします。

設定などを変更する前に

 まず、根本的に、遅延しているなどネットワークに異常が発生していたりすれば、WordPressの動作も重くなります。もしも、ネットワークのせいなのであれば、たとえばスマホを使ってページを見てみるのも手です。携帯電話のデータ通信ではうまくいくのに、家のパソコンでは不具合が出る場合など、まずご自分が使っている環境が、正しく動作する環境であることを確認してから下記の操作を行うことを強くオススメします。
 喫茶店のWiFiなどでネットが重いのに、サーバの設定を疑って設定を変えたりすると、どつぼにハマる可能性もありますので、十分に御注意ください。

ubuntu特有のこと

ubuntuでは、定期的(1時間に2回)にPHPのセッションをぶった切る仕組みが入っています。こんなことをすれば、WordPressで不具合が出かねないので、これを停止します。

その1 PHPのセッションを定期的に切りに行くcronを再設定させなくする

stop phpsessionclean.timer
systemctl disable phpsessionclean.timer

その2 PHPのセッションを切りに行く処理を呼び出すCRONを停止

vi /etc/cron.d/php

このファイルを開いたら、cronのエントリを削除するか、コメントアウト(先頭に#を入れる)する。

# 09,39 *     * * *     root   [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

オートセーブを停止する

wp-config.php

サーバ上に保存されている「wp-config.php」を編集します。この方法は、オートセーブの間隔を1日にするもので、完全に停止するものではないので、気持ち悪い場合は、次の方法を併用してください。

define('AUTOSAVE_INTERVAL', 86400);

functions.php

functions.phpを編集します。ワードプレスの管理者画面で、外観 → テーマエディターを選択し、テーマエディターで「functions.php」を選択して、以下のコードを貼り付けます。

add_action( 'admin_init', 'disable_autosave' );
function disable_autosave() {
wp_deregister_script( 'autosave' );
}
上記2つの変更をしても、ページのプレビューなどをすると、オートセーブが復活してしまうことがあるようです。筆者の場合、ブラウザの複数のタブで複数のページを編集モードで開いて、それぞれプレビューをしながら編集したりすると、オートセーブが復活してしまい、「保存中・・・」の表示が永遠に終わらなかったり、メディアライブラリなどの画面が開かなかったりしました。このようなことが頻繁に起こってしまい、うざい場合は、本ページの最後のセクションにある、オートセーブを完全にコロス方法を試すしかないようです。筆者の場合は、これで完全にオートセーブバグ地獄から脱出できました。
 

必要なパッケージを全てインストールする

WordPressを使う際に入っていたほうが良いPHPのパッケージを全て入れます。筆者はこれで解決したことがあります。

apt install php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath install php-curl php-gd php-xmlrpc php-soap php-intl

systemctl restart apache2

ブラウザのキャッシュを全て消去する

ブラウザのキャッシュとクッキーのクリア

ブラウザのアドレスバーに「chrome://settings/clearBrowserData」を入力してエンターキーを押します。

DNSキャッシュを消去する

コマンドプロンプトを開いて以下のコマンドを入力
ipconfig /flushdns

Web表示の高速化用SPDYソケットのクリア

ブラウザのアドレスバーに以下を入力してエンターキーを押す
chrome://net-internals/#events&q=type:SPDY_SESSION is:active

ソケットプールのクリア

ブラウザのアドレスバーに以下を入力してエンターキーを押す
chrome://net-internals/#sockets

ブラウザのリセット

この方法は最終手段なので、上記のコマンドを全部入れても改善しないときにやってみてください。

ブラウザのアドレスバーに以下を入力してエンターキーを押す
chrome://settings/resetProfileSettings

Logitecのトラックボールのドライバが悪さする

trackball

ロジテックのトラックボールのソフトを常駐させないようにしていた場合も同じような不具合が出ますが、ブラウザ上のタブやボタンをクリックできなくなったり、ポインタの移動速度が遅くなったり早くなったり不安定になったりすると、ワードプレスというかブラウザの動作に悪影響を及ぼすことがありました。このような場合、Ctrl+Alt+DELでタスクマネージャを起動すると、再びクリックできるようになったりします。このとき、同時にブラウザの挙動がもとん戻ることがあります。

WordPressのコードを編集して完全にオートセーブ機能をコロス方法

最後の手段は、Wordpressのコードを編集して、オートセーブ機能自体を封印してしまう方法を紹介します。

注意点としては、サーバ上のファイルは、Windowsのメモ帳などでは開かないようが良いようです。サーバ上のviエディタあたりで直接編集できる人向けの方法です。間違えるとワードプレス自体が壊れて動かなくなると思うので、以下は「わかっている人」だけができる作業だと思ってください。

以下作業手順(2つのファイルを編集します)

  • viエディタで「wp-admin/post-new.php」を開く
  • 単語「autosave」でファイル内を検索すると以下の1行だけがヒットする。
    wp_enqueue_script( ‘autosave’ );
  • この行の先頭に「//」を付けてコメントアウトする。
  • 「wq」コマンドで上書き終了する
  • viエディタで「wp-admin/post.php」を開く
  • 単語「autosave」でファイル内を検索すると以下の1行だけがヒットする。wp_enqueue_script( ‘autosave’ );
  • この行の先頭に「//」を付けてコメントアウトする。
  • 「wq」コマンドで上書き終了する

一度Wordpressからログアウトし、ブラウザを終了→再度ブラウザを起動してWordpressに入りなおす。apache等を再起動する必要はない。

懸念点としては、WordPressのバージョンアップなどの更新が入った際に、この編集内容が上書きされて無くなるかもしれないので、Wordpressが新しいバージョンに更新される度に当該箇所をチェックして、適宜編集しなおす必要があるかもしれません。
上記の2つのファイルを変更すると、Wordfenseなどのセキュリティ監視プラグインが警告を出すことがあります。
タイトルとURLをコピーしました