フォーラムへの返信

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック投稿者 sygnas

    (@sygnas)

    ありがとうございます。
    pre_get_postsで数を変更、さらに is_main_query()でメインかどうかの判別ですか。
    なるほどーー。奥が深いです。

    トピック投稿者 sygnas

    (@sygnas)

    >popup様
    ありがとうございます。
    おかげでだいぶスッキリいたしました。スラッグについても仰る通りでした。

    global $wp_query;
    $args = array_merge(
      $wp_query->query,
      array(
        'posts_per_page' => 5
      )
    );
    query_posts( $args );

    ページによって表示件数を変更するということについては表示設定のほうを「1件」にすることで対応できました。

    トピック投稿者 sygnas

    (@sygnas)

    解決しました!
    結論から言うと、WordPressの表示設定「1ページに表示する最大投稿数」が関係していました。
    http://d.hatena.ne.jp/nakagaw/20100710/1278803760

    そこの設定が「10」件、今回の検索部分は「5」件、登録数「8」件という状態で、
    2ページ目(11件目から表示)は Not Foundになるというわけです。
    ということは、ページ毎の表示件数は統一せざる得ないということですか……?

    また上記を解消しても、query_posts() で $wp_query->query を使うと、ページが変わっても、タクソノミー分類が変わっても反映されなかったため、当初の書き方に戻しました。さらに言うとURIを「分類(ターム)名」ではなくスラッグにしたかったので、最終的には下記のようになりました。

    // ページ数
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    // ターム情報
    $term = get_term_by( 'name', single_term_title('', false), 'genre' );
    
    query_posts( array(
        'post_type' => 'sounds',
        'taxonomy' => 'genre',
        'term' => $term->slug,
        'posts_per_page' => 5,
        'paged' => $paged,
        'order' => 'DESC'
    ));

    タクソノミー登録 register_taxonomy() の rewriteオプションは下記のどれでも問題なく動作しました。

    'rewrite' => array( true, 'with_front' => false ),
    'rewrite' => array( 'with_front' => true, 'hierarchical' => true ),
    'rewrite' => array( 'slug'=>'genre' ),

    ひとまず解決しましたが今度は「表示設定の影響を受けてしまう」という難問が生まれてしまいましたが、それについてはまた調べてみたいと思います。
    相談にのってくださったmzplace様、LVP8様ありがとうございました。

    トピック投稿者 sygnas

    (@sygnas)

    >LVP8様
    ありがとうございます。なるほど、$wp_query->query はそのように使うのですね。

    query_posts( array(
        'post_type' => 'sounds',
        'posts_per_page' => 5,
        'order' => 'DESC'
        ),
        $wp_query->query
    );

    と記述してみましたが、やはり404.phpが表示されました。
    wp_reset_query() はコメントアウトしてあります。

    プラグインを使わず function.php に記述して rewriteを変更→パーマリンク設定更新
    をやってみたのですが、with_front、hierarchical、どちらを使う設定もダメでした。

    register_taxonomy(
        'genre',
        array (
            0 => 'sounds',
        ),
        array(
            'hierarchical' => true,
            'label' => 'ジャンル',
            'show_ui' => true,
            'query_var' => true,
    //      'rewrite' => array( true, 'with_front' => false ),
            'rewrite' => array( 'with_front' => true, 'hierarchical' => true ),
            'singular_label' => 'genre'
        )
    );

    検索するとかなりポピュラーな詰まりどころなのに、コレという解決法はなかなかないですね……。

    トピック投稿者 sygnas

    (@sygnas)

    >mzplace様

    有益な情報ありがとうございます!
    しかしながらインストールしても状況は変わりませんでした。^^;
    とはいえ、いただいた情報をヒントにひとつわかったのは

    index.php を表示していたのではなく、404.phpが表示されている

    ということです(404.phpを用意してみたら表示されました)。
    調査の範囲はぐっと狭まりました。
    逆にカスタムポストタイプのページネーションは上手くいっているのも謎です……。
    http://~/ポストタイプ/page/2/ は問題ないのです。

    フォーラム: プラグイン
    返信が含まれるトピック: タイトル一覧の出力の仕方
    トピック投稿者 sygnas

    (@sygnas)

    自己解決いたしました。
    get_posts() を使い、the_titleも第三引数を「false」にすることで
    望む結果が得られました。

    こちらの記事が参考になりました。
    WordPress › フォーラム » 特定のカテゴリーの記事一覧を表示したい。
    http://ja.forums.wordpress.org/topic/154

    $posts = get_posts('numberposts=10');
    global $post;
    
    if($posts){
    	foreach($posts as $post){
    		setup_postdata($post);
    		fwrite( $fp, the_title('','',false));
    	}
    }
6件の返信を表示中 - 1 - 6件目 (全6件中)