按用户角色错误的BuddyPress成员目录成员类型

时间:2019-05-20 08:55:13

标签: php wordpress buddypress

我要在BuddyPress成员目录的成员类型列表中添加一个标签。我希望它按用户角色进行过滤。我已经尝试过,但是有两个大问题。 1.无法通过AJAX运行。显示400错误。 2.'member-order-by'过滤器也不起作用。它正在加载所有用户而不是特定角色。

仅针对subscriber生成的用户ID:

function getSubscriberIds() {
   $user_ids = get_transient( 'bp_only_subscriber_ids' );
   if ( false === $user_ids ) {
     $args     = array(
    'role__in' => 'subscriber',
    'fields'   => 'ID'
     );
     $user_ids = get_users( $args );
     set_transient( 'bp_only_subscriber_ids', $user_ids, 12 * HOUR_IN_SECONDS );
    }

    return $user_ids;
}

生成member_types标签:

function onlySubscribersTab() {

    $button_args = array(
        'id'                => 'subscribers',
        'component'         => 'members',
        'link_text'         => sprintf( __( 'Subscribers %s', 'buddypress' ), '<span>' . count( getSubscriberIds() ) . '</span>' ),
        'link_title'        => __( 'Subscribers', 'buddypress' ),
        'link_class'        => 'subscribers no-ajax',
        'link_href'         => bp_get_members_directory_permalink() . '?show=subscribers',
        'wrapper'           => false,
        'block_self'        => false,
        'must_be_logged_in' => false
        );

    ?>

    <li id="subscribers" <?php if ( isset( $_GET['show'] ) && $_GET['show'] == 'subscribers' ) { ?> class="current" <?php } ?>><?php echo bp_get_button( $button_args ); ?></li>
    <?php
}
add_action( 'bp_members_directory_member_types',  'onlySubscribersTab' );

然后仅过滤subscribers

function filterSubscribers( $r ) {
    if( isset( $_GET['show'] ) && $_GET['show'] == 'subscribers' ) {
        $user_ids = $this->getUsersIds();
        if( $user_ids ) {
            $r['include'] = $user_ids;
        }

    }
    return $r;
}
add_filter( 'bp_after_core_get_users_parse_args',  'filterSubscribers' );

现在,它正在工作,但没有达到我的预期。我想通过AJAX进行工作。我从按钮类中删除了no-ajax,但是没有用。它显示400错误。 members-order-by过滤器也不起作用。当我更改过滤器时,它显示的是所有用户而不是订阅者。

你能帮我吗?

预先感谢:)

0 个答案:

没有答案