サポート » 使い方全般 » author.phpでカスタム投稿の記事一覧をページングしたい

  • 解決済 shinringo

    (@shinringo)


    初めて質問させていただきます。

    下記の運用を想定した、複数のユーザーが投稿できるサイトを制作中です。
    ・サイト管理者は通常投稿で記事を投稿する
    ・複数の投稿者は3種類のカスタム投稿で記事を投稿する

    ・テーマはtwentytwelveをベースにカスタマイズ
    ・wp_pagenaviを使ってページングを行う

    author.phpに下記の記述を行い、投稿者ごとのカスタム投稿一覧を表示させようとしたのですが、通常投稿がひとつも無いため「wp_pagenavi」を使用した際、次のページの投稿が無かったことになってしまいます。

    <div id="main-box">
    <div id="content-main-box" class="site-content">
    <?php
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $args = array(
    'author'=>( $author ),
    'post_status' => 'publish',
    'post_type' => array( 'posttype1','posttype2','posttype3' ),
    'posts_per_page' => 3,
    'paged' => $paged
    );
    $the_query = new WP_Query( $args );
    
    if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <div class="main-item">
    <?php get_template_part( 'content', get_post_format() ); ?>
    </div><!-- .main-item -->
    <?php endwhile;
    endif;
    wp_reset_postdata();
    ?>
    </div><!-- #content-main-box -->
    <div class="content-nav">
    <?php if(function_exists('wp_pagenavi')) wp_pagenavi(array('query' => $the_query)); ?>
    </div>
    </div><!-- #main-box -->

    いろいろ調べてみたところ、どうやらwp-includesのauthor-template.phpやuser.phpが関係してるみたいなのですが、スキルが乏しく解決策が分かりません。。。

    どうすれば良いかお教えいただきますよう、お願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 著者アーカイブにて、表示される投稿をカスタマイズするには、pre_get_postsを使います。

    add_action("pre_get_posts","author_pre_get_posts");
    function author_pre_get_posts($query){
        if( $query->is_main_query() && !is_admin() && $query->is_author() ) {
            $query->set ("post_type", array( 'posttype1','posttype2','posttype3' ) );
            $query->set( "posts_per_page", 3);
        }
    }

    ページがそもそも存在するかどうかの判定は、テンプレートが読み込まれる前に行われるので、テンプレート上でページ送りを実装すると、次のページは存在するはずなのに、404が表示されるなどの問題が発生してしまいます。

    Toro_Unit様

    教えていただいた内容をfunction.phpに入れたところ、無事に希望通りの表示ができました!
    なるほど、pre_get_postsを使えばよかったのですね。
    ずっと思い悩んでいたので本当に助かりました。

    これで解決済みとさせていただきます。
    ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「author.phpでカスタム投稿の記事一覧をページングしたい」には新たに返信することはできません。