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?

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.


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.


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/') );

2
Bisakah Anda menjelaskan mengapa ini bisa membantu, sehingga orang lain bisa belajar sesuatu dari jawaban Anda?
Krzysiek Dróżdż
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.