非推奨なので現在即座にエラーでストップというわけではないですけど、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のデフォルトを空文字「”」にすればいいのに...と感じる今日この頃、でもそうすると何かあるんでしょうね..。
コメントを残す