フォーラムへの返信

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: get_postsで0件の時 「Undefined offset: 0 」 が出る
    トピック投稿者 K-moya

    (@k-moya)

    hideokamotoさま、Toro_Unitさま。

    $postsと言う変数名が原因でした。変数名を変更し正常に動作しました。

    今回は、single.phpで下記のように別テンプレートを呼び出しており、該当の関連記事はこれで呼び出されるcontent-single.phpを書き換えていたのですが、

    single.php

    <?php while ( have_posts() ) : the_post(); ?>
    	<?php get_template_part( 'content', 'single' ); ?>
    	<?php post_nav(); ?>
    	<?php
    		if ( comments_open() || get_comments_number() ) :
    			comments_template();
    		endif;
    	?>
    <?php endwhile; ?>

    content-single.phpでの該当コードで、下記のように$postsと言う変数名を使ってしまっていたため、

    content-single.php
    $posts = get_posts( $args );

    single.phpに戻ったときに、そちらでも使っている変数名$postsの中身が書き換わってしまいエラーとなっていました。

    これを期に面倒で入れていなかったxdebugを入れ、原因が分かりました。

    色々見てた頂いたhideokamotoさま、Toro_Unitさま、本当にありがとうございました!

    フォーラム: 使い方全般
    返信が含まれるトピック: get_postsで0件の時 「Undefined offset: 0 」 が出る
    トピック投稿者 K-moya

    (@k-moya)

    hideokamotoさま

    説明が分かりにくくてすみません。

    下記のコードを実行し、結果が0件の場合のみ、表題のNoticeが出ます。
    (1件以上の場合はNoticeが出ません&0件の場合でもNoticeは出るものの動作はしています)

    $args=array('exclude' => $post->ID ,'category' => $category_id);
    $posts = get_posts( $args );
    
    if (! $posts){
     echo "○○カテゴリーの記事はまだ1件もありません。";
    } else {
    postを表示する処理
    }

    query.phpの該当の場所はこんなかんじです。
    $this->post_countは0(-1 ?)な気がするのですが、3750に行ってしまうのですね。なんでだろ…

    query.php

    /**
    	 * Rewind the posts and reset post index.
    	 *
    	 * @since 1.5.0
    	 * @access public
    	 */
    3747	public function rewind_posts() {
    3748		$this->current_post = -1;
    3749		if ( $this->post_count > 0 ) {
    3750			$this->post = $this->posts[0];
    3751		}
    3752	}

2件の返信を表示中 - 1 - 2件目 (全2件中)