• 解決済 nagaib

    (@nagaib)


    いつもお世話になっております。

    固定ページで作成した記事一覧をWPプラグイン「WP-PageNavi」でページ分割させたいと思っていますが、下記のコードを該当ページ内に挿入してもページナビゲーションが表示されません。
    <?php if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); } ?>

    どなたかお力をかして頂けると幸いです。
    どうぞ宜しくお願いします。

    <div id="content">
    <?php if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); } ?>
    <?php
    	query_posts(
    	Array(
    	'post_type' => array ('events2','events'),
    	'posts_per_page' => 10,
    	'orderby' => 'date',
    	'order' => 'DESC'
    	)
    );
    if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php if (get_post_type() === 'events'): ?>
    <div class="eventlist">
    <div class="eventimg">
    <?php
    $attach_id = get_post_meta($post->ID,"画像1",true);
    $image_info = wp_get_attachment_image_src( $attach_id  , 'full' );
    list( $url, $w, $h) = $image_info;
    $h = intval(200 * ( $h / $w ));
    $alt = get_post_meta($attach_id , '_wp_attachment_image_alt', true);
    ?>
    <img class="zzzz" src="<?php echo $url; ?>" alt="<?php echo $alt; ?>" width="127px" height="95px" />
    </div>
    <div class="eventtext">
    <?php if (function_exists('get_cat_icon')) get_cat_icon(); ?>
    <?php echo post_custom('開催日'); ?>
    <a>
    <?php the_title(); ?>
    </a>
    </div>
    </div>
    <?php else: ?
    <div class="eventlist">
    <div class="eventimg">
    <?php
    $attach_id = get_post_meta($post->ID,"画像1",true);
    $image_info = wp_get_attachment_image_src( $attach_id  , 'full' );
    list( $url, $w, $h) = $image_info;
    $h = intval(200 * ( $h / $w ));<br />
    $alt = get_post_meta($attach_id , '_wp_attachment_image_alt', true);
    ?>
    <img class="zzzz" src="<?php echo $url; ?>" alt="<?php echo $alt; ?>" width="127px" height="95px" />
    </div>
    <div class="eventtext">
    <?php if (function_exists('get_cat_icon')) get_cat_icon(); ?>
    <?php echo post_custom('開催日'); ?>
    <a title="<?php the_title(); ?>の詳細へ" target="_blank"><?php the_title(); ?>
    </a>
    </div>
    </div>
    <?php endif; ?>
    <?php
    	endwhile; endif;
    	wp_reset_query(); ?>
    <!--div#content-->
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター jim912

    (@jim912)

    nagaibさん

    <?php if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); } ?>

    クォートが全角になっていますが、これが原因ですか?それと、コードを見てもらう場合には、必ず code で括っていただけるようお願いいたします。

    トピック投稿者 nagaib

    (@nagaib)

    jim912さん

    お返事ありがとうございます。
    クォートを半角に修正しましたが、やはりページナビゲーション自体が表示されませんでした。

    でもクォートを半角に修正したところ、コードを記述する場所をループ内へ変更してみるとページナビゲーションが表示されます。(ループ内だとページナビゲーションがたくさん表示されて困るのですが…)しかし、それも2ページをクリックしても該当ページへリンクはされない状態です。

    なかなかうまくいかないです。
    どなたかわかる方いらっしゃいますでしょうか?どうぞ宜しくお願いします。

    <div id="content">
    
    <!-- ◆ここに記述したらページナビゲーションが表示されない◆ -->
    <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
    
    <?php
    	query_posts(
    	Array(
    	'post_type' => array ('events2','events'),
    	'posts_per_page' => 10,
    	'orderby' => 'date',
    	'order' => 'DESC'
    	)
    );
    if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    <!-- ◆ここに記述したらページナビゲーションが表示される◆ -->
    <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
    
    <?php if (get_post_type() === 'events'): ?>
    モデレーター jim912

    (@jim912)

    nagaibさん

    wp_reset_queryの役割を理解してください。
    wp_reset_queryは、query_postsによって変更されたループを、query_postsを行わない状態へのループに戻す働きがあります。

    本来、必要なのは query_postsで取得した内容を元にしたページナビであるはずなので、wp_pagenavi を記述して有効となる箇所は、query_postsを行ったあと、wp_reset_query を行う前となります。この範囲以外では、デフォルトループの状態に対して、ページナビの表示を行おうとするため、本来必要となるquery_postsで取得した内容とは異なる表示になってしまうのです。

    ページナビを出力して適当な場所ですが、while (have_posts())のループが終わって、if (have_posts())の分岐が終わる前が一番適当かと思います。

    モデレーター jim912

    (@jim912)

    2ページ目を表示するには、query_posts に paged パラメーターが必要です。

    トピック投稿者 nagaib

    (@nagaib)

    jim912さん

    お返事ありがとうございます。
    wp_reset_queryの役割の説明を丁寧にしていただいたお陰で、思い通りの場所にページナビを表示することができました。
    本当にありがとうございました。長い時間悩んでいた件が、解決してすごくうれしいです。感謝いたします。

    こちらで助けていただいたり、ネット検索で見よう見まねで理解せずに記述していたため、丁寧説明していただき理解することができました。
    これから勉強しなければなりません。
    本当にありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「WP-PageNaviが表示されない」には新たに返信することはできません。