2016-05-13 4 views
3

私は自分のテーマWoocommerceを開発していますが、私はWoocommerceログインフォームを使用している特定のページにログインしてからリダイレクトする必要があります。これに は私がチェックアウトページにログイン後にリダイレクトを行う、私は唯一のログイン・カートのページをしたいのfunctions.php私のテーマの異なるページでのログインリダイレクトWoocommerce

if (!is_account_page()) { 
add_filter('woocommerce_login_redirect', 'redirect_after_login_cart'); 
    function redirect_after_login_cart(){ 
     wp_redirect(get_permalink(get_page_by_path(‘checkout’))); 
     exit; 
    } 
} 

で以下の機能を追加しました。マイアカウントのフォームは、まだマイアカウントページにリダイレクトされています。それは、私のWoocommerceログインフォームはすべて、チェックアウトページにリダイレクトされています。 条件は尊重されていません。

チェックアウトページに行く前に、私がログインしているかどうかを確認します。ログインしている場合は、チェックアウトにリダイレクトしますが、ログインフォームで作成したページにリダイレクトします。そのページにログオンすると、自分のアカウントページに行くのではなく、チェックアウトにリダイレクトされます。

デフォルト誰も私を助けることができる場合、私は、ログインカート

add_action('template_redirect','check_if_logged_in'); 
function check_if_logged_in(){ 
    if(!is_user_logged_in() && is_checkout()){ 
    wp_redirect(get_permalink(get_page_by_path('login-cart'))); 
    exit; 
    } 
} 

を作成しWoocommerceアカウントに行き、ログインするたびにある、と私はあなたがページ上にある場合にのみ、このフォームを変更しています、私は非常に感謝します。

+0

を私はWoocommerceのフィルタを使用して、あまりにも慣れていないんだけど、条件は_inside_関数である、または 'ADD_FILTER()'の呼び出しの周りにすべきであるのいずれか - そうでなければ、「doesnの関数を呼び出すリスク存在しない。 –

+0

私もその方法をやっているし、うまくいきませんでした。 –

答えて

2

を試すことができますかわかりません。以下のコードは、次のとおりです。

add_action('woocommerce_login_form', 'redirect_user_to_checkout'); 
function redirect_user_to_checkout() { 
    $referer = get_permalink(get_page_by_path('finalizar-compra')); 
if($referer) { 
    if(!is_account_page()) { ?> 
      <input type="hidden" name="redirect-user" value="<?php echo $referer; ?>"><?php 
     } 
    } 
} 



function custom_woocommerce_login_redirect_to_checkout_page($redirect, $user) { 
    if(isset($_POST['redirect-user'])) { 
     $redirect = esc_url($_POST['redirect-user']); 
    } 
    return $redirect; 
} 
add_filter('woocommerce_login_redirect', 'custom_woocommerce_login_redirect_to_checkout_page'); 
0

私は条件を使用なぜあなたは私が私の問題を解決するために管理し、この

add_filter('woocommerce_login_redirect', 'redirect_after_login_cart'); 

function redirect_after_login_cart($default_redirect){ 
    if(function_exists('wc_get_checkout_url')) 
    $redirect_url = wc_get_checkout_url(); 
    else 
    $redirect_url = get_permalink(get_page_by_path(‘checkout’)) ; 
    return $redirect_url; 
} 
関連する問題