web-dev-qa-db-ja.com

チェックアウトしたwoocommerceへのリダイレクトに失敗しました

Bonsouir、ユーザーが1つの商品ページから商品をカートに追加したときにチェックアウトにリダイレクトするようにしています。

enter image description here 

今、このコードをfunctions.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"を入れてかなりうまく印刷しましたが、リダイレクトは機能していません。

問題はどこにあると思いますか、これはうまくいくはずです、それはただ簡単な条件ですが、私にはうまくいかない、Avを使用しているImとWoocommerceを更新しました

_ edit _ :カートに追加すると、リンクは次のように生成されます。

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

パス

[www.domain.com]/product/[name-of-product]/ 

ウーコマースは製品として考えられていますが、?add-to-cart=[PRODUCTID]を含む他の製品は製品とは見なされませんが、それはまだ製品であるため、GETを介して変数を送信するだけであるはずです。

商品ページとして認識させる方法を知っていますか?

1

さて、この場合私にとってうまくいくのはこのコードでした

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'] ) ) {になります。

私の質問と答えがこの記事を訪れた誰かに役立つことを願っています

0

この質問に追加したいのは、チェックアウトリダイレクトを実行するときに、カートに追加ボタンのテキストを変更することです。商品アーカイブの場合はwoocommerce_product_add_to_cart_textで、単一の場合はwoocommerce_product_single_add_to_cart_textで可能です製品ページ。

次の問題は、「{製品名}がカートに追加されました」という通知です。おそらくあなたもそれを非表示にしたいでしょう、なぜならそれはチェックアウトページに表示されるからです。 wc_add_to_cart_message_htmlフックでも可能です。

this の記事にあるコード例。

0
Misha Rudrastyh

関数is_product()またはis_single()は、wp_query()の準備が整った後に初めてページを識別できます。明らかに、あなたのコードが実行されている時には、上記のwp_query()は何も持たず、それがシングルページなのかカテゴリページなのかを識別できません。

あなたのコードを複製すると、私は関数ファイルからwp_queryを出力しました、そしてそれは以下の結果をもたらしました。

Wp_query()の準備が整った後にアクションを追加すると、リダイレクトページ might workを変更するための2番目の関数になります。

WP_Queryオブジェクト([query] => [query_vars] => Array()

[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
    )

)IS PRODUCT?ブール値(偽)

0
Aadil P.