2017-07-08 11 views
1

のうち商品は現在在庫の外にある場合、ユーザは、特定の製品のページ、上にある場合、私はチェックしようとしています。商品が在庫されていない場合、別の商品をカートに追加するオプションのプロモーション画像を表示する必要があります。特定WooCommerce製品ページでは、出力のカスタムコードがあれば株式

現在のコードではエラーが発生し、このスニペットに達するとレンダリングが停止します。次のように

今の私のコードは次のとおりです。

<?php if (! $product->is_in_stock() && is_single('12005')) { ?> 

     <div id="oos-promo"> 
      <a href="https://example.com/?add-to-cart=11820&quantity=1"> 
       <img src="https://example.com/wp-content/uploads/2017/07/product.jpg" alt="Promo" class="img-responsive"> 
      </a> 
     </div> 

    <?php } ?> 

私は、このテンプレートファイルの"entry-summary"要素のすぐ内側にネストされてcontent-single-product.phpファイルにこのコードを入れています。

思考?

答えて

1

それを実感してください!代わりに、あなたはwoocommerce_single_product_summaryアクションフックに引っかけ機能で、あなたのコードを埋め込む必要がありますオーバーライドWooCommerceテンプレートの

<?php global $product; if (! $product->is_in_stock() && is_single('12005')) { ?> 

    <div id="oos-promo"> 
     <a href="https://example.com/?add-to-cart=11820&quantity=1"> 
      <img src="https://example.com/wp-content/uploads/2017/07/product.jpg" alt="Promo" class="img-responsive"> 
     </a> 
    </div> 

<?php } ?> 
+0

このエラーを回避する方法を同時に見つけましたが、 '$ product-> get_id()== 12005'はis_single( '12005')よりも優れた方法であり、フック関数テンプレートが変更されたときに更新プロセスを避けてテンプレートをカスタマイズするよりも良い選択です...あなたの回答と質問をアップアップする方法...この回答の1つを「良い」として受け入れる必要があります:["質問? "](https://stackoverflow.com/help/someone-answers)...もしあなたが好きであれば、私をupvoteすることもできます。ありがとう – LoicTheAztec

0

:私の間違いは前if文にグローバル$ product変数に引っ張っていなかった、以下の最終的なコードを参照してくださいこの方法:

add_action('woocommerce_single_product_summary', 'out_of_stock_custom_code', 3); 
function out_of_stock_custom_code() { 
    // Including the WC_Product object 
    global $product; 

    if (! $product->is_in_stock() && $product->get_id() == 12005) { 
     ?> 
     <div id="oos-promo"> 
      <a href="?add-to-cart=11820&quantity=1"> 
       <img src="https://example.com/wp-content/uploads/2017/07/product.jpg" alt="Promo" class="img-responsive"> 
      </a> 
     </div> 
     <?php 
    } 
} 

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

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

関連する問題