ログインしたユーザーのみがWooCommerceページにアクセスできるようにする


12

WordPressを使用したWebサイトと、WooCommerceを使用したeコマースがあります。ログインしたユーザーのみがショップ(およびそのすべてのページ)を表示できるようにします。

User Access Managerプラグインを介して、ショップページへのアクセスを拒否しましたが、製品などへの直接リンクを使用すると、ユーザーがログインしていなくても特定のページにアクセスできます。

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ファイルは私のテーマフォルダーにありますか?製品ページからこの機能を呼び出すにはどうすればよいですか?ありがとう:-)
アレッサンドロ14年

どうもありがとうございました。あなたのコードは私のためにうまく機能します。多くの感謝:)
アレッサンドロ14年

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
他の人があなたの答えから何かを学ぶことができるように、なぜこれが役立つのか詳しく説明していただけますか?
KrzysiekDróżdż
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.