seijunです。自己レスで恐縮ですが、補足させて頂きます。
行いたいことは、①親サイトは普通のある団体のサイト②子サイトはSNSサイトで、親サイトの右サイドブロックに、子サイトの最新フォーラムトピックスを表示することです。
ネットワーク関数のswitch_to_blog()関数を使えば、子サイトの最新フォーラムトピックを表示する方法がわかればうまく行くのではないかと思い、最初はBB_Queryクラスを使おうとしましたが、何か特殊なことをしない限り、クラスがないと言われます。includeしてみましたが、そのたびごとに他のPHPの関数がないと怒られ、収拾がつきません。
そこで、本家のサイトを物色して、BP_Forums_Template_Forumなるクラスがあるのを見出し、これをhome.phpに突っ込んだところ、そのクラスはありますということなので、他に必要と思われる関数をincludeして、試しに次のようなスクリプトをかいてみました。
<div>
<p style="color:blue; border-style:solid; border-width:1px; background-color:linen">
<h2>Forumの投稿記事</h2>
</p>
<?php if(class_exists( 'BP_Forums_Template_Forum' )): ?>
<?php echo "Class BP_Forums_Template_Forumがあります。<br>"; ?>
<?php
$forum_id = 2; $user_id = ''; $no_stickies = '';
$post_query = new BP_Forums_Template_Forum( $type = 'newest', $forum_id, $user_id, $page = 1, $per_page = 10, $max = 10, $no_stickies, $search_terms = '' );
if ($post_query->has_topics()): ?>
<ul>
<?php while ($post_query->has_topics()) : $post_query->the_topic(); ?>
<li><a href="<?php bp_the_topic_permalink() ; ?>"><?php bp_the_topic_title(); ?> </a></li>
<?php endwhile; ?>
</ul>
<?php else: ?>
<?php echo "Topicがありません。<br>"; ?>
<?php endif; ?>
<?php else: ?>
<?php echo "Class BP_Forums_Template_Forumがありません。<br>"; ?>
<?php endif; ?>
</div>
このスクリプト、一応、動いているのですが、結果はTopicがありません、となります。
子サイトにはグループを2つ作り、それぞれにforumを1つずつ作成し、それぞれのforumに投稿しているので、topicがないということはないんじゃないか、と思います。
引数で$forum_idというのがありますが、これを0にすると、無限ループになって、Chromeが警告を発します。1ないし2にすると、トピックはありません、となります。ということで、$forum_idの指定の仕方が間違っているのかとも思いますが、BuddyPressの場合の各フォーラムにはidが付いていると推測しますものの、それがどういうものなのか、よくわかりません。
ご教示いただければ幸いに存じます。