使用BuddyPress区分配置文件和活动的条件标记

时间:2012-03-13 作者:Pollux Khafra

我在buddypress论坛上找不到任何帮助,所以我想在这里问一下。我正在尝试使用条件标记,这样我就可以为配置文件页面提供与活动页面不同的侧栏。出于某种原因,我在侧边栏中设置它的方式。php仍然返回默认值。有什么建议吗?

<?php
 if (is_single()){
  include(STYLESHEETPATH.\'/sidebar-single.php\');}
 elseif (is_page()){
  include(STYLESHEETPATH.\'/sidebar-index.php\');}
 elseif (is_category(\'fame-game\')){
  include(STYLESHEETPATH.\'/sidebar-fame-game.php\');}
 elseif (bp_is_user_profile()){
  include(STYLESHEETPATH.\'/sidebar-act.php\');}
 else {
  include(STYLESHEETPATH.\'/sidebar-index.php\');}
?>
buddypress条件语句codex链接http://codex.buddypress.org/developer-docs/conditional-template-tags/

已解决!请参阅下面由Boone Grages给出的答案和评论。下面是解析的代码。

<?php
 if (is_single()){
 include(STYLESHEETPATH.\'/sidebar-single.php\');}
 elseif (is_page() && !bp_is_profile_component()){
 include(STYLESHEETPATH.\'/sidebar-index.php\');}
 elseif (is_category(\'fame-game\')){
 include(STYLESHEETPATH.\'/sidebar-fame-game.php\');}
 elseif (bp_is_profile_component()) {
 include(STYLESHEETPATH.\'/sidebar-act.php\');}
 else {
 include(STYLESHEETPATH.\'/sidebar-index.php\');}
?>

2 个回复
最合适的回答,由SO网友:Boone Gorges 整理而成

你的问题可能是bp_is_user_profile(). 只有当您真正查看xprofile组件(用户页面的“配置文件”选项卡)时,才会返回true。bp_is_user() 更为一般,无论何时查看用户页面(即使是用户活动、用户组等),都会返回true。

[编辑]

在与OP进一步讨论后,似乎罪魁祸首是is_page(). 自BP 1.5以来,BuddyPress使用WP页面显示内容。这意味着is_page() 案件正在恢复为真。要从该条件中排除BP内容,请修改您的检查如下:

is_page() && !bp_is_blog_page()

或者,如果您想要is_page() 要在BP内容上显示的内容,除用户页面外,

is_page() && !bp_is_user()

或者,仅限于个人资料,

is_page() && !bp_is_profile_component()

SO网友:kaiser

阅读评论

。。。如需进一步解释,请阅读locate_template().

<?php
// Build $sidebars array in order of PRIORITY. First things first » overrides later
if ( is_single() )
{
    $sidebars[] = \'single\';
}
// Not needed as it\'s the default one
// elseif ( is_page() )
// {
//     $sidebars[] = \'index\';
// }
elseif ( is_category(\'fame-game\') )
{
    $sidebars[] = \'fame-game\';
}
elseif ( bp_is_user_profile() )
{
    $sidebars[] = \'act\';
}
$sidebars[] = \'index\';

// Build names:
foreach ( $sidebars as $index => $name )
    $sidebars[ $index ] = "sidebar-{$name}.php";

// Load & require_once the sidebar
locate_template( $sidebars, true );
?>

结束

相关推荐

配置文件中的BuddyPress用户简介

我正试图弄清楚如何使用BuddyPress在用户配置文件中创建用户简历。例如,在此页上http://buddypress.org/community/members/johnjamesjacoby/activity/just-me/ 上面写着“我帮助领导BuddyPress和bbPress项目。我还喜欢小狗、薯片和小睡一会儿。”我假设这是默认行为,因为它在BuddyPress网站上,但如果不是,那可能就是我遇到问题的原因。这是BuddyPress插件吗?我如何实现这一点?