質問: array( 'post_type' => bbp_get_topic_post_type(), // Narrow query down to bbPress topics 'post_parent' => $default_post_parent, // Forum ID 'meta_key' => '_bbp_last_active_time', // Make sure topic has some last activity time 'meta_type' => 'DATETIME', 'orderby' => 'meta_value', // 'meta_value', 'author', 'date', 'title', 'modified', 'parent', rand', 'order' => 'DESC', // 'ASC', 'DESC' 'posts_per_page' => bbp_get_topics_per_page(), // Topics per page 'paged' => bbp_get_paged(), // Page Number 'show_stickies' => $default_show_stickies, // Ignore sticky topics? 'max_num_pages' => false, // Maximum number of pages to show // Conditionally prime the cache for related posts 'update_post_family_cache' => true ); ``` このあたりを調整するのかなとは、思っているのですが、、、>< ぜひお助けのほどよろしくお願いいたします。
回答: > > しかし、別のページでトピック一覧を表示するときに > > 「1ページに表示するトピック・返信数」の数値に統一されてしまうため > > 表示数を変更する方法をご教授いただけますと幸いです。 > > (中略) > > このあたりを調整するのかなとは、思っているのですが、、、>< > > > 惜しい・・・ いいところまで調べられているので、もう少し頑張れば自己解決できたのではないでしょうか。 1ページの表示数は、質問に書かれている部分の `bbp_has_topics()` の下記で、設定されています。 > > 'posts_per_page' => bbp_get_topics_per_page(), // Topics per page > > > ここで、`bbp_get_topics_per_page()` 関数で表示数を決めているので、 `bbp_get_topics_per_page()` がどこで定義されているかを調べると includes/topics/functions.php の 3586 行にあります。 > > 3586 function bbp_get_topics_per_page( $default = 15 ) { > > 3587 > > 3588 // Get database option and cast as integer > > 3589 $retval = get_option( '_bbp_topics_per_page', $default ); > > 3590 > > 3591 // If return val is empty, set it to default > > 3592 if ( empty( $retval ) ) { > > 3593 $retval = $default; > > 3594 } > > 3595 > > 3596 // Filter & return > > 3597 return (int) apply_filters( 'bbp_get_topics_per_page', $retval, $default ); > > 3598 } > > > この関数をみると 最後(3597行目)で `apply_filters( 'bbp_get_topics_per_page', $retval, $default );` とフィルターフックを実行しています。 そのため、`bbp_get_topics_per_page` フィルターフックを利用すると `bbp_get_topics_per_page()`関数が返す値を変更できることがわかります。 あとは、テーマの functions.php で、`bbp_get_topics_per_page` フィルターフックを定義して、その中で、条件分岐して返す値を変更すれば良いと思います。 たとえば、こんな感じでしょうか。 (わかりやすくするため、変更しない場合の else もつけています。) ``` function my_bbp_get_topics_per_page_244385( $retval ) { if ( is_page( 123 ) ) { $new_cnt = 50; // 固定ページ ID 123 は、 50件表示 } elseif ( is_page( 300 ) ) { $new_cnt = 20; // 固定ページ ID 300 は、 20件表示 } else { $new_cnt = $retval; // それ以外は、設定値 } return $new_cnt; } add_filter( 'bbp_get_topics_per_page', 'my_bbp_get_topics_per_page_244385' ); ``` 分岐の判断に使用している `is_page()` は、条件分岐タグ なので、表示しているページを判別する条件にあったものを選んでください。