I would appreciate it if i could get a answer.
Thanks
Hello,
I noticed a similar issue recently: The topics & replies under private forums, were publicly visible in widgets (recents topics, recents replies, etc…).
That’s because posts (and custom post types like topics & replies) does not inherit the parents restrictions.
Here is my fix. Seems to work but no guarantee. Plugin author or skilled people opinion could be useful on this one 🙂
function force_access_restriction_inheritance( $post_id, $post ) {
$post_caps = Groups_Post_Access::get_read_post_capabilities( $post_id );
// Force topic, reply & attachments inheritance.
if ( !in_array( $post->post_type, array( 'topic', 'reply', 'attachment' ) ) || 'publish' != $post->post_status || wp_is_post_revision($post_id) )
return;
$caps = Groups_Post_Access::get_read_post_capabilities( $post->post_parent );
$diff = array_diff( $caps, Groups_Post_Access::get_read_post_capabilities( $post_id ) );
if ( empty( $diff ) ) // Capabality already exists.
return;
$return = array();
foreach ( $caps as $cap )
$return[] = Groups_Post_Access::create( array( 'post_id' => $post_id, 'capability' => $cap ));
// do not save post if capability add failed.
if ( in_array( false, $return ) )
wp_die( 'Something went wrong.' );
}
add_action( 'save_post', 'force_access_restriction_inheritance', 99, 2 );
ps: please excuse my poor english.
Hey Kyle,
thank you very much.
Could you tell me where i have to put this code?
I placed it in my themes functions.php but i can still access the threads without the permission.
// EDIT: add_action( ‘save_post’, ‘force_access_restriction_inheritance’, 99, 2 );
I need to check if a visitor has the needed role for a forums in order to reads the containing threads 🙁
Thanks!
Hello,
You have two ways to use this code :
- You can create a plugin
- You can add it in the theme functions.php, but in that case I strongly recommend to create a child theme
In both cases, remember that the code is hooked on the “save_post” action, meaning you’ll have to update existing posts to trigger the action:
In admin, set a capability to a forum, then use the batch edit to update every topics once then do the same for every replies.
Hope that help.
Ah okay thanks.
So if a new post is created in inhertis the required capabilieties which i have set for the forums? Correct?
Correct. That’s the purpose of the code.
Thank you very much. I will try to create the plugin. Not sure if i am able to do that lol.