日記

【WordPress】AFFINGER6導入時に「Warning: count()」エラーが出た時の解決方法

ブログのテーマを長年使っていた「Cocoon」から、カスタマイズ性が高くSEOにも強い「AFFINGER6(アフィンガー6)」に変更した際、トップページの上部に以下のようなエラーが表示されて焦った経験はありませんか?

【発生したエラー内容】 Warning: count(): Parameter must be an array or an object that implements Countable in 【ファイルパス】/wp-includes/post-template.php on line 321

これは、WordPressのコアファイルである wp-includes の中にある post-template.php の321行目で、count() 関数に配列以外のデータが渡されていることが原因で発生するエラーです(PHPのバージョンアップ等に伴いよく起こる現象です)。

今回は、私が実際にこのエラーを解決した手順をわかりやすく解説します。同じエラーでお困りの方はぜひ参考にしてみてください!

解決までの手順(ConoHa WING編)

サーバーに「ConoHa WING(コノハウイング)」を使用している場合のファイル編集手順を解説します。

1. ファイルマネージャーを開く

  1. ConoHa WINGの管理画面にログインします。
  2. 「サイト管理」 バナーをクリックします。
  3. メニュー内にある 「ファイルマネージャー」 をクリックします。

2. 該当のファイルを探す

  1. public_html フォルダを開きます。
  2. ご自身のサイト名(例:○○○.com)のフォルダをクリックします。
  3. その中にある wp-includes フォルダを開きます。
  4. さらにその中にある post-template.php を見つけ、右クリックして「コードエディター」等で開きます。

コードの修正方法

post-template.php の 321行目付近 を探し、以下のように修正します。

【修正前】

PHP

if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist

【修正後】

PHP

if (is_array($pages)) {
    if ( $page > count( $pages ) ) // if the requested page doesn't exist
    $page = count( $pages ); // give them the highest numbered page that DOES exist
}

配列であるかどうかを判定する is_array($pages) で囲むことで、エラーが出ないように修正します。ファイルを保存してブラウザをリロード(再読み込み)すれば、トップページのエラーが綺麗に消えているはずです。

まとめ

テーマ変更やアップデートのタイミングで突然エラーが出ると焦ってしまいますが、ファイルマネージャーから該当箇所を修正するだけで無事に解決することができました。

※注意:WordPressのコアファイル(wp-includes 内のファイル)を直接編集した場合、WordPress本体のアップデートを行うとファイルが上書きされ、修正が元に戻る可能性があります。根本的な解決としてはPHPバージョンの見直しやテーマ・プラグインの互換性確認もあわせて行ってみてください。

この記事が同じエラーで困っている方の参考になれば幸いです!

  • この記事を書いた人

kanchi

アラフォーサラリーマンの日常を様々な角度から観察し、思ったことをつらつらと書いていきます。 既婚子どもなし、B型、天秤座 趣味は節約、投資、ゴルフ、バイク

-日記