2016-05-13 31 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登錄表單都重定向到結帳頁面。 條件不被尊重。

在進入結賬頁面之前,我會檢查您是否已登錄。如果您已登錄,則重定向到結帳,但重定向到使用登錄表單創建的頁面。登錄該頁面時,不要進入我的帳戶頁面,而是重定向到結帳。

默認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; 
    } 
} 

如果有人能幫助我,我將非常感激。

+0

我不是太熟悉Woocommerce的過濾器,但條件要麼是_inside_功能,或周圍的'的add_filter()'調用 - 否則,你的風險調用一個沒有按」功能不存在。 –

+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; 
} 
相關問題