サポート » 使い方全般 » カスタム投稿タイプのシングルページ内でのページング

  • カスタム投稿タイプを使って、階層構造にしているのですが、
    カスタム投稿タイプの親ページにて、子ページの一覧を取得してページングしたいと考えています。

    投稿タイプ:work(業務)

    業務一覧ページ(ichiran)
      |__子ページ1
      |__子ページ2
      |__子ページ3

    この場合、業務一覧ページ・子ページともに表示されているのですが、
    業務一覧ページでのページングのみがうまくいっていない状況です。

    WP-PageNaviを利用してページネーションは表示されているのですが、
    例えば2ページ目へのリンクをクリックした場合、
    http://xxxxxx/work/ichiran/page/2
    には行かず、
    http://xxxxxx/work/ichiran
    が再度表示される形になります。(URLもこのURLに強制的に変更されます)

    コードは以下のように書いております。
    何が原因かわからず悩んでおります・・・。
    もしお分かりの方がおられましたら、ご教授いただければと思います。

    ●functions.php (カスタム投稿タイプの設定部分)

    $args = array(
        'label' => '業務',
        'labels' => array(
          'singular_name' => '業務',
          'add_new_item' => '新規業務データを追加',
          'add_new' => '新規追加',
          'new_item' => '新規業務',
          'view_item' => '業務データを表示',
          'not_found' => '業務データは見つかりませんでした',
          'not_found_in_trash' => 'ゴミ箱に業務データはありません。',
          'search_items' => '業務データを検索',
        ),
        'public' => true,
        'show_ui' => true,
        'exclude_from_search' => false,
        'query_var' => false,
        'capability_type' => 'post',
        'hierarchical' => true,
        'menu_position' => 5,
        'has_archive' => true,
        'rewrite' => true,
        'supports' => array('title','editor','page-attributes','thumbnail')
      );
      register_post_type('work', $args);

    ●カスタム投稿タイプの一覧表示用テンプレート

    <?php
      $paged = get_query_var('paged') ? get_query_var('paged') : 1;
      $myQuery = new WP_Query();
      $param = array(
          'posts_per_page' => '2',
          'post_type' => 'work',
          'post_status' => 'publish',
          'post_parent' => 'ichiran',
          'paged' => $paged,
          'orderby' => 'ID',
          'order' => 'DESC'
      );
      $myQuery->query($param);
      while ( $myQuery->have_posts() ) : $myQuery->the_post();
        //もろもろの処理
      endwhile;
    
      $wp_query->max_num_pages = $myQuery->max_num_pages;
    ?>
    <ul>
    <?php wp_pagenavi(); ?>
    </ul>

    なお、環境は以下のとおりです。
    WordPressのバージョン:
    ・3.3.1

    使用プラグイン:
    ・WP No Category Base
    ・Custom Post Type Permalinks
    ・WP-PageNavi

    http://ja.forums.wordpress.org/topic/8785
    にも同じ内容の質問があったのですが、回答がありませんでしたので、こちらにも投稿させていただきます。

    以上、よろしくお願いいたします。

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

    (@jim912)

    onさん、こんにちは。

    WP-Pagenaviの

    <?php wp_pagenavi(); ?>

    は、通常query_postsで用いられるWP_Queryのインスタンス $wp_queryが用いられます。
    このため、記述の $myQuery とは、得られるページ数がことなるため、期待した結果にはなりません。

    幸い wp_pagenavi のqueryパラメーターにWP_Queryのインスタンスを指定してあげれば、$wp_query以外でも動作するようになっているので、これを試してみて下さい。

    <?php wp_pagenavi( array( 'query' => $myQuery ) ); ?>

    あるいは、変数のスコープが異なるため、$wp_queryがローカル変数として扱われ

    $wp_query->max_num_pages = $myQuery->max_num_pages;

    が機能していないのかもしれません。

    トピック投稿者 on

    (@on)

    jim912さん、アドバイスありがとうございました!!

    <?php wp_pagenavi( array( 'query' => $myQuery ) ); ?>

    こちら、試してみましたが、やはりうまくいきません・・・。

    wp_pagenaviの次ページへのリンク自体は表示されるのですが、
    それをクリックした際に、/page/2 に飛ばずに元のページに飛びます。
    (結局同じページが表示されてしまいます)

    無理やり引数に

    'paged' => 2

    と直接指定すると、表示的には2ページ目の内容が表示されるので、
    $pagedが取得できていないことが問題みたいです。

    カスタム投稿タイプでページングすること自体が無理なんでしょうか。。。?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタム投稿タイプのシングルページ内でのページング」には新たに返信することはできません。