2016-04-14 111 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'); 
    
相关问题