Similar PostsのPHP文が古いみたい。
WordPressを使っていたら、こんなメッセージが。
どうやら、プラグインで使っているSimilar Postsの中のPHPが対応しなくなってしまうようだ。
具体的にはeach文が原因。PHP7からは非推奨になってしまっているようだ。
なので、each文を修正してあげれば良いです。
if ($utf8) { mb_regex_encoding('UTF-8'); mb_internal_encoding('UTF-8'); $wordlist = mb_split("\W+", sp_mb_clean_words($text)); $words = ''; reset($wordlist); while (list($n, $word) = each($wordlist)) { if ( mb_strlen($word) > 3 && !isset($overusedwords[$word])) { switch ($use_stemmer) { case 'true': $words .= sp_mb_str_pad(stem($word), 4, '_') . ' '; break; case 'fuzzy': $words .= sp_mb_str_pad(metaphone($word), 4, '_') . ' '; break; case 'false': default: $words .= $word . ' '; } } }
4行目のこいつですね。
while (list($n, $word) = each($wordlist)) {
これを
while (list($n, $word) = current($wordlist)) {
こう変えます。
そして、while文の最後に
next($wordlist);
こいつを加えます。
まとめると、こういうことになります。
if ($utf8) { mb_regex_encoding('UTF-8'); mb_internal_encoding('UTF-8'); $wordlist = mb_split("\W+", sp_mb_clean_words($text)); $words = ''; reset($wordlist); while (list($n, $word) = current($wordlist)) { if ( mb_strlen($word) > 3 && !isset($overusedwords[$word])) { switch ($use_stemmer) { case 'true': $words .= sp_mb_str_pad(stem($word), 4, '_') . ' '; break; case 'fuzzy': $words .= sp_mb_str_pad(metaphone($word), 4, '_') . ' '; break; case 'false': default: $words .= $word . ' '; } } next($wordlist); }
こう変える。
すると、エラー文章が解消されます。
めでたしめでたし。
このプラグインは愛用しているので、これからも使っていきたいですね。