Типы участников каталога членов BuddyPress по ошибке роли пользователя - PullRequest
0 голосов
/ 20 мая 2019

Я добавляю вкладку в список типов членов в каталоге членов BuddyPress.Я хочу, чтобы он фильтровал по ролям пользователей.Я уже пробовал, но есть две большие проблемы.1. Не работает через AJAX.Это показывает 400 ошибок.2. Фильтр «члены по порядку» тоже не работает.Он загружает всех пользователей вместо определенных ролей.

Сгенерированные идентификаторы пользователей, относящиеся только к subscriber:

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 фильтры тоже не работают.Когда я меняю фильтр, он показывает всех пользователей, а не подписчиков.

Можете ли вы помочь мне?

Заранее спасибо:)

...