【问题标题】:Redirect to custom URL after user clicks 'Proceed to checkout' at the cart page (wordpress)用户在购物车页面(wordpress)单击“继续结帐”后重定向到自定义 URL
【发布时间】:2015-02-05 23:37:57
【问题描述】:

当用户在购物车页面点击“继续结帐”时,我想将他发送到自定义 URL。我在functions.php中使用了这个过滤器

add_filter('woocommerce_get_checkout_url', 'dj_redirect_checkout');

function dj_redirect_checkout($url) {
     global $woocommerce;
     $checkout_url = 'http://my-custom-url.com';
     return  $checkout_url; 
}

但是,在这种情况下,此过滤器也会在结帐页面上触发,我想仅在购物车页面上和点击“继续结帐”后触发它。

请指教。

谢谢,

【问题讨论】:

  • 对不起!但我很困惑..上面的代码是否有效?如果是的话,它会把你带到两页吗?
  • 什么意思? -但是,在这种情况下,此过滤器也会在结帐页面上触发,我想在购物车页面上触发它,并且仅在单击“继续结帐”后触发。
  • 上面的代码可以工作 - 但它可以在 2 个页面上工作(购物车和结帐)。我想让它只在用户点击“继续结帐”后在购物车页面上工作

标签: php wordpress woocommerce


【解决方案1】:

您可以做的是,在您的代码中使用conditional tags

    add_filter('woocommerce_get_checkout_url', 'dj_redirect_checkout');

    function dj_redirect_checkout($url) {
         global $woocommerce;
         if(is_cart()){
              $checkout_url = 'http://my-custom-url.com';
         }
         else { 
         //other url or leave it blank.
         }
         return  $checkout_url; 
    }

已编辑

如果您想在点击添加到卡片按钮后将用户重定向到自定义 URL,那么您可以使用以下代码:

    add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

    function redirect_to_checkout() {
        global $woocommerce;
        $checkout_url = 'http://my-custom-url.com';
        return $checkout_url;
    }

第二次编辑

您可以做的只是在模板上制作结帐页面:

    <?php 
    /**
    * Template Name: Custom Template
    *
    *Custom Template for the woocommerce checkout page
    *
    */

    get_header();?>

    <a href="?page_id=6">Click Me! </a>

    <?php 
    get_footer();
    ?>

在上面的代码中,我制作了名为 custom Template 的模板,并将其与主题文件夹中的wtemplate.php 一起保存。

下一步是创建新页面。我创建了一个名为 Simple Template 的新页面(您可以随意命名)。在侧边栏中,有一个模板选项(您可以参见下图以供参考),其中我选择了 Custom Template 作为模板。

现在转到 仪表板 > WooCommerce > 设置 > 结帐 **,其中有选择结帐页面的选项(您可以在下图中找到)。选择您制作的页面(我已经制作了**简单模板,如您在上面的代码中所见)并保存。

现在只要用户点击Proceed to Checkout,他们就会重定向到该自定义模板。在自定义模板中,您可以链接到woocommerce default checkout page(在我的例子中,它的page_id=6)。

希望对您有所帮助。如果您对此有任何疑问,可以发表评论。

【讨论】:

  • 谢谢,但它只是将我发送到空白页面(条件不起作用)
  • 它正在将您发送到某个地方,这意味着它正在工作。您需要对其进行调试才能使其正常工作。只需从 echo 开始 :)
  • 不,这意味着它没有看到 is_cart() 条件,并由于 else {} 条件为空而将我发送到带有购物车 URL 的空白页面
  • 那你为什么不把woocommerce的默认URL放在那里。我不知道你想实现什么,但你可以把 woocommerce 的结帐页面放在那里:else{ $checkout_url= 'woocommercesdefaultpage.com' }
  • 感谢您的回复。我的想法是在用户单击“继续结帐”后将其发送到自定义页面(他将能够转到标准的 woocommerce 结帐页面)。据我所知,我为 woocommerce_get_checkout_url 添加了过滤器,它在所有页面上进行处理(例如,购物车页面和带有账单和运输详细信息的下订单页面)。我只需要将此过滤器应用于购物车页面上的“继续结帐”按钮。请指教。
猜你喜欢
  • 2016-09-29
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
相关资源
最近更新 更多