【问题标题】:Buddypress: Default sort oder for Group DirectoryBuddypress:组目录的默认排序顺序
【发布时间】:2021-01-08 12:01:23
【问题描述】:

我希望组目录中的组在 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

但它似乎不起作用。 有什么想法吗?

【问题讨论】:

  • 尝试删除这个` if(!$options['type']) `
  • 不幸的是,我认为这没有意义,因为下拉排序根本不可能了。我只想设置初始默认排序
  • @shanebp:或者你怎么看?是不是,当我像你说的那样删除时,它是在全球范围内强制执行的?
  • 如果用户未设置,type 将设置为active。它永远不是null。我不知道如何使用过滤器来避免这种情况。尝试这种方法,调整以使用新模板。 green-box.co.uk/…
  • @shanebp 我找到了另一个解决方案,不幸的是它需要修改核心文件......因为模板在 buddyboss 中没有正确分离。 (我正在使用 buddyboss)。修改 bp_nouveau_get_groups_filters 并将字母选项移到顶部 -> 这样在用户尚未选择另一个排序的情况下选择它:)

标签: php wordpress directory buddypress


【解决方案1】:

在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,所以我还更改了默认的 Order By 列表

/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>

从列表底部到顶部。

希望这对以后的任何人都有帮助。

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 2011-04-13
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多