wp-bb, is it possible to define conditional tags for bbpress?
-
In wordpress you can use conditional tags -> http://codex.wordpress.org/Conditional_Tags to display different content according to the page that is being displayed.
Well, after having wp and bb integrated and displaying wp sidebar in bbpress, is it possible to define conditional tags for bbpress or bbpress folders?
-
They already exist.
https://trac.bbpress.org/browser/trunk/bb-includes/template-functions.php#L248
Hey fel64!
Thanks for the answer. Do you know if is it possible to copy these functions in your wordpress theme functions file?
In fact I only need to define one conditional tag; is_bbpress(), so I can display different advertising blocks in the wordpress sidebar when loading bbpress.
Might have asked what you wanted straight away. So open your theme’s functions.php and add this:
function is_bbpress() {
global $bb;
return $bb ? true : false;
}Off the top of my head, but should work anyway. Try it.
Hey fel64
I tried and it seems to work until you make an is_single() statement because then, wordpress takes bbpress subpages; topics, profiles… as if they were wp single entries.
Is it possible to catch the whole bbpress installation with your function?
What’s the actual problem? How are you using it, what do you expect it to do, what exactly is it doing?
“What’s the actual problem? How are you using it, what do you expect it to do, what exactly is it doing?”
->
In my wp-bb integration, bbpress is integrated in wordpress and the forum uses the wordpress sidebar. I want to insert advertising blocks in the free space that I have in the bottom of the sidebar.
I’m trying to use wp conditional tags to display different ad blocks because in some pages I have space enough for one block, and in other pages I have space for two or three blocks.
In wp single pages I can display at least two 120×600 blocks so I’m using is_single() but I realized that these blocks are appearing in the bbpress forum too! and I just have no space enough for them so I want to change them for a 125×125 block when the forum is displayed or perhaps I could remove all ads when bbpress displayed.
So “How are you using it” -> after copy/pasting your function in my theme functions file, I inserted this code in my sidebar;
‘
<?php if (is_bbpress()
|| is_archive()
) { ?>
<!– 125×125 block –>
…
…
<?php } ?>
<?php if (is_single()
|| is_page()
) { ?>
<!– 160×600 block –>
…
…
<?php } ?>
‘
“what do you expect it to do” -> showing different ads blocks in the sidebar when bbpress displayed
“what exactly is it doing” -> is showing the blocks I set for is_single ()
Actually the function works just fine, you’re just expecting it to work differently. Try using different flow control or rewriting your logic.
if( blah_is_true() ) {
} elseif( foo_is_true() ) {
} elseif( third_thing_is_true() ) {
} else {
// default
}The elseifs mean that if a previous if statement was true, none of the successive ones will be tried. That way, if it is bb, it won’t even check if it’s single or a page.
Alternatively,
if( ( is_single() || is_page() ) && !is_bbpress() ) {
}will work just fine.
If you’ve integrated bb into wp that way, of course some of the WP template tags will work that way. If you wanted everything else to return false when you loaded bb, you’d have to do this:
function adjust_flags_to_bb() {
global $wp_query;
$wp_query->init_query_flags();
}
add_action('bb_init', 'adjust_flags_to_bb', 999);
//not sure if that's the right action, but mehbut that’s really quite unnecessary.
Thanks again fel64,
I tried the second one because it seemed the easiest to me and I think it is working ok.
This -> ‘ && !is_bbpress() ‘ means “exclude bbpress”, doesn’t it?
The first one, ” elseif “, is quite interesting -> in my wp custom theme, I turned index.php into a cms which displays what’s new in the whole web, and I created a static page called “blog” to display the “blog” itself.
Well, with this configuration, whenever you make a is_home statement , the function points to the static page I created and called “blog” and I can’t find the way to make the function to point to my custom index.php main page. Perhaps because the static page I called “blog” has the loop?
Well, more or less this is working but now bbpress goes to the last “else” statement and I don’t know why;
‘
<?php if ( is_page() )
{ ?>
<!– one ad block –>
<?php } elseif ( is_single() && !is_bbpress() )
{ ?>
<!– two ad blocks –>
<?php } else
{ ?>
<!– no ads –>
<?php } ?>
‘
I haven’t try your third option yet because I didn’t understand quite enough.
oops! sorry, I didn’t define what happens whe is_bbpress(), I just exclude it.
now it is working;
‘
<?php if (
is_page()
)
{ ?>
<!– one ad block –>
<?php } elseif (
is_single()
&& !is_bbpress()
)
{ ?>
<!– two ad blocks –>
<?php } elseif (is_bbpress()
)
{ ?>
<!– half ad block –>
<?php } else
{ ?>
<!– no ads –>
<?php } ?>
‘
I uploaded to my web so anyone else interested can check.
Thanks for your help fel64!
No problem.
Option #3 was a throwaway possibility, not really meant for actual use as it’s rather silly.
whatever && !is_bbpress()
means, literally, thatwhatever
has to be true AND is_bbpress() is not true. The!
operator inverts the boolean meaning, so true becomes false and vice versa. If is_bbpress() is true,!
makes it read as false. If false, it makes it read as true.By the way, the backtick ` that indicates code is on the top left button on most English and European characters.
Thanks for the explanation, do you have to put && insted of ||
“By the way, the backtick ` that indicates code is on the top left button on most English and European characters. “
-> sorry for that because I have it quite difficult, I’m using a german keyboard and OS is in Spanish
&& and || are just two different things. && means both things have to be true for the entire result to be true, || means just one needs to be true for the entire result to be true.
On a german keyboard I think it’s the capital letter on button just left of backspace. On a spanish layout it should be the one two left of enter, the one that also gives you
^
and[
(if I’m looking at the diagrams right).thanks a lot for the explanation fel64!
I’m realizing that I have more undefined pages. I have a custom login page here -> http://www.joseperdicion.com/wordpress/wp-login.php , ultimate tag warrior pages, for example this one; http://www.joseperdicion.com/wordpress/index.php?tag=onirica
Besides, some single pages are not tall enough to put two ads blocks in the sidebar.
Where did you read how to build ” is_smthing () ” functions? I wonder if I coud build one for is_login, is_tag (I presume this one will be solved in wp 2.3), is_aparticularfolder.
Is it possible to build a conditional tag for page height?. For example; ” if it is taller than x number of lines then put two ads blocks”.
- You must be logged in to reply to this topic.