我要在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
过滤器也不起作用。当我更改过滤器时,它显示的是所有用户而不是订阅者。
你能帮我吗?
预先感谢:)