前提・実現したいこと
MAMPを用いて静的サイトのWordPress化を試みています。
トップページに新着情報を掲載したく作業していたところ
ページにエラーメッセージが表示されるようになりました。
発生している問題・エラーメッセージ
Warning: count(): Parameter must be an array or an object that implements Countable in /Applications/MAMP/htdocs/wp-includes/post-template.php on line 317 Notice: Trying to access array offset on value of type null in /Applications/MAMP/htdocs/wp-includes/post-template.php on line 323
該当のソースコード
HTML
1 <div class="news_box"> 2 <?php $posts = get_posts('numberposts=2'); ?> 3 <?php foreach($posts as $post): ?> 4 <a href="<?php the_permalink(); ?>"> 5 <?php the_post_thumbnail(array(250,250), array('class' => 'left')); ?></a> 6 <div class="news_box_text"> 7 <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 8 <p class="time"><?php the_time('Y年m月d日(D)'); ?></p> 9 <p><?php the_content(); ?></p> 10 /div> 11 <?php endforeach; ?> 12 </div>
PHP
1 2//post-template.phpの317行目と323行〜をコピぺしています 3// If the requested page doesn't exist. 4 if ( $elements['page'] > count( $elements['pages'] ) ) { 5 // Give them the highest numbered page that DOES exist. 6 $elements['page'] = count( $elements['pages'] ); 7 } 8 9 $page_no = $elements['page']; 10 $content = $elements['pages'][ $page_no - 1 ]; 11 if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) { 12 if ( has_block( 'more', $content ) ) { 13 // Remove the core/more block delimiters. They will be left over after $content is split up. 14 $content = preg_replace( '/<!-- /?wp:more(.*?) -->/', '', $content ); 15 } 16 17 $content = explode( $matches[0], $content, 2 ); 18 19 if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) ) { 20 $more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) ); 21 } 22 23 $has_teaser = true; 24 } else { 25 $content = array( $content ); 26 } 27 28 if ( false !== strpos( $_post->post_content, '<!--noteaser-->' ) && ( ! $elements['multipage'] || 1 == $elements['page'] ) ) { 29 $strip_teaser = true; 30 } 31 32 $teaser = $content[0]; 33 34 if ( $elements['more'] && $strip_teaser && $has_teaser ) { 35 $teaser = ''; 36 } 37 38 $output .= $teaser; 39 40 if ( count( $content ) > 1 ) { 41 if ( $elements['more'] ) { 42 $output .= '<span id="more-' . $_post->ID . '"></span>' . $content[1]; 43 } else { 44 if ( ! empty( $more_link_text ) ) { 45 46 /** 47 * Filters the Read More link text. 48 * 49 * @since 2.8.0 50 * 51 * @param string $more_link_element Read More link element. 52 * @param string $more_link_text Read More text. 53 */ 54 $output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink( $_post ) . "#more-{$_post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text ); 55 } 56 $output = force_balance_tags( $output ); 57 } 58 } 59 60 return $output; 61} 62
試したこと
phpのバージョンが関係していることや、
count関数で引っかかっているであろうことは調べてわかり、
修正を試みましたがうまく動作しませんでした。
【追記】
・HTMLのコードを追記しました。
・試したこと
- count関数をis_countable関数に変えてみた
- !empty($pages)を足してみた
恐れ入りますが、お知恵をお借りできれば幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー