実現したいこと
当方ワードプレスを使用しておりPHPを8以上に変更したく、サーバーで試したところサイトがエラーになってしまいました。テーマはxeory_baseというものを使用しております。
調べた結果themasの中にあるlib>function内のwidget.phpというファイルに問題があることがわかりました。
create_function()という書き方が古い形式のためエラーになってしまうようです。このファイルはフェイスブック関連のものらしく、それほど必要でもないかと思い削除しましたが、それでもサイトは表示されないままでやはりこの関数を変更しないといけないようです。
発生している問題・エラーメッセージ
Fatal error: Uncaught Error: Call to undefined function create_function()
という形でcreate_function()を何らかの形に変えないといけないようです。
該当のソースコード
php
1<?php 2 3/* likebox 4* ---------------------------------------- */ 5if( !class_exists("MyPagePlugin") ){ 6 add_action('widgets_init', create_function('', 'return register_widget("MyPagePlugin");')); 7 class MyPagePlugin extends WP_Widget { 8 function MyPagePlugin() { 9 parent::__construct(false, $name = 'Page Plugin'); 10 } 11
上記がページの始まりの部分です。
大変申し訳ないのですが、どなたかどのように書き替えれば機能するのか、ご教授いただければ幸いです。
宜しくお願い致します。
確かにPHP8で削除されているようです。
https://www.php.net/manual/ja/function.create-function.php
テーマを直接編集されていますか?
アップデートで書き変わるリスクもあるかと思いますが、そもそもPHP7.2時点で非推奨になっていた機能をそのまま使っている時点で、諸々のリスクが付きまとうので、テーマアップデートでも解決しないのであれば、PHP8対応のテーマを探した方が良いかと思います。
m.ts10806 さま
早々にご返信、アドバイスを頂きましてありがとうございました。
実はテーマのほうはプロに依頼してカスタマイズしてもらったため更新できないこととなっています。
これがネックといえばそれまでなのですが、上記の理由からできればテーマを変えずに調整したいと思っております。
なるほど
では、その方に依頼するのが確実と思います。
影響範囲もあるのでそこだけ対応すれば盤石とは限りませんし、カスタマイズされたのであれば一般的に手に入るソースではないので、他者には手出しが難しくなります。
create_functionが残ってる時点でプロでもなんでもないのでテーマを変えたほうがいい。create_functionを直しても「クラスと同名のコンストラクタ」なんてPHP4時代のとんでもなく古い記述も残ってるので本当のプロに依頼しても修正しようがないほどどうしようもないテーマ。
m.ts10806 さま
kawax さま
ご回答、アドバイスをいただきありがとうございます。
テーマの変更などこちらでも検討してみます。
回答1件
あなたの回答
tips
プレビュー