The code below is to hide sections of a WordPress website from guests (hide certain pages or groups of pages on a WordPress , so they are only available for logged in users).
In this case we’re hiding all the Buddypress members pages from guests ( so hiding all pages that start with /members such as member profiles and so on). We’re also hiding BBpress forum topics ( but they can still view the forums and forum post / topic names ).
If a guest is trying to view a page (that we’re not allowing them to, they are sent to the homepage).
add_action( 'template_redirect', 'hf_test_if_user_can_view_this_page', 0 );
function hf_test_if_user_can_view_this_page()
{
$logged_in = is_user_logged_in();
if($logged_in !== true){
if_guest_trying_to_view_private_page_redirect_them();
}
}
function if_guest_trying_to_view_private_page_redirect_them(){
$urly = $_SERVER['REQUEST_URI'];
$trying_to_view_private = false;
if( startsWith($urly, "/members/") || startsWith($urly, "/forums/topic/") ){
$trying_to_view_private = true;
}
if($trying_to_view_private === true ){
redirect_to_homey();
}
}
function startsWith($haystack, $needle)
{
$length = strlen($needle);
return (substr($haystack, 0, $length) === $needle);
}
function redirect_to_homey() {
wp_redirect(home_url());
exit();
}