Giriş yapmayan kullanıcıları belirli bir sayfaya nasıl yönlendirebilirim?


16

Belirli bir sayfa / URL isteyen kayıtlı olmayan kullanıcıları başka bir sayfaya / URL'ye yeniden yönlendirme ve "yalnızca üyeler için" gibi bir ileti görüntüleme. Ben! İs_user_oked_in () fonksiyonunu kullanarak kodlamak oldukça kolay biliyorum ama nasıl WordPress bir acemi olduğum için nasıl kod bilmiyorum. Bana kodu da koymak için dosya anlatmak isterim.

Yanıtlar:


30

Özel gereksinimleriniz için çalışması için biraz değiştirmeniz gereken 2 örnek.

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' ); 
    exit;
   }
}

Bunu alt tema işlevleri dosyanıza koyun, sayfa kimliğini veya bilgi dosyasını ve yönlendirme URL'sini değiştirin.

Bunun gibi bir kod da kullanabilirsiniz:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('slug') && ! is_user_logged_in() ) {

wp_redirect( 'http://www.example.dev/your-page/', 301 ); 
  exit;
    }
}

Mesajı doğrudan sayfaya ekleyebilirsiniz veya oturum açmamış tüm kullanıcılar için mesajı görüntülemek isterseniz , koda ekleyin .

http://codex.wordpress.org/Function_Reference/wp_redirect


Cevabınız için teşekkürler Bunu beğendim add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }Ama çalışmıyor
user3187719

Sayfa kimliğini kullanın veya burada slug kullanın, mydomain.com/participate codex.wordpress.org/Conditional_Tags
Brad Dalton

is_page ('katıl')
Brad Dalton

9

Bu daha iyi olurdu:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continue as normal for authenticated users

Bunun yaptığı şey kullanıcıyı giriş sayfasına yönlendirmektir. Giriş yaptıktan sonra, kullanıcı başlangıçta erişmeye çalıştıkları güvenli sayfaya geri yönlendirilir.

Buradaki belgeler:

https://codex.wordpress.org/Function_Reference/auth_redirect


4

Bize neyi ve nerede görüntülemek istediğinizi söylemediyseniz, nereye koyacağınızı nasıl söyleyebiliriz? Tüm yayınlar? Sayfalar? Sayfaların özel bölümleri? Üzgünüm ... Sanırım kristal topum bugün pek çalışmıyor.

Olduğunuz için ve size alıntı yaptığım için: "wordpress'e yeni başlayan bir kişi" dir, doğrudan cevap istemek yerine öğrenmelisiniz.

Gelince nerede Referans 1 linki okumalısınız. Bu, hangi dosyayı koymanız gerektiğini söyleyecektir.

Gelince nasıl bunu yapmak için öncelikle referans linki 2 ve 3 okumalısınız.

Genel olarak şöyle görünmelidir:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

Tabii ki yukarıdaki kod bir döngüye girmelidir . İstediğiniz kadar karmaşık veya basit oluşturabilirsiniz. Örneğin, oturum açmamışsa basit metin yerine tüm kayıt formunu görüntüleyebilir veya - önerdiğim gibi - kullanıcının oturum açabileceği bölünmüş bir ekran görüntüleyebilirsiniz (kullanıcı bir hesaba sahip olabileceğinden, oturum açmayı unuttuğundan) veya kayıt olabilirsiniz (eğer yoksa).

  1. Şablon Hiyerarşisi
  2. Koşullu Etiketler
  3. Döngü

Aşağıdaki yorumlardan sonra eklendi:

Kullanımını yönlendirmek için headerbirlikte wp_login_url- yine referanslar aşağıdaki 1 ve 2 kontrol edin:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

Referans:

  1. Üstbilgi - PHP
  2. wp_login_url

Aslında istenen URL veya kalıcı bağlantı döndürür wordpress üzerinde funtction bilmiyorum. Ve dispaly mesajı hakkında, bırakın, sadece belirli URL için giriş yapmadan talep ettiklerinde onları yönlendirmek istiyorum.
user3187719

$ pagenow ile yapabilir miyim?
user3187719

@ user3187719 orijinal yanıtımı düzenledi ve çözümü yeniden yönlendirmeye ekledi. PS. $pagenow? Bir sineğin bir topla çalışacağından emin olmaya çalışıyorsunuz ama neden bu kadar karmaşık? Basit tutun. PS2: PHP ve WP Kodeksi öğrenin.
Borek

4

Belirli bir sayfaya yönlendiremezsiniz, ancak oturum açmamış her kullanıcı Oturum Açma Ekranına yönlendirilir.

<?php auth_redirect(); ?>

Wordpress Başvurusu: auth_redirect()

Sadece başka bir çözümden bahsetmek istiyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.