2016-01-20 120 views
0

所以我在一個網站上工作,並且我在我的BuddyPress個人資料頁面上添加了一個新的菜單項。菜單已通過bp-custom.php頁面正確添加。但是當我點擊菜單時,我無法將其重定向到我想要的頁面。代碼是這樣的:如何將BuddyPress菜單項重定向到Wordpress網站上的其他頁面?

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用戶域?

回答

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/'); 

} 
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的環境中,因爲開發人員喜歡這些類型的操作響應並過濾各種相關數據。

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/')); 
} 
+0

感謝您的回覆。我刪除了模板函數並使用了bp_core_redirect。它現在按需要工作。 – Neels

相關問題