This is how I got my button to work (I point to url /articles/postarticle but you can change that to whatever you want
function redirect2profile(){
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if($_SERVER['REQUEST_URI'] == '/articles/postarticle/' && is_plugin_active('buddypress/bp-loader.php') && is_user_logged_in()){
global $current_user;
wp_redirect( get_bloginfo('url') . '/'. $current_user->user_login . '/articles/new');
exit();
} else {
if ($_SERVER['REQUEST_URI'] == '/profile/' && is_plugin_active('buddypress/bp-loader.php') && !is_user_logged_in()) {
wp_redirect( get_bloginfo('url') . '/register/');
exit();
}}
}
add_action('init', 'redirect2profile');
slight tweak
function redirect2profile(){
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if($_SERVER['REQUEST_URI'] == '/articles/postarticle/' && is_plugin_active('buddypress/bp-loader.php') && is_user_logged_in()){
global $current_user;
wp_redirect( get_bloginfo('url') . '/'. $current_user->user_login . '/articles/new');
exit();
} else {
if ($_SERVER['REQUEST_URI'] == '/articles/postarticle/' && is_plugin_active('buddypress/bp-loader.php') && !is_user_logged_in()) {
wp_redirect( get_bloginfo('url') . '/wplogin?action=register');
exit();
}}
}
add_action('init', 'redirect2profile');