
もう1つブログを立ち上げる際にワードプレスのテーマをこのブログから流用したのですが、何故かエラーが出ました。(PHP7.2起因でした。)
エラーメッセージとしては
『Warning: count(): Parameter must be an array or an object that implements Countable in …(ブログより異なるファイルのパス)/wp-includes/post-template.php on line 284』
です。
デバッグに成功したので、取り急ぎ具体的な対処法をご紹介します。
続いて、解説も記しますので知識のある方は読んでみてください。
具体的な対処法
ここでは、具体的な対処作業を説明します。解説は次項です。
Step.1 下記パスのファイルを探す
エラーメッセージで出てきた
『…(ブログより異なるファイルのパス)/wp-includes/post-template.php』
というファイルを探します。
私の場合はエックスサーバーのサーバーを使っているのでWEBFTPでファイルを探しました。
※編集に先立ち、一度ファイルをコピーして保存しておきましょう。操作を間違えても復旧できます。
Step.2 ファイルの下記の赤字部分を追加する
以下の部分のコード(function get_the_contentの中)の赤字部分を追加しましょう。
※{}の数などお気を付けください。追加分は{}×3つです。
function get_the_content( $more_link_text = null, $strip_teaser = false ) {
global $page, $more, $preview, $pages, $multipage;
(...途中省略...)
// If post password required and it doesn't match the cookie.
if ( post_password_required( $post ) )
return get_the_password_form( $post );
if ( ! empty( $pages ) ) {
if ( $page > count( $pages ) ) {// if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
}
} else {
$page = 0;
}
(以下省略...)
Step.3 保存してページを更新
上記のコードを追加したら保存してページを更新してみましょう。
エラーメッセージが出なくなるはずです。
私の場合はエックスサーバーのサーバーを使っているのでWEBFTPでファイルを直に編集してしまいました。文字コードはUTF-8(BOMなし)にしておきましょう。(WEBFTPではBOMの有無不明ですが問題は出ていません。)
これで作業は終了です。興味のある方は下記の解説もどうぞ。
解説
PHP公式サイトによれば、PHP7.2で count() 関数 の仕様が変更になりました。(エイリアスのsizeof()も同様)
具体的な変更としては
◆以前: count( NULL )となっていた場合 0 を返す。Warningは出さない。
◆7.2: count( NULL )となっていた場合Warningを出す。
です。
修正前のコードでは count( $pages ) の $pages が宣言だけされて初期化される前に count() に代入されたことによりWarningが出たとみられます。
なので、以前と同じ挙動となるように count() に代入する前に empty() 関数でNULLかどうかを判別し、NULLだった場合 $pages = 0; となるように修正しました。
このブログのPHPバージョンは現時点(2018/7/7)では7.2ではないのでWarningが出ていませんが、新しく立ち上げた方は最新の7.2にしたので症状が発現したようです。
以上です。
参考になれば幸いです。
この記事のおかげで直りました!投稿ありがとうございます!
2018年9月26日 10:47 PM
ひえ、なおりました。。。
ありがとうございました^^
2018年9月10日 11:10 PM