2016-04-05 69 views
0

我有安装BuddyPress的有3个小组。当用户在前台编辑自己的个人资料,我想,如果当他们点击保存,它会自动前进到下一个字段组。BuddyPress的编辑个人资料顺序

因此,举例来说,我编辑我的场1组配置文件,点击保存,就带我到现场组2,所以我可以编辑,而无需点击导航标签领域。

因为这是与方法的形式=“POST”我假定这将是作为检查后值一样简单。问题是当我编辑配置文件,并保存没有发布数据。即时通讯使用这只是用于故障排除(注意,这些空车返回我节省后):

//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

相关问题