Làm cho các trang WooC Commerce chỉ có thể truy cập đối với người dùng đã đăng nhập


12

Tôi có một trang web sử dụng WordPress và thương mại điện tử sử dụng WooC Commerce. Tôi muốn cửa hàng của tôi (và tất cả các trang của nó) chỉ được nhìn thấy bởi người dùng đã đăng nhập.

Thông qua plugin Trình quản lý truy cập người dùng , tôi đã từ chối quyền truy cập vào trang cửa hàng, nhưng với một liên kết trực tiếp đến một sản phẩm, v.v ... người ta có thể truy cập trang cụ thể đó, ngay cả khi người dùng chưa đăng nhập.

Làm cách nào tôi có thể chuyển hướng người dùng, những người không đăng nhập, sang một trang khác nếu họ cố truy cập trang WooC Commerce?

Câu trả lời:


24

Đặt cái này trong functions.phptập tin của bạn :

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

Nó làm gì?
Chúng tôi kiểm tra xem người dùng chưa đăng nhập có muốn xem trang WooC Commerce không và chuyển hướng anh ấy / cô ấy đến trang chủ của chúng tôi.


Cảm ơn sự giúp đỡ của bạn. Các tệp tin.php là trong thư mục chủ đề của tôi ?? Và làm thế nào tôi có thể nhớ lại chức năng này từ trang sản phẩm? Cảm ơn :-)
Alessandro

Cảm ơn rât nhiều. Mã của bạn hoạt động tốt cho tôi. Rất cám ơn nhiều :)
Alessandro

1
Đảm bảo bạn không đặt bất kỳ trang thương mại điện tử nào làm trang chủ của mình, vì khi đó trang web sẽ không hoạt động nữa.
XUÂN

7

Tôi vừa thay đổi chuyển hướng thành

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

vì vậy người dùng được chuyển hướng trên trang "Tài khoản của tôi" nếu không đăng nhập hoặc đăng ký.


2
Đây không phải là phương pháp tốt nhất để chuyển hướng đến My Accounttrang. Tốt hơn là truy xuất permalink của trang Tài khoản của tôi mà bạn đã liên kết trong cài đặt WooC Commerce của mình. Bằng cách này bất cứ khi nào permalink được thay đổi hoặc bạn có một trang web đa ngôn ngữ đang chạy permalink vẫn sẽ được truy xuất chính xác. Nói tóm lại: Tốt hơn hết là không nên sử dụng permalinks / sên (hoặc nói chung là URL). Một phương pháp tốt hơn sẽ là:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

bạn thiếu mã; nó kết thúc
user889030

0

Tôi sẽ thay đổi điều này

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

thay vì

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

2
Bạn có thể giải thích lý do tại sao điều này sẽ giúp, để người khác có thể học được điều gì đó từ câu trả lời của bạn?
Krzysiek Dróżdż
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.