If I run the following MySQL query…
SELECT * FROM wp_posts WHERE post_type LIKE 'forum'
…I notice that post_status = ‘private’ for the private forums. That makes sense.
However, if I run…
SELECT * FROM wp_posts WHERE post_type LIKE 'topic'
…I notice that all the topics have post_status = ‘publish’ whether they are in a private forum or not.
Is there any reason why they aren’t post_status = ‘private’? Might that be why the archive lists them?
Ah I tell a lie, we also have BBPress Notify (No Spam) installed
No BBPress piggyback plugins I’m afraid, just the normal BuddyPress + BBPress combo. The private forums functionality is included in out-of-the-box BBPress.
We have other plugins on the site such as Advanced Access Manager and WordFence, but can’t see why they would affect what discussions are listed; I may be wrong, but it seems most likely to be an oversight of BBPress’ programming.