OpenGraph.phpを利用したカード形式の外部リンクで、PHPバージョン8.1にすると非推奨項目が表示されるのを修正する方法

公開日:2023(令和5)年4月20日/最終更新日:

,
WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています



「Hima Art Utility」プラグインで、外部サイトのOGPを取得して、リンクをカード表示させる機能を実装するために利用させていただいている「OpenGraph.php」。

OpenGraph.php」を使用したカード形式の外部リンク実装については他のサイトでいろいろと掲載されているので割愛しますが、今回出たのがPHP8.1へ変更した時のDeprecated(非推奨)表示。

「Deprecated: Return type of OpenGraph::rewind() should either be ...」というような表示が出ることがありますね。

エラーで止まるということでもなく、警告でもなく、非推奨という何とも言えないニュアンスではあるものの、対応方法が分かりましたので簡単にメモ。

といっても、この「非推奨」項目は、非推奨ですよ!の後にちゃんとどのファイルのどの項目に対してどうすればいいよ!というのがきちんと書かれているんです。

例えば今回発生した「OpenGraph.php」の場合は、

「...the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in...」というのがミソで、「in…の場所に#[\ReturnTypeWillChange]という要素を追加してね」と書かれています。

つまり、「OpenGraph.php」の以下の行を変更すればOKってことなんですね。

private $_position = 0;
#[\ReturnTypeWillChange]
	public function rewind() { reset($this->_values); $this->_position = 0; }

public function current() { return current($this->_values); }
	
public function key() { return key($this->_values); }
	
public function next() { next($this->_values); ++$this->_position; }
	
public function valid() { return $this->_position < sizeof($this->_values); }

ただ、今回のrewind()だけでなく、その他も非推奨となっていく可能性が高いので、以下のようにすべてに設定しておけばよいでしょう。

	private $_position = 0;
	#[\ReturnTypeWillChange]
		public function rewind() { reset($this->_values); $this->_position = 0; }
	#[\ReturnTypeWillChange]
		public function current() { return current($this->_values); }
	#[\ReturnTypeWillChange]
		public function key() { return key($this->_values); }
	#[\ReturnTypeWillChange]
		public function next() { next($this->_values); ++$this->_position; }
	#[\ReturnTypeWillChange]
		public function valid() { return $this->_position < sizeof($this->_values); }

これでおしまい。

冒頭で書いたように、「非推奨」項目は、非推奨ですよ!ということであって、たちまちエラーとなって止まってしまったり、警告されているわけではないので(と個人的には解釈している)、出たとしても焦ることはないとは思いますが、サイトの表示画面上にこれも含めて警告などが出てしまうのは、ファイルの場所まで出力されていることからあまりよろしくないので、wp-config.php内のデバッグ設定をfalseにしておくことをおすすめします。



Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Block Theme Customize | Personal WP Customization Notes (PWCN)
ブロックテーマでサイトの背景画像を設定する5つの方法