更改BuddyPress中的XProfile可见性选项

时间:2015-02-15 作者:Stefan Malic

我正在使用Buddypress Extended Profile,当前的可见性选项是:-每个人-只有我-我的朋友-所有成员

我需要删除“我的朋友”和“所有成员”,只留下“每个人”和“只有我”。之后,我需要将“Everyone”重命名为“Public”,将“Only Me”重命名为“Private”。我已经在谷歌上搜索了几个小时,但没有找到任何可以帮助我实现这一目标的钩子、过滤器或任何东西。

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

有一个过滤器:bp_xprofile_get_visibility_levels. 它用于过滤可见性级别数组,初始化如下:

$this->visibility_levels = array(
    \'public\' => array(
        \'id\'      => \'public\',
        \'label\' => _x( \'Everyone\', \'Visibility level setting\', \'buddypress\' )
    ),
    \'adminsonly\' => array(
        \'id\'      => \'adminsonly\',
        \'label\' => _x( \'Only Me\', \'Visibility level setting\', \'buddypress\' )
    ),
    \'loggedin\' => array(
        \'id\'      => \'loggedin\',
        \'label\' => _x( \'All Members\', \'Visibility level setting\', \'buddypress\' )
    )
);

if ( bp_is_active( \'friends\' ) ) {
    $this->visibility_levels[\'friends\'] = array(
        \'id\'    => \'friends\',
        \'label\' => _x( \'My Friends\', \'Visibility level setting\', \'buddypress\' )
    );
}
(上述代码位于bp-xprofile/bp-xprofile-loader.php)

因此,在你的情况下,你会想:

add_filter(
    \'bp_xprofile_get_visibility_levels\',
    function($levels)
        {
        // remove "My Friends"
        if(isset($levels[\'friends\'])) unset($levels[\'friends\']);
        // remove "All Members"
        if(isset($levels[\'loggedin\'])) unset($levels[\'loggedin\']);
        // change "Everyone" to "Public"
        if(isset($levels[\'public\'])) 
            $levels[\'public\'][\'label\']=_x(\'Public\',\'Visibility level setting\',\'buddypress\');
        // change "Only Me" to "Private"
        if(isset($levels[\'adminsonly\']))
            $levels[\'adminsonly\'][\'label\']=_x(\'Private\',\'Visibility level setting\',\'buddypress\');
        return $levels;
        }
    );
请记住,它是一个过滤器,其他人可能已经在您之前钩住了它,因此请始终检查给定的数组元素isset().

作为旁注,这里有一些翻译方面的考虑,但我想详细阐述这一点超出了范围。

结束

相关推荐

强制将BuddyPress组设置为私有

我想让群创建者没有创建公共或隐藏群的选项。所有组都应该是私有的。这样人们仍然可以看到这些团体,但必须被邀请或要求加入。最简单的方法是隐藏单选按钮(见附图)。但我想使用插件或php来实现它。那么,我如何才能强制buddypress将每个组设置为私有?