サポート » 使い方全般 » トップページを固定ページにしたらページ送りができません。

  • 解決済 summerdeep

    (@summerdeep)


    過去に同じ質問
    http://ja.forums.wordpress.org/topic/2084?replies=8
    が投稿されていたのですが、解決されていませんでした。
    更なる要因が判ったので、解決の糸口とならないでしょうか?

    phpは初心者です。
    どうかご教授お願いします。

    トップページは「新着情報」(カテゴリー名:inf)というメニューで、
    ・特定のカテゴリー
    ・3つの記事を表示
    の条件で、固定ページで作っています。

    具体的には

    <?php if (have_posts()) : query_posts( ‘posts_per_page=3&cat=27&paged=’.$paged); while (have_posts()) : the_post(); ?>

    です。

    パーマリンクの設定は、
    /%category%/%post_id%
    にしています。

    すると、トップページの記事をページ送りしても、
    http://www.xxxxxx.com/page/2
    となり、トップページと同じ記事のままです。

    URLを
    http://www.xxxxxx.com/inf/page/2
    と直打ちすれば、ちゃんと表示されます。

    リンクするためにはどうしたら良いでしょうか?
    よろしくお願いします。

    wordpress ver. 3.0~3.2
    サーバー環境:チカッパ
    Apache1.3
    php 5.2.6
    MySQL 5.0.51

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • $paged に何も入ってない気がするので
    <?php if (have_posts()) : query_posts( 'posts_per_page=3&cat=27&paged='.get_query_var('paged') ); while (have_posts()) : the_post(); ?>
    とすると良いかも。

    トピック投稿者 summerdeep

    (@summerdeep)

    kzさん

    ありがとうございます。
    仰せのとおりに書き換えてみましたが、変化ありませんでした。

    あ、
    <?php query_posts( 'posts_per_page=3&cat=27&paged='.get_query_var('paged') ); if (have_posts()) : while (have_posts()) : the_post(); ?>
    ですね。

    query_posts()の結果を have_posts() で見るので順序は

    query_posts --> if --> while --> なんかする --> endwhile --> endif --> wp_reset_query

    となります。

    カテゴリの一覧ページで似た状況になったことがあります。
    posts_per_pageの値が、ダッシュボードの表示設定の「1ページに表示する最大投稿数」よりも少ない場合に発生するかもしれません。
    お試しください~

    トピック投稿者 summerdeep

    (@summerdeep)

    KZさん

    ありがとうございます。。。でも変化ないです。

    sysbirdさん

    posts_per_pageの設定は3、
    ダッシュボードの表示設定も3です。
    試しにダッシュボードを1にもしてみましたがダメでした。

    動作は確認しているので、他で何かマズいところがあると思われます。
    まずは「トップページ」のコード全体を見直してみましょー

    トピック投稿者 summerdeep

    (@summerdeep)

    KZさん

    本当に何度もすみません。
    コードがあまりよく読めないので、どうかお力をお貸しください。
    全体のコードは、

    get_header();
    ?>
    <h3 class=”storytitle”>新着情報</h3>
    <?php query_posts( ‘posts_per_page=3&cat=27&paged=’.get_query_var(‘paged’) ); if (have_posts()) : while (have_posts()) : the_post(); ?>

    <div class=”datecomrap”>
    <div class=”date”>
    <?php the_time(‘M’); ?>
    <span style=”font-size:2em; font-weight:bold;”><?php the_time(‘d’); ?></span>
    <?php the_time(‘Y’); ?>
    </div><!– end date –>

    <!– if you don’t want the comment count left of the post, erase from here … –>
    <div class=”commy”>
    <?php comments_popup_link( ‘0’, ‘1’, ‘%’, ‘comments-link’, ‘-‘); ?>
    </div><!– end commy –>
    <!– to here –>

    </div><!– end datecomrap –>

    <div class=”storywrap”>

    <div class=”post” id=”post-<?php the_ID(); ?>”>
    <h3 class=”storytitle”>” rel=”bookmark”><?php the_title(); ?></h3>

    <div class=”storycontent”>
    <?php the_content(__(‘(more…)’)); ?>
    </div><!– end storycontent –>

    </div><!– end storywrap –>

    </div><!– end post –>

    <?php endwhile; else: ?>
    <p style=”margin:100px 0 0 100px; font-weight:bold;”><?php _e(‘Sorry, no posts matched your criteria.’); ?></p>
    <?php endif; ?>
    <?php if(function_exists(‘wp_page_numbers’)) : wp_page_numbers(); endif; ?>
    <?php get_footer(); ?>

    です。

    ページ送りは”WP Page Numbers”を使用しています。
    これはトップページ以外はうまく動作していますし、デフォルトの「←新しい記事 古い記事→」みたいなページ送りのときもページが切り替わりませんでした。

    実際のページをリンクするのはいけないでしょうか?アフィリはありません。
    もしNGだったら削除します。
    まだ制作途中で恥ずかしいのですが…
    http://yutymore.com/www

    どうかよろしくお願いします。

    上記コードで正常動作しました(WP3.2.1)。

    ・NextGEN を 無効にしてみる。
    ・他にプラグインがあればひとつずつ無効にしてみる。
    で原因が不明なら WordPress 再インストール…

    がんばって調べるなら、まずは query_posts() 辺りを以下のようにして
    HTML のソースに書き出されたクエリの状態を確認してみましょう!
    <?php
    query_posts( ‘posts_per_page=3&cat=27&paged=’.get_query_var(‘paged’) );
    global $wp_query;
    echo ‘<!–‘;var_dump($wp_query);echo ‘–>’; // これを追加
    if (have_posts()) : while (have_posts()) : the_post();
    ?>

    トピック投稿者 summerdeep

    (@summerdeep)

    kzさん

    本当にありがとうございます。

    ・全てのプラグインを無効にしてみました→だめでした。

    ・Wordpress再インストールは、新たに別のサイトを作って、別のテンプレートでやってみましたが、だめでした。
    また、パーマリンクを様々変えてみましたが、それもだめでした。

    当方の表示設定は、
     ・固定ページ
        ・フロントページ:新着情報
        ・投稿ページ:日記
    です。
    kzさんが正常動作したときもこの設定でしょうか?

    クエリ表示、やってみました。
    面白いですね、こんなことができるのは初めて知りました。
    初心者なのでなかなか読み取ることが難しいですが、がんばって調べてみます。

    もうしばらくクローズしなくてもいいですか?
    よろしくお願いします。

    フロントページを固定ページにすると paged の情報が無効にされる仕様/バグみたいなので
    以下を functions.php に追加してください◎

    add_action( 'parse_query', 'my_parse_query' );
    function my_parse_query( $query ) {
      if ( ! isset( $query->query_vars['paged'] ) && isset( $query->query_vars['page'] ) )
        $query->query_vars['paged'] = $query->query_vars['page'];
    }

    トピック投稿者 summerdeep

    (@summerdeep)

    kzさん

    できました!!
    大変に丁寧なご指導で、長々とお付き合いいただきまして本当にありがとうございまいた。

    感謝の気持ちでいっぱいです。

    またお世話になることがあるかもしれません。
    そのときもどうかよろしくお願いいたします。

    おおお!
    kzさん、pagedが抜けてしまうの、僕も困ってました。ありがとうございます!

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • トピック「トップページを固定ページにしたらページ送りができません。」には新たに返信することはできません。