显示已定义的BuddyPress组的活动

时间:2013-04-04 作者:chifliiiii

我只想显示特定组的活动循环。

如果我使用

<?php if ( bp_has_activities( array(bp_ajax_querystring( \'activity\' ),\'object\' => \'groups\',\'per_page\'=>6 ,\'primary_id\' => $group_id, \'page\' => isset($_REQUEST[\'page\']) ? $_REQUEST[\'page\'] : 1 ) ) ) : ?>
我可以传递一个组ID来筛选结果。

问题是我有一个组ID数组。我试过了

<?php if ( bp_has_activities( array(bp_ajax_querystring( \'activity\' ),\'object\' => \'groups\',\'per_page\'=>6 ,\'in\' => $groups_ids, \'page\' => isset($_REQUEST[\'page\']) ? $_REQUEST[\'page\'] : 1 ) ) ) : ?>
但是\'in\' => $array 仅接受活动ID数组。如何做到这一点?

2 个回复
最合适的回答,由SO网友:chifliiiii 整理而成

获取所有groups\\u ID后,我通过执行以下操作获取所有activities\\u ID:

<?php
    global $bp,$wpdb;
    $groups_ids = implode(\', \', $groups_ids);
    $sql = "SELECT id FROM {$bp->activity->table_name} WHERE component = \'groups\' AND item_id IN ({$groups_ids})";
    $activity_ids = $wpdb->get_results( $sql);
    $a_id = array();
    foreach ($activity_ids as $activity_id )
    {
        $a_id[] = $activity_id->id;
    }
?>  
然后,通过执行以下操作,我只获得一个具有指定组的活动循环:

$params = array(\'per_page\' => \'6\',  \'in\' => $a_id);

if ( bp_has_activities($params) )   :
endif;

SO网友:shanebp

您应该说明您使用的BP版本。

尝试使用:

function groups_get_groups( $args = \'\' ) 
in bp-groups\\bp-groups-functions.php 
或:

function bp_has_groups( $args = \'\' ) 
in bp-groups\\bp-groups-template.php 
请注意,这两个函数中都包含重新分组ID。

然后使用循环。while ( bp_groups() ) : bp_the_group();

通常,查看bp默认主题文件以了解如何调用这些文件。在这种情况下,请查看:bp-themes\\bp-default\\groups\\groups-loop.phpwill让事情变得更容易。

结束