Revision: 59166
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 22, 2012 02:21 by dnnsldr
Initial Code
//This will grab taxonomies three levels deep (parent, child, grandchild) and display them
//in an accordion fashion. Parent is the header, then child with a checkbox, if checked, will
//display grandchild taxonomies.
//Uses jQuery Accordion (docs.jquery.com/UI/Accordion)
<?php
$taxonomyName = "aisle-category";
//This gets top layer terms only. This is done by setting parent to 0.
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));
echo "<div id='accordion'>";
foreach ($parent_terms as $pterm) {
//Get the Child terms
echo "<h3 class='aisleHeading'>".htmlspecialchars($pterm->name)."</h3>";
echo "<div style='display:none'>";
$cterms = get_terms($taxonomyName, array('child_of' => $pterm->term_id, 'parent' => $pterm->term_id, 'orderby' => 'group_name', 'hide_empty' => false));
echo "<ul class='childTerms'>";
foreach ($cterms as $cterm) {
//now lets get the grandchildren terms. these terms we will use to populate the shopping list form
$gcterms = get_terms($taxonomyName, array('child_of' => $cterm->term_id, 'orderby' => 'group_name', 'hide_empty' => false));
echo "<li class='childTermHeading'><span>".htmlspecialchars($cterm->name)."<input type='checkbox' value='".htmlspecialchars($cterm->name)."' id='".preg_replace('/[ )(.-.,.&.;]/','',$cterm->name)."' name='".htmlspecialchars($cterm->name)."'/></span>";
echo "<ul id='gcTerms-".preg_replace('/[ )(.-.,.&.;]/','',$cterm->name)."' class='gcTerms hidden' style='margin-left: 10px;'>";
echo "<li class='letsCheck'><div><input type='checkbox' class='checkall'> Check All</div>";
foreach ($gcterms as $gcterm) {
echo "<li><input type='checkbox' name='{$gcterm->term_id}' value='{$gcterm->term_id}' onclick='childItemClick(this, \"".addslashes($gcterm->name)."\");'><label for='".addslashes($gcterm->name)."'>".htmlspecialchars($gcterm->name)."</label></li>";
}//end foreach $gcterms
echo "</ul>";
echo "</li>";
}//end of foreach $cterms
echo "</ul>";
echo "</div>";
}//end of foreach $parent_terms
echo "</div>";
?>
<script type="text/javascript">
jQuery(document).ready(function($){
jQuery('#accordion').accordion({active: false, collapsible: true});
jQuery('.childTermHeading span input').click( function() {
jQuery('#gcTerms-' + $(this).attr('id')).toggle();
});
jQuery('.checkall').click(function () {
jQuery(this).parents('ul:eq(0)').find(':checkbox').attr('checked', this.checked);
});
});//thats all folks
</script>
Initial URL
Initial Description
//This will grab taxonomies three levels deep (parent, child, grandchild) and display them //in an accordion fashion. Parent is the header, then child with a checkbox, if checked, will //display grandchild taxonomies. //Uses jQuery Accordion (docs.jquery.com/UI/Accordion)
Initial Title
WordPress Taxonomies Accordion 3 Levels
Initial Tags
wordpress, jquery
Initial Language
PHP