WP Favorite PostsがUncaught TypeErrorやPHP7.1で動かない件
投稿日:2018/9/20 更新:2018/9/20 コメント 0件 ワードプレス Local by Flywheel, PHP, WP Favorite Posts, プラグイン, ワードプレス現在、ワードプレスの動画素材の配布サイト「f-stock.net」をLocal by Flywheelで作成したローカル環境で作成しているんですが、お気に入り機能を使いたくてプラグインのWP Favorite Posts(WPFP)をテストしたら動かなかったり、エラーを吐いたりしてトラブったんですが何とか対処できたのでそのメモです。
目次
PHP7.1で動かない問題
wp-favorite-postsは2年ほど前から更新が停止しているプラグインなんですが、Local by Flywheelで作成したローカル環境(php7.1.4)で動かしたらエラーが出て全く動かなかったので調べたらこの現象はどうも既知の不具合みたいですがphp5.6では動くみたいです。
PHPバージョンを変更する
Local by FlywheelではPHPのバージョンを簡単に変更できます。変更は「SITE SETUP」タブの「CHANGE」をクリックします。
Local by Flywheelのバージョンによる表示されるPHPのバージョンも異なると思いますが、Ver 2.3.0では下図のようなバージョンが利用できます。因みにバージョン名の左に下向きの矢印があるものはダウンロードされてインストールされるので多少時間を要します。
バージョンを選択して「SAVE CHANGES」をクリックすると変更されます。
PHP5.6.20にしたらWP Favorite Postsは一応動いたのでやっぱりPHPのバージョンによる不具合は確定のようです。ただ、この為だけにPHPのバージョンを落とすなんてことは時代に逆行するのでやるつもりもないので対応策を探したら下記URLに書かれていた「wp-favorite-posts.php」の376行目を修正したらPHP7.1でもちゃんと動くようになりました。
WP Favorite Postsがphp7からは使えないのですか
$val = $oldval + $val;
↓
$val = (int) $oldval + $val;
Uncaught TypeError: $(…).live is not a function
ローカル環境でお気に入りの一覧ページをカスタマイズしてたらchromeの検証ツールで「Uncaught TypeError: $(…).live is not a function」というエラーを吐いていました。
ド素人なのでエラーの原因を調べるのにも時間を要したんですが、参考サイトを読むとどうも「wpfp.js」というjQueryが書かれたページにある「live」というメソッドがすでにjQueryのバージョン1.9で廃止になっていたのが原因のようです。「wpfp.js」はプラグインが保存されたフォルダにあります。
liveとon・・・何故liveメソッドは廃止になったのか?
jQuery(document).ready( function($) {
$('.wpfp-link').live('click', function() {
dhis = $(this);
wpfp_do_js( dhis, 1 );
// for favorite post listing page
if (dhis.hasClass('remove-parent')) {
dhis.parent("li").fadeOut();
}
return false;
});
});
参考サイトに記載されているようにプラグインが保存されたフォルダにあった「wpfp.js」を「onメソッド」に書き換えたらエラーメッセージはきれいに消えました。
jQuery(document).ready( function($) {
$('.wpfp-link').on('click', function() {
dhis = $(this);
wpfp_do_js( dhis, 1 );
// for favorite post listing page
if (dhis.hasClass('remove-parent')) {
dhis.parent("li").fadeOut();
}
return false;
});
});
お気に入り追加後や解除後に表示されるメッセージが表示されない
お気に入りに追加したり解除したりするとメッセージが表示されるように設定していたんですがそのメッセージが表示されずにアドレスに「/?wpfpaction=remove&postid=xxx」というコードが追加される不具合が発生してました。
下図は現在作成中の動画サイトのお気に入り一覧ページにサムネイルを表示テストしたものです。
「お気に入りに追加」をクリックすると正常なら下図のように「お気に入りに登録されました。」などのメッセージが表示されます。因みにメッセージは再読み込みすると消えます。
この不具合も実は前章の「onメソッド」に書き換えたら改善してました。
「お気に入りに追加」をクリックするとエラーが表示
CSSやPHPファイルを弄っていたら「お気に入りに追加」をクリックするとクリックしたところの下にエラーメッセージが表示されるようになりました。尚、この現象はFirefoxだと問題なく表示されるんですが、Google Chrome(67.0.3396.87)でのみ発生しているエラーです。
エラーの詳細です。
お気に入り一覧ページをカスタマイズするためにWP Favorite Postsのコードを書き換えたりしたので一応文字コードがUTF-8になっているか確認したり、Local by FlywheelやPCの再起動など色々と試しても解決に至らなかったんですが、ただPHPのバージョンを一旦、5.6にして再度バージョンを7.2にアップデートしたらエラーが出なくなりました。
このほかにも「お気に入りリストをすべて消去」というボタンをクリックしたあとにお気に入り登録しようとすると出来なくなる不具合が発生しましたが、この不具合には対処できなかったので56行目?をコメントアウトして表示しないようにしました。
// echo '<p>'.wpfp_clear_list_link().'</p>';