Прежде всего, я видел много людей, пытающихся выполнить аналогичную задачу, а просто создать новую вкладку с суб-вкладками в меню пользовательского профиля. Мне удалось это сделать, но я не могу заставить обработчик URL правильно работать. Когда я нажимаю на первую вкладку, она просто возвращает меня на главную страницу для профиля пользователя, и когда я нажимаю на любые дополнительные вкладки, я получаю 404 ошибки. У меня такое чувство, что я пропустил что-то довольно простое, и за последние пару недель я пытался узнать, как сделать эту работу без везения. Если бы кто-то мог помочь мне в том, как правильно это сделать, я был бы очень благодарен, и я думаю, что многие другие найдут это сообщение полезным в будущем.Подсказки и вкладки нового профиля Buddypress: Как правильно настроить URL-адрес URL-адреса?
Для записи вкладка основного профиля работает правильно, но на суб-вкладках нет.
Вот код, который я в настоящее время в моем п.н.-custom.php файл
// My Membership Profile Tab
function profile_new_nav_item() {
global $bp;
bp_core_new_nav_item(
array(
'name' => 'My Membership',
'slug' => 'my-membership',
'default_subnav_slug' => 'extra_sub_tab', // We add this submenu item below
'screen_function' => 'view_manage_tab_main'
)
);
}
add_action('bp_setup_nav', 'profile_new_nav_item', 10);
function view_manage_tab_main() {
add_action('bp_template_content', 'bp_template_content_main_function');
bp_core_load_template('template_content');
}
function bp_template_content_main_function() {
if (! is_user_logged_in()) {
wp_login_form(array('echo' => true));
}
}
function profile_new_subnav_item() {
global $bp;
bp_core_new_subnav_item(array(
'name' => 'Membership Level',
'slug' => 'extra_sub_tab',
'parent_url' => $bp->loggedin_user->domain . $bp->bp_nav[ 'extra_tab' ][ 'slug' ] . '/',
'parent_slug' => $bp->bp_nav[ 'my-membership' ][ 'slug' ],
'position' => 10,
'screen_function' => 'view_manage_sub_tab_main'
));
}
add_action('bp_setup_nav', 'profile_new_subnav_item', 10);
function view_manage_sub_tab_main() {
add_action('bp_template_content', 'bp_template_content_sub_function');
bp_core_load_template('template_content');
}
function bp_template_content_sub_function() {
if (is_user_logged_in()) {
//Add shortcode to display content in sub tab
echo do_shortcode('[membership]');
} else {
wp_login_form(array('echo' => true));
}
}
// My Billing Profile Tab
function profile_new_subnav_item_billing() {
global $bp;
bp_core_new_subnav_item(array(
'name' => 'Billing',
'slug' => 'extra_sub_tab_billing',
'parent_url' => $bp->loggedin_user->domain . $bp->bp_nav[ 'extra_tab' ][ 'slug' ] . '/',
'parent_slug' => $bp->bp_nav[ 'my-membership' ][ 'slug' ],
'position' => 20,
'screen_function' => 'view_manage_sub_tab_billing'
));
}
add_action('bp_setup_nav', 'profile_new_subnav_item_billing', 20);
function view_manage_sub_tab_billing() {
add_action('bp_template_content', 'bp_template_content_sub_function_billing');
bp_core_load_template('template_content');
}
function bp_template_content_sub_function_billing() {
if (is_user_logged_in()) {
//Add shortcode to display content in sub tab
echo do_shortcode('[billing]');
} else {
wp_login_form(array('echo' => true));
}
}