「PHP Deprecated:explode(): Passing null to parameter #2 ($string) of type string is deprecated in…」の対処例

公開日:/最終更新日: 2024(令和6)年2月4日

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

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



非推奨なので現在即座にエラーでストップというわけではないですけど、PHP8.1以降で出るようになった「explode(): Passing null to parameter #2 ($string) of type string is deprecated in…」への対処例です。

私の場合このメッセージはWordPressで以下のカスタムコード使用時に発生しました。

//カテゴリーをすべて取得するコールバック
function has_all_category_callback(){
	$categories = get_the_category();
foreach( $categories as $category ) {
return $category->slug;
}
}
//カテゴリーの限定
$categories = has_all_category_callback();//初期値をセット
$categories_array = explode(',', $categories);//「,」で文字列を配列化

投稿に紐づくカテゴリーをすべて抽出するコールバック関数を作って、コンマ区切りで抽出されてくるカテゴリーを「,」で判別して..というものです。

恐らく何もカテゴリーがない場合(下書き保存の段階で最悪でもデフォルトのカテゴリーに紐づくはずなので、本当に初期の下書き保存などの場合だと思慮..)にNullが返され、それが非推奨ですよ!と言われている模様。

いろいろと参考ページを見て、一番単純で確実かな?と実装したのが以下の方法。

//カテゴリーの限定
$categories = has_all_category_callback();//初期値をセット
$categories_array = explode(',', $categories ?? '');//「,」で文字列を配列化

要するに「?? ”」で訪ね当たらなかったらnullではなく空文字を返すということにすればよさそうです。

自身でカスタムコード作って実装することが多いので、この手の非推奨にいくつか対処してきましたが、そもそもNullを返すというPHPのデフォルトを空文字「”」にすればいいのに...と感じる今日この頃、でもそうすると何かあるんでしょうね..。

, , ,



Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)
「PHP Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in…」の対処(メモ)