Afgelopen week was ik bezig om een nieuwe website voor een personeelsverenigimg in WordPress te maken.
De website moest het mogelijk maken om in te kunnen loggen zodat mensen hun persoonlijke gegevens kunnen beheren, zich aan kunnen melden voor uitjes, foto’s van uitjes kunnen bekijken en om interne nieuwsberichten te lezen. Hiervoor heb ik gebruik temaakt van de gratis BuddyPress plug-in.
De website is voorzien van een aantal openbare pagina’s en pagina’s die alleen bekeken mogen worden als een gebruiker is ingelogd. Te denken valt aan een overzicht van gebruikers, agenda, fotoalbum en interne nieuwsberichten.
BuddyPress bied standaard geen functionaliteit om aan te geven voor welke pagina’s inloggen verplicht is. Aangezien de website al genoeg plug-ins had wilde ik er niet nog een installeren om dit wel mogelijk te maken.
Na wat zoeken op internet vond ik een functie in PHP geschreven die dit mogelijk maakt. De functie moet je toevoegen aan de functions.php bestand van je thema en ziet er uit zoals hieronder afgebeeld.
Heb je een thema gedownload of gekocht dan plaats je deze functie natuurlijk in een child theme. Dit maakt bijwerken van het parent thema in de toekomst gemakkelijker.
De array “$exclude_pages” vul je met de pagina’s die wel zichtbaar mogen zijn voor niet ingelogde gebruikers. Standaard in het voorbeeld is dat dus de registratie en activatie pagina van BuddyPress. De functie kan je ook gebruiken voor een normale WordPress website.
/** * Make a site Private, works with/Without BuddyPress * * @author sbrajesh * @global string $pagenow * */ function child_private_site() { global $pagenow; //do not restrict logged in users if( is_user_logged_in() ) { return ; } //are we on login page? if( $pagenow == 'wp-login.php' ) { return ; } //let us exclude the home page if( is_front_page() ) { return ; } // If it is one of the excluded pages non loggend in users may see it. $exclude_pages = array( 'activeren', 'contact', 'inloggen', 'lostpassword', 'resetpass', 'register', 'uitloggen'); if(is_page($exclude_pages)) { return; } // Redirect to the login page. wp_safe_redirect( get_site_url() . '/inloggen' ); exit( 0 ); } add_action( 'template_redirect', 'child_private_site', 0 );
Bron: Buddydev.com – Making a WordPress & BuddyPress Site Private, the Right Way
Great Article to provide information given to us. Thanks for Sharing!