我已经设置了Buddypress有3个字段组。当用户在前端编辑他们的个人资料时,我希望如果他们点击“保存”时会自动进入下一个字段组。
例如,我正在编辑我的字段组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的过滤器/操作,但我似乎无法使其正常工作。
答案 0 :(得分: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
以确定用户正在编辑哪个组。
答案 1 :(得分:0)
感谢shanebp,我能够找到合适的钩子,并得到一个像这样的工作解决方案:
在buddypress / members / single / profile / edit.php我在form标签中添加了这个:
<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);