WordPressを4.4にアップしたら、

Notice: force_ssl_login is deprecated since version 4.4! Use force_ssl_admin() instead.

Notice: force_ssl_login is deprecated since version 4.4! Use force_ssl_admin() instead.

が画面いっぱいに表示されちょっとドッキリ。 wp-config.pnpで、デバッグモード「define(‘WP_DEBUG’, true);」を有効にして運用しているのでちょっとしたnotice(警告)も表示されます。もちろんtrueをfalseに変更すれば、この警告は表示されなくなります。その場しのぎにはいいです。今回は、きちんと手当します。

さっそく手当を…

【前提条件】

  1. WordPress4.4にアップデート済み
  2. ローカルにもサーバ上にインストールされたWordpressと同じディレクトリ構成がある

<手順>

  1. /wp/wp-includes/functions.phpのチェック
  2. force_ssl_login()からforce_ssl_admin()への置換

1./wp/wp-includes/functions.phpのチェック

ローカルに対象のfunctions.phpをサーバよりダウンロードし、3568行目を確認するが、そこには、警告にあるようなforce_ssl_loginはありませんでした。

おそらにその当たりで利用されている変数からアクセスされているのでしょう。そこで、wp以下全てを対象にforce_ssl_loginで検索しました。(実際にはforece_ssl_login())

2.force_ssl_login()の検索

検索結果はリダイレクトでforce-ssl-login.txtに書き出しました。

ターミナル(Ctrl+Alt+T)内で、下記のコマンドを実行する。

xyz@pc:~/ドキュメント/xxxyyyzzz/wp$ grep -irn ‘force_ssl_login()’ * > ~/force-ssl-login.txt

force-ssl-login.txtの内容は下記のとおりです。

wp-content/plugins/wordpress-https/lib/WordPressHTTPS/Module/Core.php:280: if ( force_ssl_login() && preg_match(‘/wp-login\.php$/’, $url) === 1 ) {
wp-content/plugins/login-rebuilder/login-rebuilder.php:55: $this->root_url = ( ( is_ssl() || force_ssl_login() )? “https://”: “http://” ).$_SERVER[“HTTP_HOST”];
wp-content/plugins/jetpack/class.jetpack.php:6400:        if ( version_compare( $wp_version, ‘4.4-alpha’, ‘<=’ ) && force_ssl_login() ) { // force_ssl_login deprecated WP 4.4.

よく見ると、3つのphpファイルで、force_ssl_login()からforce_ssl_admin()への書き換えの必要があるようです。

1つ目が

wp-content/plugins/wp-sitemap-page/wordpress-https/lib/WordPressHTTPS/Module/Core.php:280: if ( force_ssl_login() && preg_match(‘/wp-login\.php$/’, $url) === 1 ) {

で示されているように、wordpress-httpsプラグインないのCore.phpの280行目に出ているforce_ssl_login()

2つ目が、

wp-content/plugins/login-rebuilder/login-rebuilder.php:55: $this->root_url = ( ( is_ssl() || force_ssl_login() )? “https://”: “http://” ).$_SERVER[“HTTP_HOST”];

で示されているlogin-rebuilderプラグイン内のlogin-rebuilder.phpの55行目に出ているforce_ssl_login()

3つ目が、

wp-content/plugins/jetpack/class.jetpack.php:6400:        if ( version_compare( $wp_version, ‘4.4-alpha’, ‘<=’ ) && force_ssl_login() ) { // force_ssl_login deprecated WP 4.4.

で示されているjetpackプラグイン内のclass.jetpack.phpの6400行目に出ているforce_ssl_login()です。

これらのforce_ssl_login()をforce_ssl_admin()に変更してサーバのwordpressにアップすれば修正完了です。

基本的な作業は全て同じです。つまり、サーバ上にインストールされたWordpressのプラグインの対象ファイルをすべてメンテ用のPCのローカルにダウンロードして、修正後アップするだけです。

私はwinSCP(Ubuntu14.04のwine上で動作します。)を利用していますが、FTPクライアントなら何でも使いやすいやつでいいでしょう。

警告もでなくなってとっても精神衛生上いいですね。

〔番外〕

ローカルで編集し、サーバへアップすると所有者がサーバへのログインユーザとなります。しかし、私の環境では、プラグインなどのアップデードではapacheが所有者となるので、chownをして所有者をapacheに変更しています。ちょっと面倒です。