Wiele firm korzystających z WordPress potrzebuje tworzyć strony dostępne tylko dla klientów, np. z materiałami premium, dokumentami czy raportami. Standardowe wtyczki często oferują dostęp oparte na rolach użytkowników, ale nie pozwalają wprowadzić niestandardowych warunków dostępu. W tym artykule pokażemy, jak zrealizować stronę „tylko dla klientów” z własną logiką dostępu, zapewniając bezpieczeństwo i kontrolę nad treścią.
Dlaczego warto tworzyć strony dostępne tylko dla klientów
Strony ograniczone do klientów mają wiele zastosowań:
- Udostępnianie materiałów premium lub dokumentów poufnych.
- Stworzenie panelu dla subskrybentów lub partnerów biznesowych.
- Wsparcie procesów sprzedaży i obsługi klienta, np. dostarczanie instrukcji lub raportów.
Metody ograniczania dostępu w WordPress
1. Standardowe role użytkowników
WordPress posiada wbudowane role:
- Administrator, Edytor, Autor, Współpracownik, Subskrybent.
Dostęp do treści można ograniczać np. do subskrybentów, ale nie zawsze odpowiada to wymaganiom biznesowym, np. jeśli chcesz ograniczyć dostęp tylko do klientów, którzy dokonali zakupu w WooCommerce lub spełniają określone warunki.
2. Niestandardowa logika dostępu
Możesz stworzyć własną logikę dostępu opartą na:
- historii zakupów (WooCommerce)
- niestandardowych polach użytkownika
- tagach, statusach subskrypcji lub innych kryteriach
To daje pełną kontrolę nad tym, kto widzi treść.
Jak w praktyce ograniczyć dostęp do strony tylko dla klientów
Krok 1: Dodanie niestandardowego pola użytkownika
Możesz użyć funkcji update_user_meta() i get_user_meta() w WordPressie.
Przykład: oznacz użytkowników, którzy mają dostęp do treści premium:
// Przyznanie dostępu użytkownikowi po zakupie produktu
update_user_meta( $user_id, 'premium_access', true );
// Sprawdzenie dostępu przy ładowaniu strony
$user_access = get_user_meta( get_current_user_id(), 'premium_access', true );
Krok 2: Blokowanie dostępu do treści
W szablonie strony lub w pliku functions.php możesz dodać warunek:
if ( !is_user_logged_in() || !get_user_meta(get_current_user_id(), 'premium_access', true) ) {
wp_redirect( home_url('/login') );
exit;
}
Dzięki temu użytkownicy, którzy nie mają odpowiedniego uprawnienia, zostaną przekierowani na stronę logowania lub stronę informacyjną.
Krok 3: Dynamiczne przypisywanie dostępu
W WooCommerce można przyznać dostęp automatycznie po dokonaniu zakupu:
add_action( 'woocommerce_order_status_completed', 'grant_premium_access' );
function grant_premium_access( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item ) {
$product_id = $item->get_product_id();
$user_id = $order->get_user_id();
// Sprawdzenie konkretnego produktu
if ( $product_id == 123 ) { // ID produktu premium
update_user_meta( $user_id, 'premium_access', true );
}
}
}
Dodatkowe wskazówki
- Bezpieczeństwo: sprawdzaj zawsze po stronie serwera, nie tylko w JS.
- UX: przekierowuj niezalogowanych użytkowników na stronę logowania lub informacyjną.
- Skalowalność: jeśli masz dużo stron premium, rozważ tworzenie grup dostępów zamiast pojedynczych pól.
- Wtyczki wspierające niestandardowe role: „Members” lub „User Role Editor” mogą uprościć zarządzanie uprawnieniami.
Podsumowanie
Tworzenie stron „tylko dla klientów” z niestandardową logiką dostępu w WordPress pozwala w pełni kontrolować, kto może zobaczyć treść. Własne pola użytkowników, powiązanie z zakupami w WooCommerce i warunki dostępu w PHP dają elastyczność i bezpieczeństwo. Dzięki temu możesz udostępniać treści premium, materiały poufne i raporty tylko wybranym użytkownikom, bez ograniczeń typowych wtyczek opartych na standardowych rolach WordPress.