如何将BuddyPress菜单项重定向到Wordpress网站上的其他页面?

时间:2016-01-20 05:59:08

标签: php wordpress buddypress

所以我正在网站上工作,我在BuddyPress个人资料页面上添加了一个新的菜单项。菜单已通过bp-custom.php页面正确添加。但是当我点击菜单时,我无法将其重定向到我想要的页面。代码类似于:

function add_gift_card() {

global $bp;

bp_core_new_nav_item( array(
    'name'                  => 'Gift Cards',
    'slug'                  => 'shop',
//  'parent_url'            => get_option('siteurl').'/shop',
//  'parent_slug'           => $bp->profile->slug,
    'screen_function'       => 'gift_card_screen',          
    'position'              => 90,
    'default_subnav_slug'   => 'shop'
) );
}

add_action( 'bp_setup_nav', 'add_gift_card', 100 );

function gift_card_screen() {
add_action( 'bp_template_content', 'gift_card_screen_content' );
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
}

function gift_card_screen_content() { 
echo 'Gift Cards<br/>';
}

如何将其重定向到网站上的新页面而不管root用户域?

3 个答案:

答案 0 :(得分:1)

改变这个:

//  'parent_url'            => get_option('siteurl').'/shop',
//  'parent_slug'           => $bp->profile->slug,

对此:

'parent_url'            => $bp->displayed_user->domain,
'parent_slug'           => $bp->profile->slug,

然后试试这个:

function gift_card_screen_content() { 
     bp_core_redirect( site_url( '/shop/' ) );
}

答案 1 :(得分:0)

您需要做的是发出带有Location键和值的HTTP标头。 WordPress有一个功能,将为您执行此操作。

您正在寻找的功能是wp_redirect()。规范的例子:

<?php
    wp_redirect( $location, $status );
    exit;
?>

它不是黑魔法,基本上是这样的:

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.anyhost.com"); 

但最好在WordPress环境中使用WordPress相关功能,因为开发人员喜欢响应这些类型的操作并过滤各种相关数据。

答案 2 :(得分:0)

我必须删除模板功能,才能正确重定向。正如shanebp所建议的那样,bp_core_redirect函数非常方便。代码现在看起来像这样:

function add_gift_card() {

global $bp;

bp_core_new_nav_item( array(
    'name'                  => 'Gift Cards',
    'slug'                  => 'shop',
    'screen_function'       => 'gift_card_screen',          
    'position'              => 90,
    'default_subnav_slug'   => 'shop'
) );
}

add_action( 'bp_setup_nav', 'add_gift_card', 100 );

function gift_card_screen() {

bp_core_redirect( get_option('siteurl').'/shop/' );

}