2016-04-14 30 views
-3

請幫助我!WooCommerce:將類別複選框更改爲下拉菜單

我需要將類別複選框更改爲WooCommerce添加產品頁面上的下拉列表。用戶應該只能選擇一個類別。

當用戶選擇一個類別時,所選類別的所有子類別應該位於下一個下拉菜單中。用戶應該只能選擇一個子類別。

然後我需要將這兩個下拉菜單放在「產品數據」下拉菜單下。

  1. 如何刪除「產品類別」塊?
  2. 如何將類別下拉列表添加到「產品數據」塊?
  3. 如何根據第一個下拉列表中選擇的類別在第二個下拉列表中放置子類別?

Categories Image

+0

你所要求的事情是大量的開發工作。這不僅僅是你在工作中遇到的問題。爲此,您必須修改插件,以便讓開發人員更好地完成此操作。 –

回答

0
  1. 如何刪除 「產品分類」 塊?

    function remove_custom_meta_box() { 
        remove_meta_box('{taxonomy-name}div', 'product', 'side'); 
    } 
    add_action('admin_menu', 'remove_custom_meta_box'); 
    
  2. 如何將類別下拉列表添加到「產品數據」塊?

  3. 如何把亞類在第二個下拉依賴於第一下拉列表中選擇的類別?

    function categories_dropdown_metabox() { 
        add_meta_box('custom-taxonomy-dropdown', 'Product Category', 'taxonomy_dropdowns_box', 'product', 'side', 'high'); 
    } 
    
    function taxonomy_dropdowns_box($post) { 
        $terms  = get_terms('product_cat', 'hide_empty=0'); 
        $object_terms = wp_get_object_terms($post->ID, 'product_cat', array('fields'=>'ids')); 
    
        <script type="text/javascript"> 
         jQuery(document).ready(function() { 
          jQuery('#product-category').change(function() { 
           var product = jQuery('#product-category').val(); 
           if (product == '0') { 
            jQuery('#prodcatoptions').html(''); 
             jQuery('#categorycontainer').css('display', 'none'); 
           } else { 
            var data = { 
             'action':'get_product_categories', 
             'product':product, 
             'dropdown-nonce': jQuery('#dropdown-nonce').val() 
            }; 
            jQuery.post(ajaxurl, data, function(response){ 
             jQuery('#prodcatoptions').html(response); 
             jQuery('#categorycontainer').css('display', 'inline'); 
            }); 
           } 
          }); 
         }); 
        </script>  
    
        <div> 
         <span>Category:</span> 
         <select required id='product-category' name='prodcategory[]'> 
          <option value=''>Choose category</option> 
          <?php 
          foreach ($terms as $term) { 
           if ($term->parent == 0) { 
            if (in_array($term->term_id, $object_terms)) { 
             $parent_id = $term->term_id; 
             echo "<option value='{$term->term_id}' selected='selected'>{$term->name}</option>"; 
            } else { 
             echo "<option value='{$term->term_id}'>{$term->name}</option>"; 
            } 
           } 
          } 
          ?> 
         </select> 
        </div> 
        <div id='categorycontainer' <?php if (!isset($parent_id)) { echo "style='display: none;'"; }?> > 
         <span>Subcategory:</span> 
         <select required id='prodcatoptions' name='prodcategory[]'> 
          <?php 
          if (isset($parent_id)) { 
           $models = get_terms('product_cat', 'hide_empty=0&child_of='.$parent_id); 
    
           foreach ($models as $model) { 
            if (in_array($model->term_id, $object_terms)) { 
             echo "<option value='{$model->term_id}' selected='selected'>{$model->name}</option>"; 
            } else { 
             echo "<option value='{$model->term_id}'>{$model->name}</option>"; 
            } 
           } 
    
          } 
          ?> 
         </select> 
        </div> 
        <?php 
    } 
    
    add_action('add_meta_boxes', 'categories_dropdown_metabox'); 
    
    function save_my_custom_taxonomy($post_id) { 
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
         return; 
        }  
        if (!wp_verify_nonce($_POST['dropdown-nonce'], 'custom-dropdown')) { 
         return; 
        } 
        $product_cat = array_map('intval', $_POST['prodcategory']); 
        wp_set_object_terms($post_id, $product_cat, 'product_cat'); 
    } 
    
    add_action('save_post','save_my_custom_taxonomy'); 
    
    function get_product_categories() { 
        check_ajax_referer('custom-dropdown', 'dropdown-nonce'); 
        if (isset($_POST['product'])) { 
         $models = get_terms('product_cat', 'hide_empty=0&child_of='. $_POST['product']); 
         echo "<option value=''>Choose subcategory</option>"; 
         foreach ($models as $model) { 
          echo "<option value='{$model->term_id}'>{$model->name}</option>"; 
         } 
        } 
        die(); 
    } 
    
    add_action('wp_ajax_get_product_categories', 'get_product_categories'); 
    
相關問題