重定向至结账WooCommerce失败

时间:2018-02-17 作者:Johanna Ferreira

Bonsouir,当用户从单个产品页面添加到购物车产品时,我试图重定向到checkout,这是一个非常具体的页面,每个人都可以看到简单的产品

enter image description here

现在,当我将此代码添加到函数中时,一切都正常工作。php

function my_custom_add_to_cart_redirect( $url ) {
        $url = wc_get_checkout_url();
        return $url;
}

add_filter( \'woocommerce_add_to_cart_redirect\',\'my_custom_add_to_cart_redirect\');
但是,当我修改代码时,添加条件来区分那些不是使用此代码的单一产品页面的页面时,它不起作用

function my_custom_add_to_cart_redirect( $url ) {   

    if ( is_product() ){
        $url = wc_get_checkout_url(); 
        return $url;
    }
}

add_filter( \'woocommerce_add_to_cart_redirect\', \'my_custom_add_to_cart_redirect\' );
我把条件和echo "it works" 打印效果很好,但重定向不起作用。

你认为问题出在哪里,这应该有效,只是一个简单的条件,但对我不起作用,我使用Avada主题和Woocommerce更新

EDIT : 当我添加到购物车时,链接生成为

[www.domain.com]/product/[name-of-product]/?add-to-cart=[PRODUCTID]
路径

[www.domain.com]/product/[name-of-product]/ 
被视为Woocommerce的产品,但另一个包括?add-to-cart=[PRODUCTID] 不被视为产品,但应该是因为它仍然是产品,只是通过GET发送变量

您知道如何将其识别为产品页吗?

3 个回复
最合适的回答,由SO网友:Johanna Ferreira 整理而成

在这种情况下对我有效的是这个代码

add_filter( \'woocommerce_add_to_cart_redirect\', \'redirect_add_to_cart\' );

function redirect_add_to_cart() {       
    if ( isset( $_POST[\'add-to-cart\'] ) ) {
        $url = wc_get_checkout_url();
        return $url;
    }       
}
如果它是一个产品,它会重定向,但如果你在商店页面,它不会重定向,当然,如果你想重定向到另一个页面,但在单个产品页面,代码应该是if ( !isset( $_POST[\'add-to-cart\'] ) ) {

我希望我的问题和回答能帮助访问此帖子的人

SO网友:Aadil P.

函数is\\u product()和/或is\\u single()只能在wp\\u query()就绪后识别页面。显然,在代码运行时,所说的wp\\u query()没有任何内容,无法识别它是单个页面还是类别页面等。因此,在代码中,is\\u product()函数返回(bool)false。

在复制代码时,我从函数文件打印了wp\\u查询,结果如下。

如果在wp\\u query()准备就绪后添加操作,则可能实现您想要实现的目标,在这种情况下,更改重定向页面的第二个函数可能会起作用。

WP\\u查询对象([查询]=>[查询变量]=>数组()

[tax_query] => 
[meta_query] => 
[date_query] => 
[queried_object] => 
[queried_object_id] => 
[request] => 
[posts] => 
[post_count] => 0
[current_post] => -1
[in_the_loop] => 
[post] => 
[comments] => 
[comment_count] => 0
[current_comment] => -1
[comment] => 
[found_posts] => 0
[max_num_pages] => 0
[max_num_comment_pages] => 0
[is_single] => 
[is_preview] => 
[is_page] => 
[is_archive] => 
[is_date] => 
[is_year] => 
[is_month] => 
[is_day] => 
[is_time] => 
[is_author] => 
[is_category] => 
[is_tag] => 
[is_tax] => 
[is_search] => 
[is_feed] => 
[is_comment_feed] => 
[is_trackback] => 
[is_home] => 
[is_404] => 
[is_embed] => 
[is_paged] => 
[is_admin] => 
[is_attachment] => 
[is_singular] => 
[is_robots] => 
[is_posts_page] => 
[is_post_type_archive] => 
[query_vars_hash:WP_Query:private] => 
[query_vars_changed:WP_Query:private] => 1
[thumbnails_cached] => 
[stopwords:WP_Query:private] => 
[compat_fields:WP_Query:private] => Array
    (
        [0] => query_vars_hash
        [1] => query_vars_changed
    )

[compat_methods:WP_Query:private] => Array
    (
        [0] => init_query_flags
        [1] => parse_tax_query
    )
)是否为产品?布尔(假)

SO网友:Misha Rudrastyh

我只想补充一下这个问题,当您执行签出重定向时,您可能想更改“添加到购物车”按钮文本,可以使用woocommerce_product_add_to_cart_text 对于产品归档,以及woocommerce_product_single_add_to_cart_text 对于单个产品页面。

下一个问题是“The{product name}has added to your cart”(产品名称已添加到购物车)通知。可能您也想隐藏它,因为它显示在签出页面上。也可以使用wc_add_to_cart_message_html

您可以在中找到代码示例this 文章

结束

相关推荐

url redirect none www to www

在我的常规设置中,url显示不带www如果我这样放置www我需要做什么。htaccess mod\\u rewrite重定向我的none www(example.com)doamin重定向www(www.example.com)或这是否正确处理url重定向?