Permitir guardar opciones de diferentes grupos a la vez en Buddypress
Buddypress es un plugin de WordPress que permite convertirlo en una red social. El plugin está bastante bien, pero una cosa que no me gusta es cómo muestra la pantalla de opciones de tu perfil, dividiendola en distintas secciones: profile, general, … Por lo que tener una única pantalla de opciones es un dolor de cabeza, sobre todo porque cuando se guardan los datos de un grupo de opciones, hace un redirect por lo que no podemos continuar guardando datos.
Para poder solucionar esto hay que mirar qué grupos de opciones se ejecutan inicialmente, y ver que antes del redirect hay un action que deberemos tomar en cuenta:
add_action( 'bp_core_general_settings_after_save', 'iqn_more_settings_save');
function iqn_more_settings_save() {
global $bp;
// Guardar datos del profile
$bp->current_action = 'profile';
$_REQUEST['_wpnonce'] = $_REQUEST['_wpnonce_xprofile'];
bp_xprofile_action_settings();
}
En mi caso, inicialmente, se guardaba antes el general settings, por lo que en el action bp_core_general_settings_after_save lo que hago es llamar a la siguiente función que guarda los siguientes datos.
También es necesario que _wpnonce se modifique para que el formulario no falle por temas de seguridad, por lo que hay que añadir en nuestro formulario lo siguiente:
wp_nonce_field( 'bp_xprofile_settings', '_wpnonce_xprofile' );