2016-04-05 3 views
0

У меня setup Buddypress, чтобы иметь 3 группы полей. Пока пользователь находится на переднем конце, редактируя свой профиль, мне бы хотелось, чтобы при нажатии кнопки «Сохранить» он автоматически переходит к следующей группе полей.Buddypress редактировать профиль последовательный заказ

Так, например, я редактирую свой профиль для группы полей 1 и нажимаю save, он берет меня в полевую группу 2, поэтому я могу отредактировать это, не нажимая на маркер nav для поля.

Поскольку это форма с методом = "пост", я предположил, что было бы проще проверить значение столбца. Проблема в том, что я редактирую профиль и нажимаю save, там нет данных для публикации. Im, используя это только для устранения неполадок (обратите внимание на эти возвращаются пустыми, даже после сохранения I):

//Next step progression 
//Check the field group 
echo bp_get_current_profile_group_id(); 
if(bp_get_current_profile_group_id() == 1) { 
    echo '<pre>'; 
    print_r($_GET); 
    echo '</pre>'; 
    echo '<pre>'; 
    print_r($_POST); 
    echo '</pre>'; 
    if(isset($_POST['_wpnonce'])){ ?> 
     <script> 
     jQuery(document).ready(function($){ 
      alert('Saved'); 
     }); 
     </script> 
    <?php } 
} elseif(bp_get_current_profile_group_id() == 2) { 

} 

После копать немного глубже я вижу действие формы заключается в следующем: <?php bp_the_profile_group_edit_form_action(); ?>, который вызывает функцию <?php bp_get_the_profile_group_edit_form_action(); ?>

Я вижу, может добавить фильтр/действие от how this function is documented, но я не могу заставить его работать.

ответ

1

Попробуйте использовать этот крюк:

do_action('xprofile_updated_profile', bp_displayed_user_id(), $posted_field_ids, $errors, $old_values, $new_values); 

Найдено в buddypress\bp-xprofile\bp-xprofile-screens.php

Вам нужно будет написать свое сообщение обратной связи и проверьте $posted_field_ids, чтобы выяснить, к какой группе пользователь редактировал.

+0

Это определенно получил меня к ответу. Спасибо! – Derek

0

Благодаря shanebp я был в состоянии найти правильный крючок и получить рабочий раствор так:

в BuddyPress/участников/одиночный/профиль/edit.php Я добавил это внутри тега формы:

<input type="hidden" name="group_id" id="groupd_id" value="<?php echo bp_get_current_profile_group_id(); ?>" /> 

Тогда в моих функций я сделал это который разве самый динамичный, но получил меня, где я должен был пойти в случае, если кто-то считает, что это:

function update_xprofile_group_progressions($user_id) { 
    if (!empty($user_id)) { 
     if(isset($_POST['group_id']) && $_POST['group_id'] == 1){ 
      $url = home_url() . '/all-members/' . bp_core_get_username($user_id) . '/profile/edit/group/2/'; 
      wp_redirect($url); 
      exit; 

     } elseif(isset($_POST['group_id']) && $_POST['group_id'] == 2){ 
      $url = home_url() . '/all-members/' . bp_core_get_username($user_id) . '/profile/edit/group/4/'; 
      wp_redirect($url); 
      exit; 

     } 
    } 
} 
add_action('xprofile_updated_profile', 'update_xprofile_group_progressions', 0, 1); 
+0

Вы должны обязательно проверить наличие ошибок перед перенаправлением. И вы можете использовать bp_core_redirect() вместо wp_redirect - имеет некоторые преимущества. – shanebp

Смежные вопросы