로그인 한 사용자 만 WooCommerce 페이지에 액세스 할 수 있도록하십시오


12

WordPress를 사용하는 웹 사이트와 WooCommerce를 사용하는 전자 상거래가 있습니다. 로그인 한 사용자 만 내 상점 (및 모든 페이지)을 볼 수 있기를 바랍니다.

비아 사용자 액세스 관리자 플러그인, 나는 상점 페이지에 대한 액세스를 거부했지만, 제품에 대한 직접 링크 등 하나는 사용자가 로그인하지 않은 경우에도, 그럼에도 불구하고 특정 페이지에 액세스 할 수 있습니다.

WooCommerce 페이지에 액세스하려고하면 로그인하지 않은 사용자를 다른 페이지로 리디렉션하려면 어떻게해야합니까?

답변:


24

이것을 functions.php파일에 넣으십시오 .

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

무엇을합니까?
우리는이 있는지 확인 - 로그인하지 않은 한 사용자 WooCommerce 페이지를 참조하고, 우리의 홈 페이지에 그 / 그녀의 리디렉션하려고합니다.


도와 주셔서 감사합니다. functions.php 파일은 내 테마 폴더에 있습니다 ?? 제품 페이지에서이 기능을 어떻게 불러올 수 있습니까? 감사합니다 :-)
Alessandro

대단히 감사합니다. 귀하의 코드는 저에게 효과적입니다. 많은 감사 :)
Alessandro

1
사이트가 더 이상 작동하지 않으므로 woocommerce 페이지를 홈페이지로 설정하지 마십시오.
SPRBRN

7

방금 리디렉션을로 변경했습니다.

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

로그인 또는 등록되지 않은 경우 "내 계정"페이지에서 사용자가 리디렉션됩니다.


2
My Account페이지 로 리디렉션하는 가장 좋은 방법은 아닙니다 . WooCommerce 설정에서 연결 한 내 계정 페이지의 영구 링크를 검색하는 것이 좋습니다. 이렇게하면 영구 링크가 변경되거나 영구 링크를 실행하는 다국어 사이트가있을 때마다 올바르게 검색됩니다. 한마디로 : 퍼머 링크 / 슬러그 (또는 일반적으로 URL)를 하드 코딩하지 않는 것이 좋습니다. 더 나은 방법은 다음과 같습니다.wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

코드가 누락되었습니다. 끝
user889030

0

나는 이것으로 바꿀 것입니다

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

대신에

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

2
다른 사람들이 귀하의 답변에서 무언가를 배울 수 있도록 왜 이것이 도움이되는지 자세히 설명해 주시겠습니까?
Krzysiek Dróżdż
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.