Warning: count(): Parameter must be an array or an object that implements Countable in /wp-includes/post-template.php on line 284
I met with this problem after installing The7 theme, while searching a bit I found that some people are facing this problem due to Jetpack plugin when reviewing the code I realize that this might be because of plugin or theme conflict with PHP version.
Solution:
Many people solved this problem by downgrading PHP version, but this could not be a good solution, I solved this problem by replacing this code at line 284-285 at wp-includes/post-template.php
if ( $page > count( $pages ) ) // if the requested page doesn't exist $page = count( $pages ); // give them the highest numbered page that DOES exist
with this code
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 } else { $page = 0; }
Disclosure of Material Connection: Some of the links in the post above are “affiliate links.” This means if you click on the link and purchase the item, we will receive an affiliate commission. Regardless, we only recommend products or services we use personally and believe will add value to our readers.
4 Comments
So what happens when WordPress updates? Isn’t that a CORE file you are editing and will be replaced by an update?
Thanks for sharing !
Nice snippet, the best fix I found after half an hour reading some odd workarounds here and there.
I was not sure what was the problem related to, but now this warning message makes sense.
Therefore, the warning is saying : “Parameter must be an array or an object”
So for a better testing of your $pages variable, the first line should be :
if ( is_array( $pages ) || is_object( $pages ) ) {
great, thanks for sharing this code
Thanks a lot, we’ll keep improving.