2017-04-26 25 views
-1

これはかなりです。私のphp-fuはまだかなり弱いですし、私はまだかなりのwoocommerceに新しいです。Woocommerce - 2つのproduct_idsの1つがチェックアウト時にカートに入っている場合は、フォームフィールドを追加してdivを表示/非表示にします

チェックアウトページのカートにある2つの特定商品IDのいずれかを確認するスクリプトを作成する必要があります。「paypalメールアドレス」テキストフィールドと「受信ニュースレター」を追加します。チェックボックスをクリックするだけでなく、 "form-shipping.php"テンプレートで作成したdivを別の隠しdivで置き換えることもできます。

驚いたことに、これまでの私の研究では、チェックアウトページのカート内の一致する商品IDを確認するだけではうまくいきませんでした。これは合理的に必要と思われるようです。私はそれだけでこの時点で大きな勝利になると考えています。

この目標を達成するための提案、指針または手掛かりがあれば幸いです。ここで

https://wordimpress.com/create-conditional-checkout-fields-woocommerce/から適応しようと、私が取り組んできたコードです:

<?php 
add_action('woocommerce_before_checkout_billing_form', 'aym_custom_checkout_field'); 

function aym_custom_checkout_field($checkout) { 

    //Check if Product in Cart 
    $prod_in_cart_17563 = aym_is_conditional_product_in_cart_17563(17563); 
    $prod_in_cart_17558 = aym_is_conditional_product_in_cart_17558(17558); 

    if ($prod_in_cart_17563 === true || $prod_in_cart_17558 === true) { 


     //Prod is in cart so hide div 
     echo '<script type="text/javascript">$(".checkout_promo_content").css("display", "none")</script>'; 
     echo '<script type="text/javascript">$(".checkout_promo_aff_content").css("display", "block")</script>'; 

     //and add additional fields 
     echo '<div id="email_paypal"><h3>' . __('Paypal Email Address') . '</h3><p style="margin: 0 0 8px;">Please enter the email address you use for Paypal</p>'; 

     woocommerce_form_field('pp_email_textbox', array(
     'type' => 'text', 
     'class' => array('paypal-email form-row-wide'), 
     'label' => __('Paypal Email Address'), 
     ), $checkout->get_value('pp_email_textbox')); 


     echo '<h3>' . __('Ambassador Terms and Conditions') . '</h3><p style="margin: 0 0 8px;">Please accept the <a href="http://www.acceleratingyoungminds.com/ambassador-terms-conditions/">Ambassaor Terms and Conditions</a></p>'; 

     woocommerce_form_field('amb_terms_checkbox', array(
     'type' => 'checkbox', 
     'class' => array('amb_terms-checkbox form-row-wide'), 
     'label' => __('I accept Ambassador terms and Conditions'), 
     ), $checkout->get_value('amb_terms_checkbox')); 


     echo '<h3>' . __('Subscribe for Ambassador Mailing List') . '</h3><p style="margin: 0 0 8px;">Would you like to subscribe for welcome emails and important information</p>'; 

     woocommerce_form_field('amb_sub_checkbox', array(
     'type' => 'checkbox', 
     'class' => array('amb_sub_checkbox form-row-wide'), 
     'label' => __('I would like to subscribe to the Ambassador Newsletter'), 
     ), $checkout->get_value('amb_sub_checkbox')); 

     echo '</div>'; 
    } 

} 


?> 
+2

してください、 "__write /デバッグ-MY-code__"、 "__recommend /サーチ何か-用-me__"、 "__tutorial__" リクエストと "__low-effort__"、 "__unclear__"、 "__opinion-based__" 、 "**プログラミングに関連しない**"の質問は[スタックオーバーフローのオフトピック](http://stackoverflow.com/help/on-topic)です。代わりに、[質問する方法](http://stackoverflow.com/help/how-to-ask)に記載されているように、良い質問を**研究努力**、**問題の明確な説明**、 [最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を含みます。 –

+1

どのバージョンのwoocommerceですか? – LoicTheAztec

+0

バージョン2.6.14ですが、間もなくアップグレードする必要があります。まだ3.0に対応するようにアップグレードされていないプレミアムテーマを使用しています。 –

答えて

0

まず新人の動き、私も二つの製品(aym_is_conditional_product_in_cart_17563、など)のための関数を定義することができませんでした。第二に、私はWordpressのためにJQueryを間違って呼び出しました。第3に、add_actionで間違ったフックを使用しました。第4に、私は当初、この全部を早急に投稿しました。私は家族に恥をもたらしました。次のコードは期待どおりに動作します。うまくいけば、それは似たような問題を持つ人に役立ちます。

//AMBASSADOR CUSTOM CHECKOUT FIELDS, CONTENT 
add_action('woocommerce_after_checkout_billing_form', 'aym_custom_checkout_field'); 

function aym_custom_checkout_field($checkout) { 

    //Check if Product in Cart 
    $prod_in_cart_17563 = aym_is_conditional_product_in_cart_17563(17563); 
    $prod_in_cart_17558 = aym_is_conditional_product_in_cart_17558(17558); 

    if ($prod_in_cart_17563 === true || $prod_in_cart_17558 === true) { 


     //Prod is in cart so hide div 
     echo '<script type="text/javascript"> 

     jQuery(function($) { 
      $(window).load(function(){ 
       console.log("hidden!"); 
       $(".check-promo-content").css("display", "none"); 
      }); 
     }); 

     </script>'; 

     echo '<script type="text/javascript"> 
     jQuery(function($) { 
      console.log("shown!"); 
      $(".checkout_promo_aff_content").css("display", "block"); 
     });</script>'; 

     //and add additional fields 
     echo '<div id="email_paypal"><h3>' . __('Paypal Email Address') . '</h3><p style="margin: 0 0 8px;">Please enter the email address you use for Paypal</p>'; 

     woocommerce_form_field('pp_email_textbox', array(
     'type' => 'text', 
     'class' => array('paypal-email form-row-wide'), 
     'label' => __('Paypal Email Address'), 
     ), $checkout->get_value('pp_email_textbox')); 


     echo '<h3>' . __('Ambassador Terms and Conditions') . '</h3><p style="margin: 0 0 8px;">Please accept the <a href="http://www.acceleratingyoungminds.com/ambassador-terms-conditions/">Ambassador Terms and Conditions</a></p>'; 

     woocommerce_form_field('amb_terms_checkbox', array(
     'type' => 'checkbox', 
     'class' => array('amb_terms-checkbox form-row-wide'), 
     'label' => __('I accept Ambassador terms and Conditions'), 
     ), $checkout->get_value('amb_terms_checkbox')); 


     echo '<h3>' . __('Subscribe for Ambassador Mailing List') . '</h3><p style="margin: 0 0 8px;">Would you like to subscribe for welcome emails and important information?</p>'; 

     woocommerce_form_field('amb_sub_checkbox', array(
     'type' => 'checkbox', 
     'class' => array('amb_sub_checkbox form-row-wide'), 
     'label' => __('I would like to subscribe to the Ambassador Newsletter'), 
     ), $checkout->get_value('amb_sub_checkbox')); 

     echo '</div>'; 
    } 

} 
//TEAM LEADER BUNDLE 
function aym_is_conditional_product_in_cart_17558($product_id) { 
    //Check to see if user has product in cart 
    global $woocommerce; 

    //flag no product in cart 
    $prod_in_cart_17558 = false; 

    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) { 
     $_product = $values['data']; 

     if ($_product->id === $product_id) { 
      //product is in cart! 
      $prod_in_cart_17558 = true; 

     } 
    } 

    return $prod_in_cart_17558; 
} 
//AMBSSADOR BUNDLE 
function aym_is_conditional_product_in_cart_17563($product_id) { 
//Check to see if user has product in cart 
global $woocommerce; 

//flag no product in cart 
$prod_in_cart_17563 = false; 

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) { 
    $_product = $values['data']; 

    if ($_product->id === $product_id) { 
     //product is in cart! 
     $prod_in_cart_17563 = true; 

    } 
} 

return $prod_in_cart_17563; 
関連する問題