2015-12-01 139 views
1

我想添加一個動態下拉選擇列表上的變量產品,但foreach循環無法正常工作。出現選擇框,但它是空的。打印數組顯示正確的信息。我似乎錯過了一個國家問題或某事。Wordpress Woocommerce自定義下拉問題

希望的功能:每個用戶都有一個唯一的字符列表,他們需要能夠在此可變產品頁面上進行選擇。 (單個產品有幾個選項。)

此代碼在主題模板頁面上完美工作。 (childtheme)/testpage.php

它不適用於自定義woocommerce模板文件。地點:(childtheme)/woocommerce/variable/single-product/add-to-cart/variable.php

下面是代碼:

<?php 
$clickedChar = $_GET['cc']; 
$myChars = fyxt_myCharList ($fyxtAccountID); 
?> 

<html> 
<select name="char_list" required> 
    <option value="">Select...</option> 
</html> 

<?php 
    foreach($myChars as $clist){ 
     echo '<option value="'.$clist->idfyxt_character.'"'.(($clickedChar == $clist->idfyxt_character) ? ' selected="selected">' : '>').$clist->character_name.'</option>'; 
    } 
?> 
<html> 
</select> 
</html> 

就像我說的這個代碼工作完全在testpage。 PHP主題模板頁面。但不在woocommerce模板頁面上。它不是循環遍歷。

我也不得不調用WordPress用戶ID的問題而被迫包括

$current_user = wp_get_current_user(); 

具體哪個一般情況下不需要模板的頁面。我懷疑這裏有類似的問題。或者至少是解決問題的線索。

謝謝你的幫助和想法!

+0

1.我認爲''元素不在您的實際代碼中,並且SO格式化出錯了? 2.你可以分享'fyxt_myCharList()'所以問題可以被複制? – helgatheviking

+0

fyxt_myCharList()拉出了ID和Names的關聯數組。它運行良好。不知道爲什麼它可以在主題模板頁面上工作,但不能吸引模板頁面。但下面的鉤子很好地解決了這個問題。謝謝! – user1518699

回答

1

我猜你在fyxt_myCharList()功能的簡化版本。使用woocommerce_before_add_to_cart_button掛鉤,我們可以將一些代碼添加到變量產品的頁面,而無需修改添加到購物車模板。

另請注意,在下拉菜單中使用美妙的小函數selected()

add_action('woocommerce_before_add_to_cart_button', 'so_34027544_custom_dropdown'); 
function so_34027544_custom_dropdown(){ 
    global $product; 
    if(is_product() && $product->is_type('variable')){ 

     $clickedChar = isset($_GET['cc']) && in_array($_GET['cc'], fyxt_myCharList()) ? $_GET['cc'] : ''; 
     $myChars = fyxt_myCharList(); 
     ?> 

     <select name="char_list" required> 
      <option value=""><?php _e('Select...', 'my-textdomain');?></option> 

      <?php 
       foreach($myChars as $clist){ 
        echo '<option value="'.$clist.'"'. selected($clickedChar, $clist, false) . '>' .$clist.'</option>'; 
       } 
      ?> 

     </select> 

     <?php 
    } 
} 


function fyxt_myCharList(){ 
    return array('a', 'b', 'c', 'd', 'e'); 
} 
+0

這樣做了,謝謝!一點點調整,這似乎現在工作。感謝您選擇的提示。這是一個很好的litte函數。 – user1518699

+0

這幫助我獲取變量產品頁面上的項目。但是,他們沒有被添加到購物車。購物車顯示我在管理區域分配的兩個靜態變量,但不顯示輸入到兩個新字段中的動態信息。我已經開始解決這個問題。謝謝您的幫助! http://stackoverflow.com/questions/34072637/wordpress-woocommerce-save-dynamic-frontend-attributes-to-product – user1518699