Buat halaman WooCommerce diakses hanya untuk pengguna yang masuk

12

Saya memiliki situs web menggunakan WordPress, dan e-commerce menggunakan WooCommerce. Saya ingin toko saya (dan semua halamannya) dilihat hanya oleh pengguna yang masuk.

Melalui plugin User Access Manager , saya telah menolak akses ke halaman toko, tetapi dengan tautan langsung ke suatu produk, dll. Orang dapat mengakses halaman tertentu itu, meskipun pengguna tersebut tidak masuk.

Bagaimana saya bisa mengarahkan pengguna, yang tidak masuk, ke halaman lain jika mereka mencoba mengakses halaman WooCommerce?

Alessandro
sumber

Jawaban:

24

Letakkan ini di functions.phpfile Anda :

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // feel free to customize the following line to suit your needs
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

Apa fungsinya?
Kami memeriksa apakah pengguna yang tidak masuk ingin melihat halaman WooCommerce, dan mengarahkannya ke halaman rumah kami.

para pria
sumber
Terima kasih untuk bantuannya. File functions.php ada di folder tema saya ?? Dan bagaimana saya bisa mengingat fungsi ini dari halaman produk? Terima kasih :-)
Alessandro
Terima kasih banyak. Kode Anda berfungsi dengan baik untuk saya. Terima kasih banyak :)
Alessandro
1
Pastikan Anda tidak menetapkan halaman woocommerce sebagai beranda, karena situs itu tidak akan berfungsi lagi.
SPRBRN
7

Saya baru saja mengubah pengalihan ke

wp_redirect( site_url('my-account/') )

jadi pengguna diarahkan ke halaman "Akun Saya" jika tidak masuk atau terdaftar.

Pierre
sumber
2
Ini bukan metode terbaik untuk mengarahkan ulang ke My Accounthalaman. Lebih baik untuk mengambil permalink halaman Akun Saya yang Anda tautkan dalam pengaturan WooCommerce Anda. Dengan cara ini setiap kali permalink diubah atau Anda memiliki situs multi-bahasa yang menjalankan permalink akan tetap diambil dengan benar. Singkatnya: Lebih baik untuk tidak melakukan permalink / siput hardcode (atau URL pada umumnya). Metode yang lebih baik adalah:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann
kode Anda hilang; itu berakhir
user889030
0

Saya akan berubah menjadi ini

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

dari pada

wp_redirect( site_url('my-account/') );
Ilias Benetos
sumber
2
Bisakah Anda menjelaskan mengapa ini bisa membantu, sehingga orang lain bisa belajar sesuatu dari jawaban Anda?
Krzysiek Dróżdż