「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にしておくことをおすすめします。