こんにちは
全体では新着順ということなので、これは参考ページの方法で新着順へ変更して、あとは、ループの直前 (テンプレートのループの直前や、loop_start、bbp_has_replies フックなど) などで投稿の配列 (posts) を逆順 (array_reverse 関数など) にするのはどうでしょうか?
例:
function my_bbp_has_replies( $has, $query ) {
$query->posts = array_reverse( $query->posts );
return $has;
}
add_filter( 'bbp_has_replies', 'my_bbp_has_replies', 10, 2 );
ご連絡ありがとうございます。
参考ページの新着順のコードの後におしえていただいたコードを記述しましたら、希望通りの並び順になりました!!大変助かりました、ありがとうございます!!
すいませんが、後学のためにishitakaさんにお伺いしたいことがあります。
ご回答していただいたとおり、並び順を新着順にしてページに出力する配列を逆順にすればいいかと思いましたが、私には出力を逆にする方法がわかりませんでした。
bbpressのトピックのコメント一覧はtemplates/default/bbperss/content-single-topic.phpから出力されているようで、こちらのファイルの41行目あたりにあるコードが出力をループしているところだと思います。
<?php if ( bbp_has_replies() ) : ?>
<?php bbp_get_template_part( ‘pagination’, ‘replies’ ); ?>
<?php bbp_get_template_part( ‘loop’, ‘replies’ ); ?>
<?php bbp_get_template_part( ‘pagination’, ‘replies’ ); ?>
<?php endif; ?>
そこでお伺いしたいことが2点あります。
1.bbp_has_replies()という関数になりかするのはわかりますが、おしえていただいたコードのmy_bbp_has_replies( $has, $query ) の$hasはどこから出てきたのでしょうか?またなぜ$hasという変数なのか?$hasという変数でなくでも何でもいいのか?
2.おしえていただいたコードのadd_filter( ‘bbp_has_replies’, ‘my_bbp_has_replies’, 10, 2 );
の「10, 2」はどういう意味でしょうか?10個の記事を2ページに分けろという意味でしょうか?試しにそちらを削除したらエラーが起きました。こちらに数字の入力は必須なのでしょうか?
ポイントがずれているかもしれませんが、わかりましたらおしえていただきたいです。
よろしくお願いいたします。
1.bbp_has_replies()という関数になりかするのはわかりますが、おしえていただいたコードのmy_bbp_has_replies( $has, $query ) の$hasはどこから出てきたのでしょうか?またなぜ$hasという変数なのか?$hasという変数でなくでも何でもいいのか?
bbp_has_replies() は、返信があるかどうかをチェックする関数で、返信のループの直前で呼び出されるので、今回は bbp_has_replies() 内でフックされる bbp_has_replies フックを利用しました。
bbp_has_replies フックは、bbp_has_replies() 内で下記のように呼び出されています。
apply_filters( 'bbp_has_replies', $bbp->reply_query->have_posts(), $bbp->reply_query );
my_bbp_has_replies( $has, $query ) の $has は $bbp->reply_query->have_posts() に相当します。返信があれば true、なければ false になります。
2.おしえていただいたコードのadd_filter( ‘bbp_has_replies’, ‘my_bbp_has_replies’, 10, 2 );
の「10, 2」はどういう意味でしょうか?10個の記事を2ページに分けろという意味でしょうか?試しにそちらを削除したらエラーが起きました。こちらに数字の入力は必須なのでしょうか?
add_filter 関数の第3、第4引数です。第3引数は、フィルターフックに登録された関数の中でこの関数を実行する順序になります。標準が10です。第4引数は、関数が受け取る引数の個数です。今回は $query が必要なので2となります。
詳細は add_filter() のリファレンスをご覧ください。
ご返信ありがとうございます。
bbpress/includes/replies/template.phpの中にご指摘のコードがありました。
apply_filters( 'bbp_has_replies', $bbp->reply_query->have_posts(), $bbp->reply_query );
なんとなくやっていることはわかりました。
あとはapply_filtersとadd_filterについて調べたいと思います。
ishitakaさん、この度はありがとうございました。
また何かありましたらよろしくお願いいたします。