Я пытаюсь переопределить базовую функцию BuddyPress, чтобы покинуть группу. Я хочу добавить новую функцию в функцию, которая просто проверяет, может ли пользователь покинуть группу или нет, как указано администратором, если да, то функция удалит и заставить пользователя уйти, если нет, я хочу показать предупреждение и заставить его застрять на экране
вот код для плагина
add_action('bp_groups_admin_meta_boxes','wdm_groups_custom_group_fields_editable');
function wdm_groups_custom_group_fields_editable(){
add_meta_box( 'wdm_mandatory', 'Mandatory groups Settings', 'wdm_bp_groups_mandatory', get_current_screen()->id, 'normal', 'core' );
}
function wdm_bp_groups_mandatory($item){
$group_id = $item->id;
$mandatoryornot = groups_get_groupmeta($group_id, 'wdm_mandatory', true);
$msg=groups_get_groupmeta($group_id, 'wdm_msg', true);
?>
<br>
<div>
<input type="checkbox" id="scales" name="wdm_mandatory"
<?php if( $mandatoryornot==1){ echo 'checked';} ?>>
<label for="scales"><b>if this checked the group members cannot leave and group</b></label>
</div>
<br><br>
<div class="form-group col-sm-12">
<b>Custom Message if clicked the Leave Group</b><br>
<input type="text" class="form-control" id="email" placeholder="Enter your custom msg on leave group" name="wdm_msg" size="50" <?php if(!empty($msg)){ echo 'value="'.$msg.'"'; }?>>
</div>
<script type="text/javascript">jQuery('input[name="wdm_mandatory"]').change(function(){
this.value = (Number(this.checked));
});</script>
<?php }
add_action('bp_groups_admin_load','wdm_bp_groups_admin_load');
function wdm_bp_groups_admin_load($temp){
if(isset($_POST['wdm_mandatory']) && $_POST['wdm_msg']){
///print_r($_POST);
groups_update_groupmeta($_REQUEST['gid'], 'wdm_mandatory', $_POST['wdm_mandatory']);
groups_update_groupmeta($_REQUEST['gid'], 'wdm_msg', $_POST['wdm_msg']);
}
}
add_action( 'groups_leave_group', 'newaction', 9, 2 );
function newaction ( $group_id, $user_id = 0 ) {
// get this so we can use the class later.
if ( empty( $user_id ) )
$user_id = bp_loggedin_user_id();
// Don't let single admins leave the group.
if ( count( groups_get_group_admins( $group_id ) ) < 2 ) {
if ( groups_is_user_admin( $user_id, $group_id ) ) {
bp_core_add_message( __( 'As the only admin, you cannot leave the group.', 'buddypress' ), 'error' );
return false;
}
}
//getting the grouup meta check
$mandatory=groups_get_groupmeta($group_id, 'wdm_mandatory', true);
$msg=groups_get_groupmeta($group_id, 'wdm_msg', true);
if($mandatory==1){
bp_core_add_message( __( $msg, 'buddypress' ), 'error' );
return false;
}
}
Я попытался add_action и add_filter код приходит в мой функция работает, но даже если я установил return false, это удаляет моего пользователя из группы, пожалуйста, помогите мне в этом
, также я пытался таким образом, но член удален из группы
add_filter( 'groups_leave_group', function( $group_id, $user_id = 0 ) {
// get this so we can use the class later.
if ( empty( $user_id ) )
$user_id = bp_loggedin_user_id();
// Don't let single admins leave the group.
if ( count( groups_get_group_admins( $group_id ) ) < 2 ) {
if ( groups_is_user_admin( $user_id, $group_id ) ) {
bp_core_add_message( __( 'As the only admin, you cannot leave the group.', 'buddypress' ), 'error' );
return false;
}
}
//getting the grouup meta check
$mandatory=groups_get_groupmeta($group_id, 'wdm_mandatory', true);
$msg=groups_get_groupmeta($group_id, 'wdm_msg', true);
if($mandatory==1){
bp_core_add_message( __( $msg, 'buddypress' ), 'error' );
return false;
}else{
if ( ! BP_Groups_Member::delete( $user_id, $group_id ) ) {
return false;
}
bp_core_add_message( __( 'You successfully left the group.', 'buddypress' ) );
/**
// * Fires after a user leaves a group.
// *
// * @since 1.0.0
// *
// * @param int $group_id ID of the group.
// * @param int $user_id ID of the user leaving the group.
// */
do_action( 'groups_leave_group', $group_id, $user_id );
return true;
}
}, 100, 2 );