hmm… that’s not easy as you rightly say the hierarchy is
content-archive-topic
loop-topics
loop-single-topic
This last one is also used by forums, so you can’t just change that.
In this last you could hook an action to ‘bbp_theme_before_topic_title’ eg put this in your child theme functions file
add_action ('bbp_theme_before_topic_title' ,'rew_display_forum' ) ;
function rew_display_forum () {
$topic_forum_id = bbp_get_topic_forum_id();
$forum_title = bbp_get_forum_title( $topic_forum_id);
echo '<div class="rew-forum-name">'.$forum_title.'</div>' ;
}
and then as the shortcode displays in a ‘page’ class and the forums in a ‘forum’ class, we can add css to hide the forum title unless we are in a page
so in your custom css area put
.rew-forum-name {
display :none ;
}
.page .rew-forum-name {
display : inline-block ;
}
that should work
Hi everyone. In this moment I am using the “last topics” box in the main page of my website:
La comunidad con el mejor contenido sobre gaming y eSports
I am using the shortcode [bbp-topic-index]
Now is all OK, the topic title appears OK etc.
But I want to implement something like this in this shortcode: Forum name: Topic title
I want the Forum name before Topic title (only in the “last topics shortcode”)
How I can do it? Maybe I need to modify the loop-topics.php file?
Thanks in advance.
Regards.
Adrià Calendario.
This is probably because in the bbpress plugin there is a template called content-search.php. Many themes also now have a template file called content-search.php. Since the bbPress templates don’t necessarily need to be in a bbPress folder, the bbPress plugin is choosing the template from your theme before the template that is actually in bbPress.
To fix copy content-search.php from the bbPress plugin templates and place it in a child theme in a folder called bbpress.
Functions files and child themes – explained !
So create a directory on your child theme called ‘bbpress’
ie wp-content/themes/%your-theme-name%/bbpress
where %your-theme-name% is the name of your theme
find
wp-content/plugins/bbpress/templates/default/bbpress/content-search.php
Make a copy of this file, and put in in the directory called bbpress that you created above, so you end up with
wp-content/themes/%your-theme-name%/bbpress/content-search.php
bbPress will now use this template instead of the original
$topic_url = bbp_get_topic_permalink( bbp_get_reply_topic_id( $reply_id ) );
$forum_permalink = bbp_get_forum_permalink( $forum_id );
two examples of what you might be after
I’m working on a pre-defined list option at the moment – probably about a week and I’ll release some code
Thank you for your advice.
Your code works well.
I do appreciate it every time.
@robin-w
Thanks for your reply. I have also checked the wp_posts table.
SELECT * FROM wp_posts WHERE post_type = "forum" OR post_type = "topic" OR post_type = "reply"
I can see some posts with the following post types:
Are these post types part of bbPress? Are there any additional post types added by bbPress?
if the reply is 1500 and the topic it belongs to 1000 then
$reply_topic_id = bbp_get_reply_topic_id(1500)
if( $reply_topic_id == 1000 ){
echo 'Baseball rule';
return;
Topic insert format in specific forum can change using following code.
For example, Forum post=1000,1300
if( is_single(1000) ){
echo 'Baseball rule';
return;
}elseif( is_single(1300) ) {
echo 'Football rule';
return;
}
Then how can I customize reply insert format in specific forum?
For example, Forum post=1000,1300
‘reply insert format’ in content-single-topic.php .
ok, so create a new topic form template
find
wp-content/plugins/bbpress/templates/default/bbpress/form-topic.php
transfer this to your pc and edit
change around line 199
<?php if ( ! bbp_is_single_forum() ) : ?>
to
<?php if (isset($_REQUEST['bbp_forum_id'])) : ?>
<input type="hidden" name="bbp_forum_id" value="<?php echo $_REQUEST['bbp_forum_id']; ?>" />
<?php elseif ( ! bbp_is_single_forum() ) : ?>
and save
create a directory on your theme called ‘bbpress’
ie wp-content/themes/%your-theme-name%/bbpress
where %your-theme-name% is the name of your theme
Then transfer the file you saved above and put in in the directory called bbpress that you created above, so you end up with
wp-content/themes/%your-theme-name%/bbpress/form-topic.php
bbPress will now use this template instead of the original
then put this in your child theme functions file
add_action ( 'bbp_template_before_single_forum', 'reww_new_topic_button' ) ;
function reww_new_topic_button () {
$url = $url = get_home_url();
$forum_id = bbp_get_forum_id() ;
$url.='/topic-form/?bbp_forum_id='.$forum_id ;
$text = 'create new topicc' ;
echo '<a class="hello" href ="'.$url.'">'.$text.'</a>' ;
}
where ‘/topic-form/’ is the page you have the topic form on
that sends a query string to the topic form page, which is then picked up by the amended template above
Potentially something like this, although it isn’t working as far as I can tell:
function bbp_change_user_role_login($user) {
$user_id = get_current_user_id($user);
$current_user_role = bbp_get_user_role($user_id);
$new_role_forum_role="bbp_moderator";
$user_post_count = bbp_get_user_post_count( $user_id );
if (($current_user_role = "bbp_participant") and ($user_post_count > 20)) {
bbp_set_user_role( $user_id, $new_forum_role );
}
}
add_action('wp_login', 'bbp_change_user_role_login');
Hello, does nobody have an idea or tip for me?
I thought this should be a common use case to link back to the back where the forums shortcode was added.
the topic and reply forms are at the bottom of the forum and topic pages, so there is no need to visit a separate page.
Well, yes, but it would be neat to have the option.
I already link to the bottom of the page form via the html anchor – I’ve coded that into my theme – but I’m trying to have these forms on separate pages entirely, to make the whole thing a bit neater.
That’s exactly what I want – I WANT it to use the template files!
Whilst I can use the short code bbp-new-reply for example, it needs a topic ID to work. I simply don’t understand why BBP core doesn’t generate these pages programmatically – it makes absolutely no sense to me. You would think that would be basic functionality for a forum plugin!
But that’s using the shortcodes and creating dedicated pages in WP right?
I want BBP to automatically generate these pages, eg. https://mywebsite.blog/forums/login
Pages required would be:
– login
– register
– password reset
– new topic
– new reply
My understanding of the shortcode is that if I wanted a new topic page, I would either have to have a generic one for the whole board or I would have to create individual ones for each forum based on the forum ID.
The solution I’m looking for is for BBP to dynamically generate them as required. Is that possible?
It seems odd to me that BBP doesn’t already do this.
EDIT: would something along these lines work? https://stackoverflow.com/questions/32314278/how-to-create-a-new-wordpress-page-programmatically
ok, so your topic and reply forms will have pages with urls, so you just need to put the buttons where you want
<input type="button" value="button name" onclick="window.open('http://www.website.com/page')" />
Hi, Robin,
I’ve seen a number of posts about this but can’t find a specific solution. I’d like my login to call out to the page I created with the bbpress shortcode: https://museum-hub.org/forum-login/ vs. the generic WP login page. Within your style pack, I’ve gone to the Login tab and added that page where it says “Login Page: You should create a wordpress page with a login shortcode such as [bbp-login] and put the full url in here e.g. http://www.mysite.com/loginpage. If left blank the default wordpress login page will be used.” I’ve saved it, of course. I’ve done the same thing with the “Register” field, sending people here: https://museum-hub.org/register/. Any thoughts on to bypass the WP default login? I’m trying to keep folks from seeing any WP dashboards, etc.
THANK YOU!
Basically, instead of having the create topic / topic reply form on the same page as the thread I want to create a button that links to a secondary page. I know this is possible with shortcodes, but is there a way of doing this without shortcodes? So that BBP auto-generates the page itself?
I know you can use shortcodes to add forms (such as new topic, login, new reply etc) to dedicated pages, but is there a fucntion or hook I can use to simply get BBP to automatically generate a new form page?
oops semi colon missing from $image = line
<?php bbp_reply_author_link( array( 'show_role' => true ) ); ?>
<?php
$image_id = get_user_meta (bbp_get_reply_author_id(), 'profile-picture' , true) ;
$image = get_post_meta ($image_id, _wp_attached_file, true) ;
echo '<li>herestart'.$image.'hereend</li>' ;
?>
Dont worry I have just found the solution myself!
Here it is for anyone who has the same issue:
div.bbp-forum-header, div.bbp-reply-header, div.bbp-topic-header {
padding: 0px;
}
Hi I would like to change this CSS code:
.bbp-forum-header, .bbp-reply-header, .bbp-topic-header {
clear: both;
overflow: hidden;
padding: 8px 10px 8px 130px;
margin-bottom: 0;
border-width: 1px 0 0;
border-color: #e6e6e6;
border-color: var(--g1-border-color);
}
to have its padding set to 0px.
I have tried adding this to my style.css file in my child theme but it didn’t work:
.bbp-forum-header, .bbp-reply-header, .bbp-topic-header {
padding: 0px;
}
I am new to CSS so I’m not sure if that code above should overwrite the default styling? I assume not as it isn’t working!
Many thanks!
ok, so we are making progress.
I don’t expect this to work, just to return the next stage
so amend that to
<?php bbp_reply_author_link( array( 'show_role' => true ) ); ?>
<?php
$image_id = get_user_meta (bbp_get_reply_author_id(), 'profile-picture' , true) ;
$image = get_post_meta ($image_id, _wp_attached_file, true)
echo '<li>herestart'.$image.'hereend</li>' ;
?>