参数必须是实现Countable的数组或对象

时间:2018-06-08 10:55:38

标签: php wordpress

我在本地服务器上遇到了这个问题。问题不在于jetpack插件,因为我已经将其删除了

C:\xampp\htdocs\theme\wp-includes\post-template.php on line 284

Warning: count(): Parameter must be an array or an object that implements Countable in post-template.php on line 284

请有人帮我解决这个问题。

3 个答案:

答案 0 :(得分:4)

是否将the_content()放入循环

在这里尝试:

if (have_posts()) {
    while (have_posts()) {
        the_post();
        ?>
        <article class="post">
        <h3><?php the_title(); ?></h3>
        <p><?php the_content(); ?></p> 
    </article>
    <?php 
} // end while
} // end if
?>

答案 1 :(得分:0)

可能是由于在The Loop之外使用get_the_excerpt,get_the_content或类似功能(在自定义上下文中,在主题的functions.php中的某个位置)引起的。

之前添加 setup_postdata 。这将填充全局变量$ pages。否则,PHP7.2 +将在第284行的post-template.php中输出警告。

例如:

global $post;
setup_postdata($post);
$excerpt = get_the_excerpt($post);

请参见setup_postdataget_the_excerptThe Loop

答案 2 :(得分:0)

此问题是由于在PHP 7.2+中使用the_content或get_the_content而引起的,因为这些函数对全局页进行了检查,该页可以为null。 在7.2中,null不是可计数的有效值,这是引发错误的一个工作环境,该错误是直接从meta字段中提取内容。下面的代码可在我制作的https://www.youtube.com/watch?v=vMguTNzFoUk这段视频中找到更多信息(TLDR部分位于视频的中间,我猜这是其中一个片段的说明)

apply_filters('the_content', get_post_field('post_content', $post->id));