Buddypress:组目录的默认排序顺序

Buddypress: Default sort oder for Group Directory

我希望组目录中的组在 Buddypress 中按字母顺序排序,除非用户通过下拉菜单选择自己的排序。

我尝试通过自定义函数:

add_filter('bp_after_has_groups_parse_args', function ($options) 
{
    if (bp_is_groups_directory()) {
        if(!$options['type']) 
            $options['type'] = 'alphabetical';
        
    }
    return $options;
});

根据文档,当用户尚未在下拉列表中选择一个选项时,$options['type'] 为“null”,即当它是初始排序时。

至少第 995 行是这么说的: https://github.com/buddypress/BuddyPress/blob/master/src/bp-groups/classes/class-bp-groups-group.php#L995

不过好像不行。 有什么想法吗?

在buddy press 10.0.0中,你只需要在以下位置更改bp-groups-template.php:

/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php

在文件中,找到这个区域:

/**

  • 启动群组模板循环。

在函数bp_has_groups中找到这一段:

$r = bp_parse_args(
    $args,
    array(
        'type'               => $type,
        'order'              => 'ASC',   // changed from DESC 
        'orderby'            => 'name',  // changed from last_activity 

我在 // 之后添加了信息,所以我知道对原始内容进行了哪些更改。

这会将群组页面的默认首次查看设置为按字母顺序排列的列表。我们在 BuddyPress 之上实施 Youzify,因此我还更改了

中列出的默认顺序

/wp-content/plugins/youzify/includes/public/templates/groups/index.php

/** * 在组目录组类型中触发。 * * @since 1.2.0 */ do_action('bp_groups_directory_group_types'); ?>

            <li id="groups-order-select" class="last filter">

                <label for="groups-order-by"><?php _e( 'Order By:', 'youzify' ); ?></label>

                <select id="groups-order-by">
                    <option value="alphabetical"><?php _e( 'Alphabetical', 'youzify' ); ?></option>
                    <option value="active"><?php _e( 'Last Active', 'youzify' ); ?></option>
                    <option value="popular"><?php _e( 'Most Members', 'youzify' ); ?></option>
                    <option value="newest"><?php _e( 'Newly Created', 'youzify' ); ?></option>

                    <?php

                    /**
                     * Fires inside the groups directory group order options.
                     *
                     * @since 1.2.0
                     */
                    do_action( 'bp_groups_directory_order_options' ); ?>
                </select>

这里与原来的唯一变化就是走这条线:

                    <option value="alphabetical"><?php _e( 'Alphabetical', 'youzify' ); ?></option>

从列表底部到顶部。

希望这对以后的人有所帮助。