Ok, nevermind I made it.
I made it so that when permalink is ON, use a nice url, and when it's OFF, use the query string instead.
I will explain how I made it.
I used a pagination class I wrote a while back.
It can be found here
http://www.mu-anime.com/code/pagination.txt
In the page where you want the subcategories to show, use the code below
<?php
//include the paginate class. I put it in the theme folder
include("paginate.php");
// This is the SQL Query to get the number of rows I have
$count = "SELECT COUNT(*) FROM $wpdb->terms AS t
INNER JOIN $wpdb->term_taxonomy AS tt
ON t.term_id = tt.term_id WHERE tt.taxonomy
IN('category') AND tt.parent = '9'";
$number = mysql_query($count);
$row = mysql_fetch_array($number);
$num_rows = array_shift($row);
// Define some variable to hold our pagination settings
$page = !empty($_GET['current_page']) ? (int)$_GET['current_page'] : 1;
$perPage = 2;
$paginate = new sitePagination($page,$perPage,$num_rows);
//the variables would be something like:
$parent = 9;// your category parent ID
$where = " tt.parent = '$parent'";
$in_taxonomies = 'taxonomy';
$orderby = 't.term_id';
$order = 'ASC';
//This is the actual SQL Query to fetch the Data from Database
$query = "SELECT * FROM $wpdb->terms AS t
INNER JOIN $wpdb->term_taxonomy AS tt
ON t.term_id = tt.term_id WHERE tt.taxonomy
IN('category')
AND tt.parent = '$parent' LIMIT {$perPage} OFFSET {$paginate->offset()}";
$terms = $wpdb->get_results($query);
// A foreach loop to output the data nice and clean
foreach($terms as $term){
$cat_parent = get_category($term->parent);
//Had to use the $cat_parent to build the link
//if some has a better idea, would be nice
echo "<li>
<a href='".$cat_parent->slug.'/'.$term->slug."'>". $term->name ."</a>
</li>";
}
// The Fun starts here, all the code below will generate our dynamic page number
// The container class is the same as WP PAGENAVI
// I'm using a custom pagination class I created
echo "<div class='wp-pagenavi'>";
echo "<span class='pages'>Page {$page} of {$paginate->totalPages()}</span>";
if($paginate->totalPages() > 1){
if($paginate->previousPageExists()){
if ( get_option('permalink_structure') ){
echo '<a href="'.$cat_parent->slug.'/page/'.$paginate->previousPage().'">» Previous</a>';
}else{
echo '<a href="?cat='.$cat_parent->term_id.'¤t_page='.$paginate->previousPage().'">« Previous</a>';
}
}
}
for($i=1;$i < ceil($paginate->totalPages()) + 1;$i++){
if($page == $i)
echo '<span class="current">'.$i.'</span>';
else
echo '<a href="'.$cat_parent->slug.'/?current_page='.$i.'">'.$i.'</a>';
}
if($paginate->totalPages() > 1){
if($paginate->nextPageExists()){
if ( get_option('permalink_structure') ){
echo '<a href="'.$cat_parent->slug.'/page/'.$paginate->nextPage().'">Next »</a>';
}else{
echo '<a href="?cat='.$cat_parent->term_id.'¤t_page='.$paginate->nextPage().'">Next »</a>';
}
}
}
echo "</div>";
?>
In the queries, be sure that tt.parent points to your category ID.
Use this in the htaccess, above the #BEGIN wordpress
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteRule category/animes/page/(.*)$ category/animes/\?current_page=$1[L]
</ifmodule>