Нow to restrict create new tags for topic & answers by users?
preferably without new plugins and role settings.
Now I can close the tag field with the css method – but may be through the code better?
Sure,
1. Indentify template file of forum index in template directory of plugin and copy it to your theme, but place it in bbpress folder.
2. place the code what I have sent, you have link above the forum to profile.
I can do same as profile menu as is here above forum, but it require more coding and probably you will experience difficulties with integration. Only solution is I can send you custom theme to demonstrate what I can do 🙂
If you could explain the whole process of what I need to do, and the code needed and where it goes, then I am sure others would be interested in reading this thread ?
There used to be a plugin called ‘bbPress Profile Link Shortcode’ created by ‘Tyler Tervooren’
Alas this plugin is out of date, is there any equivalents ?
bbPress Profile Link Shortcode
Combined html with php
<a href="<?php echo bbp_get_user_profile_url( get_current_user_id() ); ?>">Profile</a>
Can you share theme? I will customize it and you will just activate it 😉
The Profile works as a hyperlink, but I am unable to get the link to a users profile by combining the php code into the Profile html link
Could you detail how I combine the two code sources to work together ?
I have realized I cannot code ;-(
You do not want to give access to profile subpages to other forum participants.
Yes, you are rock.
I do not use operand and. I like &&.
Glad you like it 😊🐱😝
Thank you very much, it was very good. I added a bit because I want the user to access their own links, but not other users.
I did it well?
add_action( 'template_redirect', 'redirect_user_to_profile_from_subpages' );
function redirect_user_to_profile_from_subpages() {
global $wp;
$user_id = bbp_get_displayed_user_id();
// subpage - enagements
if ($wp->query_vars["bbp_engagements"] == 1 and $user_id != get_current_user_id() ) {
wp_safe_redirect( bbp_get_user_profile_url( $user_id ) );
exit;
}
// subpage - topics created
if (bbp_is_topics_created() and $user_id != get_current_user_id() ) {
wp_safe_redirect( bbp_get_user_profile_url( $user_id ) );
exit;
}
// subpage - replies created
if (bbp_is_replies_created() and $user_id != get_current_user_id() ) {
wp_safe_redirect( bbp_get_user_profile_url( $user_id ) );
exit;
}
// subpage - subscriptions
if (bbp_is_subscriptions() and $user_id != get_current_user_id() ) {
wp_safe_redirect( bbp_get_user_profile_url( $user_id ) );
exit;
}
}
Yes, @delta5
Auto-embed links:
Embed media (YouTube, Twitter, Flickr, etc…) directly into topics and replies
Go to -> Settings -> Forums -> Forum Features (section) -> Auto-embed links
All right so you have above defined 4 links. 4 subpages and we want to redirect redirect them to user profile main page.
We need to use hook to redirect those pages
add_action( 'template_redirect', 'redirect_user_to_profile_from_subpages' );
function redirect_user_to_profile_from_subpages() {
global $wp;
// subpage - enagements
if ($wp->query_vars["bbp_engagements"] == 1 ) {
wp_safe_redirect( bbp_get_user_profile_url( get_current_user_id() ) );
exit;
}
// subpage - topics created
if (bbp_is_topics_created()) {
wp_safe_redirect( bbp_get_user_profile_url( get_current_user_id() ) );
exit;
}
// subpage - replies created
if (bbp_is_replies_created()) {
wp_safe_redirect( bbp_get_user_profile_url( get_current_user_id() ) );
exit;
}
// subpage - subscriptions
if (bbp_is_subscriptions()) {
wp_safe_redirect( bbp_get_user_profile_url( get_current_user_id() ) );
exit;
}
}
Let me know if this works for you.
Sure, contact anytime. 😉
This can help as well.
We can use action hook. Here is explation how to use it. There are files where you can find the place.
https://codex.bbpress.org/bbp_theme_before_forum_title/
This code will generate html link if you combine with code above:
<a href="[php_code]">Profile</a>
Place it above the forum maybe?
Correct and many thanks
where should I place profile code ?
<?php echo bbp_get_user_profile_url( get_current_user_id() ); ?>
SSo, you said you need dynamic url to user bbpress profile. Correct?
This code will generate profile url
<?php echo bbp_get_user_profile_url( get_current_user_id() ); ?>
It should be easy to understand code and should work as you describe above.
Do not hesitate to contact me.
Here are my screenshots:
Home Page:
https://ibb.co/8m1225X
Single Page:
https://ibb.co/KhCDFtx
I would like the first forum topic created to be displayed on the post page.
You need to add another line of code to action function. We need to save topic id to post meta.
whole function.php
// Add the hook action
add_action('transition_post_status', 'send_new_post', 10, 3);
// Listen for publishing of a new post
function send_new_post($new_status, $old_status, $post) {
if('publish' === $new_status && 'publish' !== $old_status && $post->post_type === 'post') {
$my_post = array(
'post_title' => $post->ID,
);
$forum_id = bbp_insert_forum($my_post);
$my_topic = array(
'post_title' => $post->post_title,
'post_content' => $post->post_content,
'post_parent' => $forum_id
);
$topic_id = bbp_insert_topic($my_topic);
update_post_meta( $post->ID, 'forum_first_topic', $topic_id );
}
}
In single.php we can call your shortcode for showing topic by id because whe have post meta.
Paste this into loop:
$topic_id = get_post_meta( get_the_ID(), 'forum_first_topic', true );
echo do_shortcode(' [bbp-single-topic id='.$topic_id.']');
Whole single php loop:
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="article">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_content(); ?>
<h2>Forum: <?php echo basename(get_permalink()); ?></h2>
<?php
$post = get_post(get_the_ID());
$mypost = get_page_by_title(get_the_ID(),OBJECT,'forum');
$topic_id = get_post_meta( get_the_ID(), 'forum_first_topic', true );
echo do_shortcode(' [bbp-single-topic id='.$topic_id.']');
echo do_shortcode( '[bbp-single-forum id='.$mypost->ID.']' ); ?>
</div>
<?php endwhile; ?>
<?php endif; ?>
How do I add the post content to the first post of the new topic?
Under this action:
add_action('transition_post_status', 'send_new_post', 10, 3);
Replace with updated function:
// Listen for publishing of a new post
function send_new_post($new_status, $old_status, $post) {
if('publish' === $new_status && 'publish' !== $old_status && $post->post_type === 'post') {
$my_post = array(
'post_title' => $post->ID,
);
$forum_id = bbp_insert_forum($my_post);
$my_topic = array(
'post_title' => $post->post_title,
'post_content' => $post->post_content,
'post_parent' => $forum_id
);
bbp_insert_topic($my_topic);
}
}
How do I append the post post title to the forum id?
Change this <h2>Forum: <?php echo get_the_ID(); ?></h2>
to this: <h2>Forum: <?php echo basename(get_permalink()); ?></h2>
That works great! Thank you so much.
How do I add the post content to the first post of the new topic? I can’t work out how to target the first post with add_action().
How do I append the post post title to the forum id? It looks like this (Forum: 67) it might be better if it was post-title-67 e.g starwars-67
I would like the first forum topic created to be displayed on the post page. I currently achieve this by:
Add new block
[/] shortcode
Add the bbpress shortcode
[bbp-single-topic id=40]
The id is found when edititing the topic in the address bar https://site/wp-admin/post.php?post=40&action=edit
Is there a way of automating this task?
the default is horizontal – do you you have a theme, plugin or code that is changing this?
The code is:
add_action ('template_redirect', 'forum_security');
function forum_security(){
$roles = wp_get_current_user()-> roles;
if(is_singular( array( 'forum', 'topic' ) )){
if(!is_user_logged_in()){
wp_redirect('/join');
exit;
}else{
if(current_user_can('administrator')){
return;
}elseif(!in_array('pmpro_role_1', $roles)){
wp_redirect('/product/channel-mcgilchrist');
exit;
}
}
}
}
I have written the below script to restrict users to access forums or topics. Here are the conditions:
1. If user in not logged in will be redirected to “Join” page.
2. If user is logged in but doesn’t have “pmpro_role_1” role, he will be redirected to “Product Page”.
3. If a user is the administrator, he can view the page.
The problem here is for topics in forum it is working except the latest created topic. And it is taking user to “Join” page even if the user is logged in and have the “pmpro_role_1”. What is happening here?
Please help.
add_action ('template_redirect', 'forum_security');
function forum_security(){
$roles = wp_get_current_user()-> roles;
if(is_singular( array( 'forum', 'topic' ) )){
if(!is_user_logged_in()){
wp_redirect('/join');
exit;
}else{
if(current_user_can('administrator')){
return;
}elseif(!in_array('pmpro_role_1', $roles)){
wp_redirect('/product/channel-mcgilchrist');
}
}
}
}
Yes, thank you a simple theme to demonstrate will be fine. I’m not too sure how to use hooks and I get very confused with how to use short codes and php together.
Put this in your child theme’s function file –
ie wp-content/themes/%your-theme-name%/functions.php
where %your-theme-name% is the name of your theme
or use
Code Snippets
add_filter( 'bbp_new_topic_pre_content', 'rew_strip_tags' );
add_filter('bbp_edit_topic_pre_content', 'rew_strip_tags' );
add_filter( 'bbp_new_reply_pre_content', 'rew_strip_tags' );
add_filter('bbp_edit_reply_pre_content', 'rew_strip_tags' );
function rew_strip_tags ($content) {
$content = strip_tags($content);
return $content ;
}
Hi @egyptimhotep,
Yes please, could you provide code?
I wasn’t sure how to contact you on slack? There are a eight people with the handle @Jesse.
Thanks,
Slugs