WordPress.org

Making WordPress.org

Changeset 1286


Ignore:
Timestamp:
02/20/2015 02:29:04 AM (6 years ago)
Author:
obenland
Message:

WP.org Themes: Finish browse setups.

  • To achieve parity between server-side and API results of featured themes, the

API will continue to be responsible for determining which themes are featured.
It will store the featured theme's post IDs in cache, for the directory to use.

  • We'll use the same query adjustment as in the API to get the same ouput of

popular themes.

  • New themes will just be the latest themes, much like blog posts.

See #745.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/theme-directory/theme-directory.php

    r1274 r1286  
    104104                $wp_query->set( 'paged', 1 );
    105105                $wp_query->set( 'posts_per_page', 15 );
    106                 $wp_query->set( 'date_query', array(
    107                     array(
    108                         'column' => 'post_modified_gmt',
    109                         'after'  => '-1 year',
    110                     ),
    111                 ) );
    112                 $wp_query->set( 'orderby', 'rand' );
     106                $wp_query->set( 'post__in', (array) wp_cache_get( 'browse-popular', 'theme-info' ) );
    113107                break;
    114108
    115109            case 'popular':
    116                 //TODO: Sort by popularity.
     110                add_filter( 'posts_clauses',  'wporg_themes_popular_posts_clauses' );
    117111                break;
    118112
    119113            case 'new':
     114                // Nothing to do here.
    120115                break;
    121116        }
     
    141136}
    142137add_filter( 'found_posts', 'wporg_themes_found_posts', 10, 2 );
     138
     139/**
     140 * Filters SQL clauses, to set up a query for the most popular themes based on downloads.
     141 *
     142 * @param array $clauses
     143 * @return array
     144 */
     145function wporg_themes_popular_posts_clauses( $clauses ) {
     146    global $wpdb;
     147
     148    $week = gmdate( 'Y-m-d', strtotime( 'last week' ) );
     149    $clauses['where']  .= " AND s.stamp >= '{$week}'";
     150    $clauses['groupby'] = "{$wpdb->posts}.ID";
     151    $clauses['join']    = "JOIN bb_themes_stats AS s ON ( {$wpdb->posts}.post_name = s.slug )";
     152    $clauses['orderby'] = 'week_downloads DESC';
     153    $clauses['fields'] .= ', SUM(s.downloads) AS week_downloads';
     154
     155    return $clauses;
     156}
    143157
    144158/**
Note: See TracChangeset for help on using the changeset viewer.