Ledenomgeving Prive Redirect
WordPress leent zich ook prima om een ledenomgeving te creëren, waarbij leden toegang krijgen tot pagina’s of berichten die niet voor reguliere bezoekers toegankelijk zijn. Die pagina’s en/of berichten kunnen we dan simpelweg de status “Privé” geven of de status afgeschermd met een “wachtwoord”. Beide opties vinden we bij de editor rechts in het “Publiceren” -blok onder zichtbaarheid.
Geven we de status “wachtwoord” dan is de pagina zichtbaar voor iedere bezoeker (maar niet de content) en dient de bezoeker een wachtwoord op te geven om de content te zien. Bij de status privé is de pagina niet bereikbaar voor niet-ingelogde bezoekers en komt die bezoeker uit op de 404-pagina van de website.
We willen de pagina in zijn geheel niet zichtbaar hebben en dienen dus voor de “privé” status te kiezen. Alleen zou het dan beter zijn als de niet-ingelogde bezoeker op een informatieve pagina terecht komt of omgeleid wordt naar de home-pagina.
Gedurende dit artikel en ook de volgende uit deze serie, zullen we regelmatig een zgn. “Code Snippet” geven. Dat zijn stukjes code die aan het thema via het functions.php bestand toegevoegd dienen te worden. Ook zal er veelvuldig gebruik gemaakt worden van ID-nummers (van bijvoorbeeld pagina’s, categorieën of gebruikers). Ben je niet zeker hoe je zo’n Code-Snippet moet gebruiken of hoe je een ID-nummer kunt achterhalen, bekijk dan één van de volgende artikelen:
Om niet-ingelogde gebruikers door te sturen naar de home-pagina bij het bezoeken van “Privé” pagina’s of berichten kunnen we de volgende redirect-code-snippet gebruiken:
/* redirect all non logged in users when trying to see private posts */ add_action('template_redirect', 'qwain_private_content_redirect', 9); function qwain_private_content_redirect() { global $wp_query,$wpdb; if (is_404()) { $private = $wpdb->get_row($wp_query->request); $redirect_page = home_url(); if( 'private' == $private->post_status ) { wp_safe_redirect($redirect_page); exit; } } }
Door deze code toe te voegen aan het functions.php bestand zullen alle niet ingelogde bezoekers die een bericht of pagina met de status “privé” proberen te bekijken uitkomen op de home-pagina.
Willen we de niet ingelogde bezoeker naar een andere pagina verwijzen (bijvoorbeeld een pagina waar we uitleggen dat om de gewenste pagina of bericht te bekijken een lidmaatschap nodig is), dan vervangen we de regel “$redirect_page = home_url()” door “$redirect_page_id = xx”; waarbij xx dan het pagina-id is van de pagina waar we de bezoeker naar toe willen verwijzen.
De regel met de functie wp_safe_redirect dienen we dan ook nog aan te passen. De volledige snippet wordt dan:
/* redirect all non logged in users to page with id, when trying to see private posts */ add_action('template_redirect', 'qwain_private_content_redirect', 9); function qwain_private_content_redirect() { global $wp_query,$wpdb; if (is_404()) { $private = $wpdb->get_row($wp_query->request); $redirect_page_id = xx; /// vervang xx door de pagina-id if( 'private' == $private->post_status ) { wp_safe_redirect( get_permalink( $redirect_page_id ), 301); exit; } } }
Let wel dat je alleen één van de voorgaande functies gebruikt; dus of de redirect naar de home-pagina of de redirect naar een specifieke pagina.
Om te achterhalen wat het ID is van de pagina die je wilt gaan gebruiken zie dit artikel: WordPress ID nummers.
Categorie Redirect
Met voorgaande snippets kunnen we een redirect instellen voor privé pagina’s of berichten. Archiefpagina’s kunnen we echter niet op privé zetten en die zijn dus gewoon te bereiken (bekijken) door alle bezoekers. Hebben we dus berichten die we aan een bepaalde categorie hebben toegevoegd, dan maakt WP ook een archiefpagina aan van die categorie.
In een leden-omgeving is dat natuurlijk ook niet wenselijk. Die categorie zou dan ook alleen zichtbaar moeten zijn voor ingelogde bezoekers (leden).
Om één of meerdere categorieën niet bereikbaar te maken voor niet leden, kunnen we de volgende snippet inzetten:
/* redirect all non logged in users when trying to see a archive (category) */ add_action( 'template_redirect', 'qwain_redirect_cat_to_page' ); function qwain_redirect_cat_to_page() { // Nothing happens if the user is logged in. if ( is_user_logged_in() ) { return; } // Redirect to a special page if the user is trying to access // a category. if ( is_category() { $redirect_to_page_id = XX; // vervang XX door de pagina-ID waarnaar toe de redirect moet wp_safe_redirect( get_permalink( $redirect_to_page_id ), 301 ); exit; } }
Op regel 11 hebben we via “is_category()” nu ALLE categorieën uitgeschakeld voor niet ingelogde bezoekers. Vervang XX door de pagina-ID waar dan naar toe omgeleid dient te worden.
Willen we slechts één categorie niet zichtbaar hebben dan kunnen we op regel 11 de functie “is_category()” aanpassen door daar de categorie naam, slug of ID op te geven. Het is ook mogelijk om meerdere categorieën op te geven.
Wijzig dan regel 11 in:
Functie | Omschrijving |
---|---|
is_category(); | alle categorieën |
is_category( '10' ); | alleen categorie met ID = 10 |
is_category( 'Groenten' ); | alleen categorie met de Naam 'Groenten' |
is_category( 'zomer-planten' ); | alleen de categorie met de Slug 'zomer-planten' |
is_category( array( 9, 'zomer-planten', 'Groeten') ); | alleen de categorieën met de ID 10, of de categorie met de Slug 'zomer-planten' of de categorie met de naam 'Groenten' (dus 3 categorieën). |
Ledenomgeving
Met deze eenvoudige snippets hebben we een eerste stap gemaakt naar een eigen ledenomgeving. Gedurende een volgend artikel uit deze serie zullen we beschrijven hoe we de WP-Admin kunnen afschermen voor de leden, een bijbehorend inlogscherm maken met de bijpassende redirects.
Vragen & Info
Heb je vragen naar aanleiding van dit artikel, stuur ons dan een mail op: info@qwain.nl of geef een reactie via onderstaand reactie-formulier.
Ondersteuning staat bij ons op nummer 1, wij zijn je graag van dienst !
Op de hoogte blijven van alle WordPress Nieuwtjes, Tips & Tricks… schrijf je dan in voor onze nieuwsbrief
en volg ons op Facebook .
Overige Artikelen