• 解決済 nekokonnichiha

    (@nekokonnichiha)


    sidebar.php に記事一覧を表示させると、全ページのコンテンツ部分が記事の本文になってしまいます。
    書き方が間違っているのでしょうか…。。
    表示が変わってしまう部分は、ページのみです。
    single.phpやカスタム投稿を使用して記述している箇所は、目的通り表示されます。
    下の the_content();にあたる箇所が、sidebarで指定したカテゴリの一番上の記事本文になっています。
    sidebar.phpの記事一覧表示はうまくいっています。

    アドバイス等ありましたら、よろしくお願いいたします。

    ーーーーー
    sidebar.php

    <h5><a href="<?php bloginfo('url'); ?>/category/open">タイトル(<?php echo get_category('13')->category_count; ?>)</a></h5>
    <?php $posts = get_posts('numberposts=5&category=13'); ?>
    <ul>
    		<?php foreach($posts as $post): ?></p>
    <li><a href="<?php the_permalink();?>"><span><?php the_title(); ?></span></a></li>
    <?php endforeach; ?>
    	</ul>

    page.php

    <?php if (have_posts()) : ?>
        <?php while (have_posts()) : the_post(); ?>
           <div class="text_m"><?php the_content(); ?></div>
        <?php endwhile;endif; ?>

    ——-
    また、こちらの記事一覧表示の仕方を一番下の書き方に一緒でした。

    </p>
    <ul>
    <?php
    $posts = get_posts('numberposts=5&category=13');
    global $post;
    ?>
    <?php
    if($posts): foreach($posts as $post): setup_postdata($post); ?>
    <li><a href="<?php the_permalink();?>"><?php the_title();?></a></li>
    <?php endforeach; endif;?
    </ul>
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 nekokonnichiha

    (@nekokonnichiha)

    ■■■■■■■追記■■■■■■

    コードの表示がおかしくなってしまったので…
    一つ目のsidebar.phpはこちらを参照しています。
     http://www.doya-doya.com/process/2010/09/03/2114

    モデレーター gatespace

    (@gatespace)

    こんにちは。

    get_posts()し、ループを回した後はは必ず wp_reset_postdata() で取得したクエリをリセットした方がよいです。

    未検証ですがnekokonnichihaさんのコードを元にするとこんな感じでしょうか?

    <?php
    $args = array(
    	'numberposts' => 5,
    	'category' => 13
    );
    $myposts = get_posts( $args ); //$postsという変数名は使わない方がよい
    
    if($myposts) : // 該当する投稿があったら
    ?>
    <ul>
    	<?php
    	foreach( $myposts as $post ): // ループ開始
    		setup_postdata( $post ); // the_title(), the_permalink()を使えるようにする
    	?>
    	<li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
    	<?php endforeach; // ループ終わり ?>
    </ul>
    <?php
    endif;
    wp_reset_postdata(); //リセット
    ?>

    複数ループの説明はこちらの記事が参考になります。
    WordPress ループ&クエリーのモヤモヤを解消しよう!
    http://wpxtreme.jp/understanding-wordpress-loops-and-queries

    トピック投稿者 nekokonnichiha

    (@nekokonnichiha)

    ありがとうございます!
    gatespace様の回答をもとに、正常に動作するようになりました。

    「複数ループ」というものが完全に知識としてなく、どのように調べればいいかわからない状態でした。教えてくださったサイトも分かりやすく、とても勉強になりました。

    質問してすぐに的確な回答をくださったこと、とても感謝しております。
    ほんとうにありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「sidebarに記事一覧を表示されると、ページ内も記事の本文になる。」には新たに返信することはできません。