update: this was undesirable because the link to the reply was going to the reply itself, which is just a single post of the ‘reply’ custom post type. I have created this dodgy hack of the above code so the permalink for the replies is still the topic permalink. I’m sure there are a million better ways to do this, but it does the job for me so i thought i’d share the updated version.
function jag_add_last_reply() { {
$jag_last_reply_id = bbp_get_forum_last_reply_id();
$jag_last_topic_id = bbp_get_forum_last_topic_id();
$new_args = array(
'post_type'=> 'reply',
'p' => $jag_last_reply_id
);
$post_title_args = array(
'post_type'=> 'topic',
'p' => $jag_last_topic_id
);
$other_args = array(
'post_type'=> 'topic',
'p' => $jag_last_topic_id
);
$jag_query = new WP_Query( $post_title_args );
$nest_query = new WP_Query( $new_args );
$another_nest_query = new WP_Query( $other_args );
if ( $jag_query->have_posts() ) : while ( $jag_query->have_posts() ) : $jag_query->the_post();
$this_post_id=$post->ID;
$this_post_permalink= get_permalink(); ?>
<a href="<?php echo $this_post_permalink; ?>">
<?php endwhile;
endif; wp_reset_query();
if ( $nest_query->have_posts() ) : while ( $nest_query->have_posts() ) : $nest_query->the_post();
$this_post_id=$post->ID;
$this_post_title= get_the_title();
$this_post_content= get_the_excerpt(); ?>
<h1><?php echo $this_post_title; ?></h1></a>
<div class="the_content"><?php echo $this_post_content; ?></div>
<?php endwhile;
elseif ( $another_nest_query->have_posts() ) : while ( $another_nest_query->have_posts() ) : $another_nest_query->the_post();
$this_post_id=$post->ID;
$this_post_title= get_the_title();
$this_post_content= get_the_excerpt(); ?>
<h1><?php echo $this_post_title; ?></h1></a>
<div class="the_content"><?php echo $this_post_content; ?></div>
<?php endwhile;
endif;
}}
// Hook into action
add_action('bbp_theme_after_forum_description','jag_add_last_reply');
I’d like to add this function to my Forum index page. Where do I need to paste this code? Thanks 🙂
@julia_b (If you’re still waiting for a reply!) – you need to put this in your functions.php file, more info here: https://codex.bbpress.org/functions-files-and-child-themes-explained/
This works great, thanks so much for sharing this code!
I’ve also managed, with very little tweaking, to get this displaying replies under topics within the topics list (this is very rough with some bits commented out but pasting here in case it helps someone)
// https://bbpress.org/forums/topic/how-to-add-latest-reply-or-topic-to-forum-list/
function jagreplies_add_last_reply() { {
$jagreplies_last_reply_id = bbp_get_topic_last_reply_id();
//$jagreplies_last_topic_id = bbp_get_forum_last_topic_id();
$new_args = array(
'post_type'=> 'reply',
'p' => $jagreplies_last_reply_id
);
$post_title_args = array(
'post_type'=> 'topic',
'p' => $jagreplies_last_topic_id
);
$other_args = array(
'post_type'=> 'topic',
'p' => $jagreplies_last_topic_id
);
$jagreplies_query = new WP_Query( $post_title_args );
$nest_query = new WP_Query( $new_args );
$another_nest_query = new WP_Query( $other_args );
if ( $jagreplies_query->have_posts() ) : while ( $jagreplies_query->have_posts() ) : $jagreplies_query->the_post();
$this_post_id=$post->ID;
$this_post_permalink= get_permalink(); ?>
<!--<a href="<?php //echo $this_post_permalink; ?>">-->
<?php endwhile;
endif; wp_reset_query();
if ( $nest_query->have_posts() ) : while ( $nest_query->have_posts() ) : $nest_query->the_post();
$this_post_id=$post->ID;
//$this_post_title= get_the_title();
//$this_post_content= get_the_excerpt();
$this_post_content= the_content(); ?>
<h1><?php echo $this_post_title; ?></h1></a>
<div class="the_content"><?php echo $this_post_content; ?></div>
<?php endwhile;
elseif ( $another_nest_query->have_posts() ) : while ( $another_nest_query->have_posts() ) : $another_nest_query->the_post();
$this_post_id=$post->ID;
//$this_post_title= get_the_title();
//$this_post_content= get_the_excerpt();
$this_post_content= the_content(); ?>
<!--<h1><?php //echo $this_post_title; ?></h1></a>-->
<div class="the_content"><?php echo $this_post_content; ?></div>
<?php endwhile;
endif;
}}
// Hook into action
add_action('bbp_theme_after_topic_freshness_author','jagreplies_add_last_reply');
This is extremely useful in creating a ‘Facebook’ style site where all content can be displayed on one single page (I know, Facebook, yuck! But it’s what ‘the people’ like)
Now I just need to try to get the bbpress Ajax Replies plugin working in conjunction with this so people can post and reply from that single page. Interesting!
**edited to add – if using my code above you may just want to change the last line ‘bbp_theme_after_topic_freshness_author’ to a different hook depending on where you want to display it, I am using customised templates but I’m not sure how it would look loading the content there if using the default templates
Aah just realised of course that code is showing just the *last* reply, not listing all replies, so I will keep tweaking it and update if I can get it showing *all* replies.
Ok got it, needs sprucing up design-wise but this nicely outputs the reply content and date (with permalink) directly under the topic title on the single forum view topics list:
(With thanks to some code used here – https://bbpress.org/forums/topic/how-to-get-reply-ids-within-topic-loop/)
// https://bbpress.org/forums/topic/how-to-add-latest-reply-or-topic-to-forum-list/ - SHOW REPLIES ON SINGLE FORUM LIST OF TOPICS
function jagreplies_add_last_reply() { {
$new_args = array(
'post_type'=> 'reply'
);
$topic_id = bbp_get_topic_id();
$new_args['post_parent'] = $topic_id;
$new_query = new WP_Query( $new_args );
if ( $new_query->have_posts() ) : while ( $new_query->have_posts() ) : $new_query->the_post();
$reply_id=$post->ID;
$reply_title= get_the_title();
$reply_date= get_the_date();
$reply_content= the_content();
$reply_permalink= get_the_permalink();
?>
<div class="the_content">
<?php echo $reply_content; ?>
<a href="<?php echo $reply_permalink ?>"><?php echo $reply_date ?></a>
</div>
<?php endwhile; ?>
<?php endif;
}}
// Hook into action
add_action('bbp_theme_after_topic_freshness_author','jagreplies_add_last_reply');