質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3913閲覧

bbpressのトピック表示数をページごとに変更する方法を知りたい。

hinokichi58

総合スコア7

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/03/01 07:10

いま現在

[bbp-single-forum id=]

でトピック一覧を表示。

表示数は、bbpressプラグインの設定内にある
「1ページに表示するトピック・返信数」
で変更しています。

しかし、別のページでトピック一覧を表示するときに
「1ページに表示するトピック・返信数」の数値に統一されてしまうため
表示数を変更する方法をご教授いただけますと幸いです。

templates > default > bbpress > loop-topic.php内の

<?php while ( bbp_topics() ) : bbp_the_topic(); ?> <?php bbp_get_template_part( 'loop', 'single-topic' ); ?> <?php endwhile; ?>

ここのループ数を回数制限できるといいのですが、、、

あとは、includes > topics > template.phpの

function bbp_has_topics( $args = array() ) { // Default argument array $default = 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 );

このあたりを調整するのかなとは、思っているのですが、、、><

ぜひお助けのほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

しかし、別のページでトピック一覧を表示するときに

「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() は、条件分岐タグ なので、表示しているページを判別する条件にあったものを選んでください。

投稿2020/03/02 07:15

編集2020/03/02 07:16
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問