Wordpress WP E-Commerce Plugin, There is a widget called Product Category Widget which lists all the product categories. During the site development you may have a lot of categories and nested categories then it will be difficult to sort the list. So here I'm helping you with a bit of code which will sort the products in the widget.
Method 1:
Edit the file : /wp-content/plugins/wp-e-commerce/wpsc-widgets/category_widget.php
Edit the file : /wp-content/plugins/wp-e-commerce/wpsc-widgets/category_widget.php
Add the below highlighted code to your php file.
function subval_sort($a,$subkey) {
foreach($a as $k=>$v) {
$b[$k] = strtolower($v[$subkey]);
}
asort($b);
foreach($b as $key=>$val) {
$c[] = $a[$key];
}
return $c;
}
foreach($a as $k=>$v) {
$b[$k] = strtolower($v[$subkey]);
}
asort($b);
foreach($b as $key=>$val) {
$c[] = $a[$key];
}
return $c;
}
$tempI = $i;
$i=0;
foreach($instance_categories as $key=>$value)
{
$newArray[$i]['term_id'] = $value->term_id;
$newArray[$i]['name'] = $value->name;
$newArray[$i]['slug'] = $value->slug;
$newArray[$i]['term_group'] = $value->term_group;
$newArray[$i]['term_taxonomy_id'] = $value->term_taxonomy_id;
$newArray[$i]['taxonomy'] = $value->taxonomy;
$newArray[$i]['description'] = $value->description;
$newArray[$i]['parent'] = $value->parent;
$newArray[$i]['count'] = $value->count;
$newArray[$i]['sort_order'] = $value->sort_order;
$i++;
}
$i = $tempI;
$newArray = subval_sort($newArray,'name');
$xyz = 0;
$instance_categories = array();
foreach($newArray as $key=>$value)
{
$instance_categories[$xyz] = (object) $value;
$xyz++;
}
unset($xyz);
unset($newArray);
if(!empty($instance_categories)){
foreach($instance_categories as $categories){
$instance['categories'][$categories->term_id] = 'on';
}
}
Method 2:
You can use the below query also to fetch categories and can use it recursively for sub-categories.
name; ?>
$results =$wpdb->get_results("SELECT name, slug
FROM wp_term_taxonomy AS wtt
JOIN wp_terms AS wt ON wt.term_id = wtt.term_id
WHERE wtt.taxonomy = 'wpsc_product_category'
AND wtt.parent =$category_id");
foreach($results as $key=>$value)
{
?>
}
?>