BuddyPressでサイトAをツイッター風にSNS化して、全ユーザーのつぶやきをRSSでタイムライン形式に20件、サイトBに読み込んでいます。
とあるユーザーが連投する事から、サイトBに読み込んでいるつぶやきの一覧がそのユーザー一色になってしまい
対策として「全ユーザーのつぶやきを最新順から全20件」という現在のfeedの出力内容を
「全ユーザーのつぶやきを最新順から各ユーザー1件まで、全20件」という条件に変更したいと考えています。
BuddyPressのfeedの出力自体は「class-bp-activity-feed.php」で管理されていて、以下がそのソースになります。
■「class-bp-activity-feed.php」のソース
https://github.com/buddypress/BuddyPress-build/blob/master/bp-activity/classes/class-bp-activity-feed.php
bp_has_activities()という独自の関数が使われていて、現在はその関数を以下のようにカスタマイズして
ループ内でアクティビティの更新(つぶやき投稿)のみを表示させるようにしています。
php
1<?php if ( bp_has_activities( $this->activity_args ) ) : ?> 2
↓
php
1<?php if ( bp_has_activities( bp_ajax_querystring( 'activity' ).'&action=activity_update' ) ) : ?> 2
■参考URL
https://codex.buddypress.org/developer/loops-reference/the-activity-stream-loop/
ここから更に条件を追加して「各ユーザーの投稿を最大1件まで」とできれば問題解決なのですが、
どのような条件式を記述すればいいのか分かりません。
お恥ずかしながらphpの知識に関しては、ほとんど素人です。
ネットの情報を頼りに「この部分をこうすればこんな風な結果が得られるかも」と何となく感覚的に総当たりで試してこれまで何とかなってきましたが
理論的には理解していないので、ネットに情報が殆どない今回のケースでは行き詰ってしまった次第です。
何卒、皆様のお知恵を拝借させていただきたく、よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/09 06:21