• 解決済 kaname

    (@kaname)


    こんにちは。
    フォーラムや他サイトなど、いつもお世話になっています。

    今回作成しているブログで、サイトの構成上「ページ」の中にてループで
    記事を一覧表示していますが、記事数が多くなってきたので、ページングを
    利用してアクセスしやすいようにしたいと考えています。
    そこで、テンプレートタグの「posts_nav_link」を利用してみましたが、
    「前の記事」、「次の記事」をクリックしても、最初に表示されたページしか
    表示されませんでした。

    続いて、WP_PageNaviというプラグインをアクティベートして利用してみましたが、
    表示する記事の総数は取得できているようなのですが、リンクのどの数字をクリックしても
    「posts_nav_link」同様に、最初に表示されたページしか表示されませんでした。
    ちなみに、検索結果ページではページングは普通に動作しています。

    お伺いしたいのは、

    1.そもそもページではページングが利用できないのか?
    2.利用できる場合は、どうやったら動くようになるのか。。。

    の2点です。
    ブログは下記のようにカスタマイズしています(簡単な説明ですが。。。)。
    何かご存知の方、同様のご経験がおありの方、ご教授いただければ幸いです。
    よろしくお願いいたします。

    ■利用しているバージョン
    Wordpress 2.3.3(日本語版)

    ■カスタマイズ
    ・サイドバー・・・最近の記事(5件)をループして表示、特定のカテゴリー(5件)をループして表示
    ・メイン部・・・特定のカテゴリを除く全ての記事の一覧を表示

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    今回作成しているブログで、サイトの構成上「ページ」の中にてループで
    記事を一覧表示していますが、

    具体的にどのようなコードを書いていますか? wp(), query_posts() 関数を使っているとすると、そこにページ番号が入っていないと、常に1ページ目を取得しようとしてしまいます。
    引数に paged=$paged を追加してみてください。これでもうまく動かないなら、以下のようにしてみてください。

    $paged = get_query_var('paged');
    wp(".....&paged=$paged");

    トピック投稿者 kaname

    (@kaname)

    >lilyfanさん

    こんばんは。
    早速のレスありがとうございます!
    お返事が遅くなってごめんなさい。

    具体的にどのようなコードを書いていますか? wp(), query_posts() 関数を使っているとすると、そこにページ番号が入っていないと、常に1ページ目を取得しようとしてしまいます。

    query_posts()を利用して記事を取得しています。

    <?php query_posts(“cat=-17,-21&showposts=10”); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>

    上記のようなコードです。
    どうしても除外したいカテゴリがあったので、そのためにquery_postsを利用しています。

    ページ番号を入れるのは・・・知りませんでした(>_<)
    ありがとうございます!
    早速入れてみた・・・のですが・・・。
    動かなかったんです。。。

    $paged = get_query_var(‘paged’);

    も、試してみたのですが、動かないので$pagedをechoで吐き出してみると、中身が空なんです。。。
    どういうことなのでしょう。。。(?_?;)
    サイドバーで、同じようにquery_popstsで記事を取得しているのですが、それが悪さしているんでしょうか。

    いろいろ調べて、下記のサイトさんで紹介されている複数のクエリを実装する方法を発見しました。
    試してみて、また結果を報告しますね。

    Side-B様
    http://side-b.sto.co.jp/weblog/archives/96#more-96

    kanameさん こんばんは

     showposts=N を posts_per_page=N にすれば出来ますよ。
    詳しくは「テンプレートタグ query posts」で検索してみてください。

    トピック投稿者 kaname

    (@kaname)

    >On3様

    おはようございます。
    レスありがとうございます!

    早速教えてもらった方法で試しましたら、うまくいきました!
    ありがとうございます~~~~~(>▽<)ノシ
    2ヶ月ぐらいずっと悩んでいたので、動いたときには感動ひとしお、でしたっ。

    下記のコードで動きました。
    同じ悩みの人は、試してみてくださいね。
    ちなみに、「複数のクエリを実装する」方法を取り入れなくても実現できました。
    あと、おかげさまでWP_PageNaviも動きました!
    lilyfan様、On3様、本当に感謝です! ありがとうございました。

    <?php query_posts(‘cat=-17,-21&posts_per_page=5&paged=’.$paged); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>

    こちらのトピックを発見して私も大変参考になりました!
    私もトピ主様と同じ悩みを抱えており、動いて感動でした!

    私は不要ページを除外するために「post__not_in」を活用して、
    カスタムフィールドの値で並び順を設定するのに下記のコードで実現しております。

    ご参考までに共有できればと思います!

    <?php
    	$args = array(
    		'post__not_in' => array(記事ID),
    		'post_type' => 'page',
    		'posts_per_page' => 5,
    		'paged' => $paged,
    		'orderby' => 'meta_value',
    		'meta_key' => 'カスタムフィールド名'
    	);
    	query_posts($args);
    ?>

    私もこちらのトピックスを発見して解決することができました。

    query_postsを使い、topページでtagに特定の文字を入力したエントリーだけを一覧表示させ、wp-pagenaviでページ送りをしたかったのですが、1ページ目で止まっていて困っていました。

    私の場合は、

    <?php query_posts(‘tag=”特定の文字”&posts_per_page=2&paged=’.$paged); ?>
    <?php if(have_posts()): ?>
    <?php while ( have_posts() ) : the_post(); ?>

    エントリー部分

    <?php endwhile; // end of the loop. ?>
    <?php else: ?>
    <p>投稿されたものがありません。</p>
    <?php endif; ?>

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

    ↑でページ送りをすることができました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「ページでページングを利用したい」には新たに返信することはできません。