Bagaimana cara mengarahkan pengguna yang tidak masuk ke halaman tertentu?


16

Cara mengarahkan pengguna non-log yang meminta halaman / URL tertentu ke halaman / URL lain dan menampilkan pesan seperti "hanya untuk anggota". Saya tahu sangat mudah untuk menggunakan kode fungsi! Is_user_logged_in () tetapi saya tidak tahu bagaimana kode karena saya seorang pemula untuk WordPress. Peduli untuk memberi tahu saya file untuk memasukkan kode juga.

Jawaban:


30

Berikut adalah 2 contoh yang perlu Anda modifikasi sedikit agar berfungsi untuk kebutuhan spesifik Anda.

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;
   }
}

Masukkan ini di file fungsi tema anak Anda, ubah ID halaman atau siput dan url redirect.

Anda juga dapat menggunakan kode seperti ini:

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;
    }
}

Anda dapat menambahkan pesan langsung ke halaman atau jika Anda ingin menampilkan pesan untuk semua pengguna yang tidak masuk, tambahkan ke kode .

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


Terima kasih atas jawaban Anda, saya memang suka ini. 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; } }Tetapi tidak berfungsi
user3187719

Gunakan id halaman atau siput di sini, bukan url mydomain.com/participate codex.wordpress.org/Conditional_Tags
Brad Dalton

is_page ('berpartisipasi')
Brad Dalton


4

Bagaimana kami dapat memberi tahu Anda di mana harus meletakkannya jika Anda tidak memberi tahu kami apa dan di mana Anda ingin menampilkannya? Seluruh posting? Halaman? Bagian khusus halaman? Maaf ... Saya kira bola kristal saya tidak berfungsi hari ini.

Karena Anda adalah, dan saya mengutip Anda: "seorang pemula untuk wordpress" Anda harus belajar, daripada meminta jawaban langsung.

Adapun di mana Anda harus membaca tautan referensi 1. Ini akan memberi tahu Anda file mana yang harus Anda masukkan.

Adapun cara melakukannya Anda harus terlebih dahulu membaca tautan referensi 2 dan 3.

Secara keseluruhan akan terlihat seperti ini:

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

Tentu saja kode di atas perlu diulang . Anda dapat membangunnya serumit atau sesederhana yang Anda inginkan. Misalnya, alih-alih teks sederhana jika tidak masuk, Anda dapat menampilkan seluruh formulir pendaftaran, misalnya atau - seperti yang saya sarankan - layar terbagi tempat pengguna dapat masuk (karena pengguna dapat memiliki akun tetapi lupa masuk) atau mendaftar (jika dia tidak memilikinya).

  1. Templat Hierarki
  2. Tag Bersyarat
  3. Putaran

Ditambahkan setelah komentar di bawah ini:

Untuk mengarahkan kembali penggunaan headerdengan wp_login_url- lagi, periksa referensi 1 dan 2 di bawah ini:

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

Referensi:

  1. Header - PHP
  2. wp_login_url

Sebenarnya saya tidak tahu funtction pada wordpress yang mengembalikan URL atau permalink yang diminta. Dan tentang pesan dispaly, tinggalkan, saya hanya ingin mengarahkan mereka ketika mereka meminta URL tertentu tanpa login.
user3187719

dapatkah saya melakukannya dengan $ pagenow?
user3187719

@ user3187719 mengedit jawaban asli saya dan menambahkan solusi untuk mengarahkan ulang. PS. $pagenow? Anda mencoba membunuh lalat dengan meriam yakin itu akan berhasil, tetapi mengapa begitu rumit? Tetap sederhana. PS2: Pelajari PHP dan WP Codex.
Borek

4

Anda tidak dapat mengalihkan ke halaman tertentu, tetapi setiap pengguna yang tidak masuk akan diarahkan ke Layar Masuk.

<?php auth_redirect(); ?>

Referensi Wordpress: auth_redirect()

Hanya untuk menyebutkan solusi lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.