2017-02-27 2 views
1

私はWooCommerceショップを持っていて、多くの商品を販売しています。は、ごとに1個しかありません。商品をカスタムページにリダイレクト

ユニークな数量の製品を販売した後、私は「在庫切れ」を自動的に表示しますが、この商品ページをカスタムページにリダイレクトしたいと思います。

Plugin => Nothingのために何時間も検索します。

解決策はありますか?

ありがとうございました。

答えて

3

は、非常にこれで、すべての製品(ページ)、カスタムページにリダイレクトすることができますコンパクトで効果的なコード:

add_action('woocommerce_before_single_product', 'product_out_of_stock_redirect'); 
function product_out_of_stock_redirect(){ 
    global $product; 

    // Set HERE the ID of your custom page <== <== <== <== <== <== <== <== <== 
    $custom_page_id = 8; // But not a product page (see below) 

    if (!$product->is_in_stock()){ 
     wp_redirect(get_permalink($custom_page_id)); 
     exit(); // Always after wp_redirect() to avoid an error 
    } 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

あなただけのリダイレクト(ない製品ページ)ための正しいページのIDを設定する必要があります。


更新:(エラーまたは白ページを取得する場合)あなたはwpアクションフック古典的なワードプレスを使用することができます

ここでは、単一の製品ページをターゲットにしても$productオブジェクト(ポストIDを持つ)のインスタンスを取得するために追加的に必要があります。

ので、コードは次のようになります。

add_action('wp', 'product_out_of_stock_redirect'); 
function product_out_of_stock_redirect(){ 
    global $post; 

    // Set HERE the ID of your custom page <== <== <== <== <== <== <== <== <== 
    $custom_page_id = 8; 

    if(is_product()){ // Targeting single product pages only 
     $product = wc_get_product($post->ID);// Getting an instance of product object 
     if (!$product->is_in_stock()){ 
      wp_redirect(get_permalink($custom_page_id)); 
      exit(); // Always after wp_redirect() to avoid an error 
     } 
    } 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

このコードはテスト済みであり、動作します。

+0

あなたの答えをありがとう。あなたのコードは「在庫がある場合」を正しく検出しますが、リダイレクトは機能しません。空白のページにこだわって... – LionelF

+0

@LionelF私は古典的な '' 'wp'' ** wordpressアクションフックを使って自分のコードを更新しました。今回は問題なく動作します。最初のスニペットコードでは、製品ページでリダイレクトが行われた場合にエラーが発生する可能性があります。 – LoicTheAztec

+2

今すぐ完璧!ありがとうございました – LionelF

0
add_action('wp', 'wh_custom_redirect'); 

function wh_custom_redirect() { 
    //for product details page 
    if (is_product()) { 
     global $post; 
     $product = wc_get_product($post->ID); 
     if (!$product->is_in_stock()) { 
      wp_redirect('http://example.com'); //replace it with your URL 
      exit(); 
     } 
    } 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルになります。また、任意のプラグインのPHPファイルにもあります。
コードがテストされ、動作します。

希望します。製品は簡単な条件WC_product方法is_in_stock()を使用して株式の外にあるときwoocommerce_before_single_productアクションフックに引っかけカスタム関数を使用して

関連する問題