web-dev-qa-db-ja.com

woocommerceとis_user_logged_in()をホームページにリダイレクトしない場合

私は現在ウーコマースを使用していて、誰もログインしていないユーザーをホームページにリダイレクトしたいと思っています

私は調査を行い、is_user_logged_in()を使用してユーザーがログインしているかどうかを確認できると判断しました。

私はwoocommerce/woocommerce-functions.phpに実装しようとしました

// When default permalinks are enabled, redirect shop page to post type archive url
    if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) :
        wp_safe_redirect( get_post_type_archive_link('product') );
        exit;
    endif;

それでも、ページを表示することはできます

2
bugz

あなたは、リダイレクトを有効にしたいWooページのページテンプレートの先頭に、関数ファイルではなくコードを挿入したいと思うでしょう。そのため、たとえば、個々の商品ページにアクセスしようとしたときにユーザーをリダイレクトしたい場合は、プラグイン - > woocommerce - > templates - > single-product.phpページの一番上に表示することができます。

ただし、テンプレートを編集するときは、コピーを作成してテーマディレクトリに配置することをお勧めします。これにより、Wooが更新されたときに変更内容が上書きされることはありません。だから私は上記の例では(私のテーマに適用)。私はsingle-product.phpをコピーしてそれをthemes-> agencyファイルに入れてからそのファイルに変更を加えます。そうすれば、あなたのテーマはWooテンプレートファイルの中のファイルの前に常にそのファイルを使うでしょう。

0
Kyle

まず最初に他人のプラグインやコアワードプレスファイルを編集しないでください。

きれいなフォーマットはIDEコードの強調表示、中括弧のマッチング、構文チェッカー、その他の便利なツールを壊すので、きれいなフォーマットではなく中括弧を使う

それで、このコードを入れてください:

// When default permalinks are enabled, redirect shop page to post type archive url
if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) {
    wp_redirect( get_post_type_archive_link('product') );
    die();
}

どちらかで:

  • functions.phpのトップ
  • 専用プラグイン
  • Initフック呼び出し
1
Tom J Nowell

コードfunctions.phpを使用してください。

add_filter('woocommerce_login_redirect', 'wc_login_redirect');

function wc_login_redirect( $redirect_to ) {
     $redirect_to = 'https://www.example.com/';
     return $redirect_to;
}
0