diff --git a/top-20-tables.php b/top-20-tables.php index 9965a8ae68ffd9087a0b5f557f054b761d49c5b4..b841574df44de3ab81a593886d8a28f6425f52da 100644 --- a/top-20-tables.php +++ b/top-20-tables.php @@ -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); }