サポート » 使い方全般 » カスタム投稿のシングルページに記事一覧をつくり、ページ送りを実装したいです。

  • いつもお世話になっております。
    現在、標準の投稿(pots_type=’post’)とカスタム投稿(post_type=’staff’)の2つで記事を分けており
    標準投稿とカスタム投稿をプラグインのACF(advance custom field)で紐づけております(標準投稿にカスタム投稿を関連の投稿オブジェクトで紐づけ)。

    イメージとして、標準投稿に作者(カスタムフィールド)としてカスタム投稿のスタッフを選択できる仕様です。

    上記の内容で、カスタム投稿のシングルページにて、staff(自分)が標準投稿で書いた記事の一覧を表示します。

    コード(single-staff.phpに記載)

    
    $post_object = get_the_ID();
    $args = array(
        'post_type' =>'post',
        'posts_per_page'   => 6,
        'orderby'          => 'date',
        'order'            => 'DESC',
        'meta_key' => 'post_author',
        'meta_value' =>$post_object,
        'meta_compare' => '='
     );
    ~省略~
    

    上記のコードで無事にカスタム投稿のシングルページにて、標準投稿で書いた記事だけを呼び出すことができたのでが。。。
    ここで、ある問題に直面してしまいました。その問題が、ページ送りです。

    上記の件数を溢れた場合、ページ送りを作る場合のロジックはどう作ればよいでしょうか。
    そもそもシングルページの使い方が間違っているのは承知してはいますが、こちらの仕様で作った場合は
    やはり、裏方でページ数をカウントするなりして、Ajaxで動的に記事を書き換えるしか無いでしょうか。

    標準的なシングルページのページ送りは使えないですし、なにか良い方法はありますでしょうか。

    わかる方がいらっしゃれば、ご教授の方をよろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    ページ番号を指定する独自の URL パラメータ(下記コードでは staffpaged)を使用する方法はどうでしょうか。

    $staffpaged = isset( $_GET['staffpaged'] ) ? max( 1, (int)$_GET['staffpaged'] ) : 1;
    
    $args = array(
    
    	(省略)
    
    	'paged' => $staffpaged,
    );
    
    $the_query = new WP_Query( $args );
    if ( $the_query->have_posts() ) {
    
    	(省略)
    
    }
    wp_reset_postdata();
    
    // ページネーション
    echo paginate_links( array(
    	'format' => '?staffpaged=%#%',
    	'current' => $staffpaged,	// 現在のページ番号
    	'total' => $the_query->max_num_pages,	// 全体のページ数
    ) );
    トピック投稿者 saki-saki

    (@saki-saki)

    ishitaka様
    いつもご回答いただきありがとうございます。
    ご教示頂いた通りにしましたら、無事にページ送りができました。

    ここでもう一点だけ修正したい箇所が出てきて待ったので、
    可能であればご回答をいただけたらと存じます。

    ページ送りでのパーマリンクの設定についてなのですが、
    現在の設定ですとhttp://localhost/staff/staffname/?page=2とデフォルト状態に
    なるかと思います。
    理想は、http://localhost/staff/staffname/pages/2
    にしたいのですが、うまく設定が反映されません。
    公式リファレスにもformatのカスタムパーマリンク(「?」などの記号を含まない URL)を使いたい場合は、’/page/%#%’ のように書けば ‘%#%’ の部分がページ番号に置き換わります。
    と記述されていましたので、下記のコードを記述しました。

    
    // ページネーション
    $staffpaged = isset( $_GET['pages'] ) ? max( 1, (int)$_GET['pages'] ) : 1;//こちらも替えました。
    (省略)
    echo paginate_links( array(
    	'format' => '/pages/%#%',
    	'current' => $staffpaged,	// 現在のページ番号
    	'total' => $the_query->max_num_pages,	// 全体のページ数
    ) );
    

    しかし、上記の様に書いた所、404エラーに飛ばされてしまいます。
    色々と試してみたのですが、(管理画面の投稿数数を1件)にしたり等うまくいきませんでした。

    なにか間違いがあればご指摘いただければかと思います。
    よろしくお願い致します。

    ishitaka

    (@ishitaka)

    すみません、ちょっと分かりません(^^;
    ページ分割などいろいろと考慮しないといけないので難しいかな・・・。
    他の方のアドバイスをお待ちください。

    トピック投稿者 saki-saki

    (@saki-saki)

    ishitaka様
    ご連絡ありがとうございます。

    やはり普通の取得とは違う方法でページ送りを設定しているので難しいのかもしれのせんね。。。
    プラグインを全て止めて確認しましたが駄目でしたので。。

    ありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタム投稿のシングルページに記事一覧をつくり、ページ送りを実装したいです。」には新たに返信することはできません。