サポート » 使い方全般 » query_postsを使用し固定ページに特定カテゴリーの一覧表示できない

  • 解決済 roiroi

    (@roiroi)


    wordpress初心者です。
    php5.2.17 mysq5.1.63 wp3.3.2
    テーマはGraphene 1.7.1
    固定ページに特定カテゴリーのタイトル一覧表示をしたくて以下のコードを使いました。

    <?php query_posts('cat=1&orderby=name&order=ASC&posts_per_page=-1'); ?>
    <?php if(have_posts()): ?>
    <?php while(have_posts()): the_post();?>
    <a href="<?php the_permalink(); ?>">
    <?php the_title(); ?></a>
    <?php endwhile; ?>
    <?php else: ?>
    <p>投稿されたものがありません。</p>
    <?php endif; ?>
    <?php wp_reset_query(); ?>

    記事の数が400超えるまでは普通に表示されていたのですが、400超えてからは表示されなくなってしまいました。
    今でもposts_per_page=-1をposts_per_page=300にすると一覧表示はされます。
    色々調べた結果、多分使っているテーマの縦幅の設定のせいで表示されないのだと思うのですが、どこを訂正すればいいのかわからず途方に暮れています。
    もしわかる方がいらっしゃいましたらご助言お願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • > 色々調べた結果、多分使っているテーマの縦幅の
    > 設定のせいで表示されないのだと思うのですが、
    > どこを訂正すればいいのかわからず途方に暮れて
    > います。

    HTMLに400件の表示は出るけど、画面上には表示
    されていないということでしょうか?

    それならCSSの問題ですし、そうでなければ
    WordPress(PHP)の問題です。

    どちらになりますでしょうか。

    トピック投稿者 roiroi

    (@roiroi)

    早々の回答ありがとうございます。
    ソースを表示してみたところHTMLに表示されませんでした。
    つまりWordPress(PHP)の問題なのでしょうか?

    はい。

    400件以上の画面表示がされておらず、
    HTMLで見ても400件以上の出力がされていないのであれば、
    WordPress(PHP)側の問題かと思われます。

    原因としては、下記のいずれかでしょうか。

    a) query_postsタグの記述ミスである

    print_r($wp_query);
    で設定値をチェックしてみてください。

    b) query_postsタグの不具合である

    c) query_postsタグの仕様である

    トピック投稿者 roiroi

    (@roiroi)

    hitakaさんありがとうございます。
    print_r($wp_query);
    で調べてみたのですが、PHPの知識がないため内容がよくわかりません・・・。
    ここまで教えていただいたので、何とか解決したいのですが何を調べればいいのかわからず困っています。

    モデレーター jim912

    (@jim912)

    roiroiさん、hitakaさん

    まずは、デバッグモードにして、エラーメッセージを表示して原因を確認してください。

    おそらく400件だと、メモリーオーバーで

    PHP Fatal error: Allowed memory size of ****** ….

    といった表示になると思われます。

    この場合の回避策ですが

    1. サーバーのPHPメモリー利用上限を上げる
    2. 表示に必要な情報のみ取得するようにする
    3. 20件ごとなど、分割して取得して表示する

    あたりが考えられます。

    トピック投稿者 roiroi

    (@roiroi)

    jim912さんご助言ありがとうございます。
    デバッグモードにしてログを取り出してみたところ、

    PHP Notice:  is_plugin_page is <strong>deprecated</strong> since version 3.1 with no alternative available. in /home2/*****/public_html/wp-includes/functions.php on line 3469
     PHP Notice:  Undefined variable: cache_wptouch in /home2/*****/public_html/wp-content/plugins/wp-super-cache/plugins/wptouch.php on line 109
     PHP Notice:  Undefined index:  hook_suffix in /home2/*****/public_html/wp-content/themes/graphene/includes/theme-head.php on line 398
     PHP Notice:  Undefined variable: style in /home2/*****/public_html/wp-content/themes/graphene/header.php on line 87
     PHP Notice:  get_usermeta の使用はバージョン 3.0 から<strong>非推奨</strong>になっています! 代わりに get_user_meta() を使ってください。 in /home2/*****/public_html/wp-includes/functions.php on line 3467
     PHP Notice:  Undefined index:  content-length in /home2/*****/public_html/wp-includes/functions.php on line 1244
     PHP Notice:  Undefined variable: wp_cache_object_cache in /home2/*****/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1069

    という表示がされていました。
    このうち

    PHP Notice:  is_plugin_page is <strong>deprecated</strong> since version 3.1 with no alternative available. in /home2/*****/public_html/wp-includes/functions.php on line 3469
     PHP Notice:  Undefined variable: cache_wptouch in /home2/*****/public_html/wp-content/plugins/wp-super-cache/plugins/wptouch.php on line 109

    という表示が非常に多く5秒に1回位表示されていました。
    サーバーも調べてみたところcpuに負荷がかかっていたのでこれが原因なのかもしれません。
    取りあえず一つずつ調べて解決していきたいと思います。
    デバッグモード自体知らなかったのでホントに感謝感謝です。

    jim912 さん

    勉強になりました。

    トピック投稿者 roiroi

    (@roiroi)

    headerの設定を少し変更していたので、それが原因の一つかと思い、テーマのデフォルトに戻してみました。
    そうしたら、

    PHP Notice:  is_plugin_page is <strong>deprecated</strong> since version 3.1 with no alternative available. in /home2/*****/public_html/wp-includes/functions.php on line 3469
     PHP Notice:  Undefined index:  hook_suffix in /home2/*****/public_html/wp-content/themes/graphene/includes/theme-head.php on line 398
     PHP Notice:  Undefined variable: style in /home2/*****/public_html/wp-content/themes/graphene/header.php on line 87
     PHP Notice:  Undefined variable: cache_wptouch in /home2/*****/public_html/wp-content/plugins/wp-super-cache/plugins/wptouch.php on line 109

    この4つのログが残りました、これが非常に多く表示されています。
    該当する箇所を調べてみたのですが、自分が見る限りなぜエラーが表示されているのかわかりませんでした、またタイトルが400以上表示されないこととの関連もよくわかりません。

    トピック投稿者 roiroi

    (@roiroi)

    解決しました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「query_postsを使用し固定ページに特定カテゴリーの一覧表示できない」には新たに返信することはできません。