Commit ad70ae0b authored by Canek Peláez's avatar Canek Peláez
Browse files

Add category filtering.

parent c5a9dbc4
Loading
Loading
Loading
Loading
+64 −26
Original line number Diff line number Diff line
@@ -10,20 +10,37 @@ if ($wc_filter == '') {
    $sql = $wpdb->prepare("
        SELECT COUNT(wp_posts.id) AS count
        FROM {$wpdb->posts}, {$wpdb->postmeta}
        WHERE wp_posts.id = wp_postmeta.post_id AND
              wp_posts.post_status = 'publish' AND
              wp_postmeta.meta_key = 'word-count' AND
              wp_posts.post_type = %s", $post_type);
        WHERE {$wpdb->posts}.id = {$wpdb->postmeta}.post_id AND
              {$wpdb->posts}.post_status = 'publish' AND
              {$wpdb->postmeta}.meta_key = 'word-count' AND
              {$wpdb->posts}.post_type = %s", $post_type);
} else if (strpos($wc_filter, "cat:") === 0) {
    $cat = substr($wc_filter, 4);
    $f = '%' . $cat . '%';
    $sql = $wpdb->prepare("
        SELECT COUNT({$wpdb->posts}.id) AS count
        FROM {$wpdb->posts}, {$wpdb->postmeta}, {$wpdb->term_relationships},
             {$wpdb->term_taxonomy}, {$wpdb->terms}
        WHERE {$wpdb->posts}.id = {$wpdb->postmeta}.post_id AND
              {$wpdb->posts}.id = {$wpdb->term_relationships}.object_id AND
              {$wpdb->term_relationships}.term_taxonomy_id =
                   {$wpdb->term_taxonomy}.term_taxonomy_id AND
              {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id AND
              {$wpdb->term_taxonomy}.taxonomy = 'category' AND
              {$wpdb->posts}.post_status = 'publish' AND
              {$wpdb->postmeta}.meta_key = 'word-count' AND
              {$wpdb->posts}.post_type = %s AND
              {$wpdb->terms}.slug LIKE %s", $post_type, $f);
} else {
    $f = '%' . $wc_filter . '%';
    $sql = $wpdb->prepare("
        SELECT COUNT(wp_posts.id) AS count
        SELECT COUNT({$wpdb->posts}.id) AS count
        FROM {$wpdb->posts}, {$wpdb->postmeta}
        WHERE wp_posts.id = wp_postmeta.post_id AND
              wp_posts.post_status = 'publish' AND
              wp_postmeta.meta_key = 'word-count' AND
              wp_posts.post_type = %s AND
              wp_posts.post_title LIKE %s", $post_type, $f);
        WHERE {$wpdb->posts}.id = {$wpdb->postmeta}.post_id AND
              {$wpdb->posts}.post_status = 'publish' AND
              {$wpdb->postmeta}.meta_key = 'word-count' AND
              {$wpdb->posts}.post_type = %s AND
              {$wpdb->posts}.post_title LIKE %s", $post_type, $f);
}
$results = $wpdb->get_results($sql);
$wc_table_total = $results[0]->count;
@@ -38,28 +55,49 @@ if ($wc_pages < 2) {

if ($wc_filter == '') {
    $sql = $wpdb->prepare("
        SELECT wp_posts.id AS id,
               CAST(wp_postmeta.meta_value AS UNSIGNED) AS word_count,
               wp_posts.post_title AS title
        SELECT {$wpdb->posts}.id AS id,
               CAST({$wpdb->postmeta}.meta_value AS UNSIGNED) AS word_count,
               {$wpdb->posts}.post_title AS title
        FROM {$wpdb->posts}, {$wpdb->postmeta}
        WHERE wp_posts.id = wp_postmeta.post_id AND
              wp_posts.post_status = 'publish' AND
              wp_postmeta.meta_key = 'word-count' AND
              wp_posts.post_type = %s
        ORDER by word_count DESC
        WHERE {$wpdb->posts}.id = {$wpdb->postmeta}.post_id AND
              {$wpdb->posts}.post_status = 'publish' AND
              {$wpdb->postmeta}.meta_key = 'word-count' AND
              {$wpdb->posts}.post_type = %s
        ORDER BY word_count DESC
        LIMIT %d, %d", $post_type, $wc_page * WC_ROWS_PER_PAGE, WC_ROWS_PER_PAGE);
} else if (strpos($wc_filter, "cat:") === 0) {
    $cat = substr($wc_filter, 4);
    $f = '%' . $cat . '%';
    $sql = $wpdb->prepare("
        SELECT {$wpdb->posts}.id, {$wpdb->posts}.post_date,
               CAST({$wpdb->postmeta}.meta_value AS unsigned) AS word_count,
               {$wpdb->posts}.post_title AS title
        FROM {$wpdb->posts}, {$wpdb->postmeta}, {$wpdb->term_relationships},
             {$wpdb->term_taxonomy}, {$wpdb->terms}
        WHERE {$wpdb->posts}.id = {$wpdb->postmeta}.post_id AND
              {$wpdb->posts}.id = {$wpdb->term_relationships}.object_id AND
              {$wpdb->term_relationships}.term_taxonomy_id =
                   {$wpdb->term_taxonomy}.term_taxonomy_id AND
              {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id AND
              {$wpdb->term_taxonomy}.taxonomy = 'category' AND
              {$wpdb->posts}.post_status = 'publish' AND
              {$wpdb->postmeta}.meta_key = 'word-count' AND
              {$wpdb->posts}.post_type = %s AND
              {$wpdb->terms}.slug like %s
        ORDER BY word_count DESC
        LIMIT %d, %d", $post_type, $f, $wc_page * WC_ROWS_PER_PAGE, WC_ROWS_PER_PAGE);
} else {
    $f = '%' . $wc_filter . '%';
    $sql = $wpdb->prepare("
        SELECT wp_posts.id AS id,
               CAST(wp_postmeta.meta_value AS UNSIGNED) AS word_count,
               wp_posts.post_title AS title
        SELECT {$wpdb->posts}.id AS id,
               CAST({$wpdb->postmeta}.meta_value AS UNSIGNED) AS word_count,
               {$wpdb->posts}.post_title AS title
        FROM {$wpdb->posts}, {$wpdb->postmeta}
        WHERE wp_posts.id = wp_postmeta.post_id AND
              wp_posts.post_status = 'publish' AND
              wp_postmeta.meta_key = 'word-count' AND
              wp_posts.post_type = %s AND
              wp_posts.post_title LIKE %s
        WHERE {$wpdb->posts}.id = {$wpdb->postmeta}.post_id AND
              {$wpdb->posts}.post_status = 'publish' AND
              {$wpdb->postmeta}.meta_key = 'word-count' AND
              {$wpdb->posts}.post_type = %s AND
              {$wpdb->posts}.post_title LIKE %s
        ORDER by word_count DESC
        LIMIT %d, %d", $post_type, $f, $wc_page * WC_ROWS_PER_PAGE, WC_ROWS_PER_PAGE);
}