Wordpressでサイト運営 コラム

WordPressプラグインFAQ Managerのエラーを修正する方法

簡単にFAQが作成・管理できるWordPressプラグイン「FAQ Manager」を利用していたのですが、4年も更新されていないためPHP7へバージョンアップするとエラーが発生してしまいました。使い続けるための修正方法をご紹介していきます。

FAQページの導入と管理が楽なFAQ Managerプラグイン

企業やお店などビジネスサイトに必須のFAQページ。見た目のデザインもQ&Aらしく整えたり、他の投稿と分けて管理した方がよかったり、簡単には設置できません。

カスタム投稿タイプを自由自在に扱えるWordPress中級者以上の方ならプラグインを使う必要はないのですが、WordPress初心者には以外に実現するには敷居が高かったりします。

そんなFAQシステムをとても簡単に導入できるプラグインの代表が「FAQ Manager」です。
[appbox wordpress appid=wordpress-faq-manager]

このプラグインの詳しい使い方はTechAcademyさんのサイトで詳しく解説されていますので、導入を検討されているなら参考にしてみてください。
[blogcard url=”https://techacademy.jp/magazine/4367″]

FAQ Managerプラグインのエラーの原因と修正方法

とても便利なFAQプラグインだったのですが、すでに更新がストップしてしまったようで、4年以上も放置されたままでした。利用しているエックスサーバーがPHP7に対応しているので、PHP7へバージョンを切り替えたところ、実行エラーメッセージが表示されるようになってしまいました。

エラーが発生している原因は、FAQ Managerプラグイン内でPHP7非対応のpreg_replace関数のe修飾子が使われていることです。

エラーメッセージは、「WordPressがインストールされているフォルダ/wp-content/plugins/wordpress-faq-managerフォルダ」内のfaq-manager.phpファイルを修正すると表示されなくなります。preg_replace関数の代わりにpreg_replace_callback関数へ修正していきます。

ソースコードの修正方法は、SAKI Web Designさんのサイトが一番わかりやすくコピペで修正が完了するように解説されています。この方法で問題なくエラーメッセージが表示されなくなりますので、チェックしてみてください。
[blogcard url=”https://sakidesign.com/deprecated-2017-04/”]

実行エラーは表示されなくなったのですが、右クリックで検証メニューを選択して表示されるChromeのコンソール画面で確認すると、faq.init.jsファイル内でエラーが発生していることが確認できます。

このエラーの原因は、JQuery内でバージョン1.9以降廃止された「.live」が使われていることです。エラーを回避する方法は、「WordPressがインストールされているフォルダ/wp-content/plugins/wordpress-faq-managerフォルダ/inc/js」内のfaq.init.jsファイルの29行目のliveonに書き換えるだけです

修正前

//********************************************************
// pagination function
//********************************************************

	function show_me_some_more() {
		jQuery('p.faq-nav a').live('click', function(e){

修正後

//********************************************************
// pagination function
//********************************************************

	function show_me_some_more() {
		jQuery('p.faq-nav a').on('click', function(e){

これで、FaqManagerプラグインのエラーが発生しなくなります。

SAKI Web Designさんのサイトでは、faq-widgets.phpファイルの修正方法も詳しく解説されています。今のところ修正しなくとも動くようですが、PHP7ではクラス名と同じコンストラクタ宣言をすることが非推奨となっていますので、合わせて修正対応しておいた方が安心でしょう。

更新されなくなったプラグインを使用することをすぐにあきらめる必要はないですよ。非推奨関数やコード記述を修正していくことで使い続けることができます。

この記事がお役に立てたら
いいね ! で最新情報を手に入れましょう

Previous Post Next Post

Related Posts