WordPress.org

Forums

Advance WP Query Search Filter
[resolved] Order taxonomies in drop down or check box (7 posts)

  1. cperez500
    Member
    Posted 2 years ago #

    Hi

    I'm using a hierarchical taxonomy and i wonder if there is a way to sort the fields in a drop down or check box, and/or be listed, with the child categories within their parent.

    i.e. something like this

    • Fruits
      • Banana
      • Kiwi
    • Vegetables
      • Potato

    Thank you in advance.
    Cheers

    http://wordpress.org/extend/plugins/advance-wp-query-search-filter/

  2. TC.K
    Member
    Plugin Author

    Posted 2 years ago #

    No the plugin does not support this.

    This will required additional work to customize the plugin, which not a ideal way to do this.

  3. cperez500
    Member
    Posted 2 years ago #

    Ok thanks.

  4. itsjaked
    Member
    Posted 2 years ago #

    Hey I just saw this and I though I'd help out. What you have to do it edit searchform.php (go to the plugin and then html). You can just insert the HTML using the php echo function.

    First make sure the form id equals the form you want to display the field on.

    Then echo the HTML, you'll have to put in by hand the meta key you want to compare as well as the keys of the items. Also, depending on how many form elements you have you'll need to change the '3's that are currently in my form.

    if ($id == Form_Id){
    echo '<div class="awqsf_box cmfdrop-3">
    <label class="taxo-cmf-3">Venue Location</label><br>
    <input type="hidden" name="cmf[3][metakey]" value="meta_key_to_compare">
    <input type="hidden" name="cmf[3][compare]" value="1">
    <select id="cmf-3" name="cmf[3][value]">
    	<option value="wqsfcmfall">All </option>
    	<optgroup label="Fruits">
    	  <option value="Meta_Value_Here"> Banana </option>
    	  <option value="ex. kiwi"> Kiwi </option>
    	</optgroup>
    	<optgroup label="Vegetables">
    	  <option value="Meta_Value_Here">Potato</option>
    	</optgroup>
    
    </select>
    </div>';
    }

    If you have any other questions let me know!

  5. cperez500
    Member
    Posted 2 years ago #

    Many thanks itsjaked, I'll give it a try.
    Cheers

    oh, i was wondering if there is any way to use wordpress tags, or similar, to automatically get the name of the taxonomies by their ID in the case that someday i change them, something like 'get_the_title($ID);'

  6. cperez500
    Member
    Posted 2 years ago #

    Hi again,

    At the end i opted for a checkbox type form, and following itsjaked's example and pluging code i used something like this

    '<div class="awqsf_box taxocheck-2">
    <label class="taxo-label-2">Sector</label>
    <input type="hidden" name="taxo[2][name]" value="sector">
    <label class="taxcheckbox"><input type="checkbox" id="taxo-2" name="taxo[2][call]" class="checkall" >Todos los sectores</label>
    <fieldset>
    <legend>Salud</legend>
    <label class="taxcheckbox"><input type="checkbox" id="taxo-2" name="taxo[2][term][]" value="gimnasios" >Gimnasios</label>
    <label class="taxcheckbox"><input type="checkbox" id="taxo-2" name="taxo[2][term][]" value="salud-belleza" >Todos</label>
    </fieldset>
    <div style="clear:both"></div>
    </div>'

    I've got some questions,

    How can i get all the terms from the taxonomy in an automatic way and for each term put a label?

    How can i get the name of the term using its ID? so i can use as '<label> term </label>'

    The defined classes for labels, etc. are only for style purposes? i want to know if i can get rid of it to make it easier

    Thanks, and sorry for the bad english

  7. marblecake
    Member
    Posted 1 year ago #

    I had the same issues with checkboxes. Needed hierarchical taxonomy checkboxes, so edited taxcheckbox.php and replaced the foreach loop with this:

    $parents = array();
    $children = array();
    
    foreach($terms as $term){
    	if($term->parent == 0){
    		$parents[] = $term;
    	}else{
    		if(!isset($children[$term->parent])){
    			$children[$term->parent] = array();
    		}
    		$children[$term->parent][] = $term;
    	}
    }
    
    foreach($parents as $parent){
    
    	if(isset($_GET['taxo'][$c]['term'])){
    		if(is_array($_GET['taxo'][$c]['term']) ){
    			$selected = (isset($_GET['taxo'][$c]['term']) && in_array($parent->slug, $_GET['taxo'][$c]['term'])) ? 'checked="checked"' : '';}
    		else{
    			$selected = (isset($_GET['taxo']) && $_GET['taxo'][$c]['term']==$parent->slug) ? 'checked="checked"' : '';
    		}
    	}
    
    	$value = $parent->slug;
    	echo '<label class="taxcheckbox"><input type="checkbox" id="taxo-'.$c.'" name="taxo['.$c.'][term][]" value="'.$value.'" '.$selected.'>'.$parent->name.'</label>';
    
    	if(isset($children[$parent->term_id])){
    
    		echo '<ul class="taxcheck-children">';
    
    		foreach($children[$parent->term_id] as $child){
    			if(isset($_GET['taxo'][$c]['term'])){
    				if(is_array($_GET['taxo'][$c]['term']) ){
    					$selected = (isset($_GET['taxo'][$c]['term']) && in_array($child->slug, $_GET['taxo'][$c]['term'])) ? 'checked="checked"' : '';}
    				else{
    					$selected = (isset($_GET['taxo']) && $_GET['taxo'][$c]['term']==$child->slug) ? 'checked="checked"' : '';
    				}
    			}
    
    			$value = $child->slug;
    			echo '<li><label class="taxcheckbox"><input type="checkbox" id="taxo-'.$c.'" name="taxo['.$c.'][term][]" value="'.$value.'" '.$selected.'>'.$child->name.'</label></li>';
    		}
    
    		echo '</ul>';
    
    	}
    
    }

Topic Closed

This topic has been closed to new replies.

About this Plugin

  • Advance WP Query Search Filter
  • Frequently Asked Questions
  • Support Threads
  • Reviews

About this Topic