Theme Directory Launch Checklist

Tomorrow we’re going live with the new Directory! We’ll start going through the checklist February 25th 2015 1700 UTC.

  • Disable uploads on bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org. themes. (@Otto42)
  • Disable themes.tracTrac Trac is the place where contributors create issues for bugs or feature requests much like GitHub.https://core.trac.wordpress.org/. sync process. (@Otto42)
  • Migrate themes to WP.
  • Switch over Directory to not use APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways..
  • Test themesnew API.
  • Test themesnew downloads.
  • Switch over downloads and API scripts.
  • Switch over URLs and redirect.
  • Switch over review sync script.
  • Enable theme uploads in directory pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.
  • Notify Admins the ban has been lifted.

Disable uploads on bbpress themes.
Replace the uploader page with an “uploads temporarily offline” message.

Disable themes.trac sync process.

  • Announce launch in WPTRT meeting.
  • Commit an early return to sync-theme-review-results.php.
  • Inform Admins directly: No setting themes live between February 25th 2015 1600 UTC and the new directory is live.
  • Channel notification in #themereview.

Migrate themes to WP.
Run migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. script in /bin/themes/

Switch over Directory to not use API.

  • Commit https://cloudup.com/ckhD3Zl0Iso
  • Test on /themesnew.

Test themesnew API.

  • Switch to use themesnew.php on sandbox.
  • Test /wp-admin/theme-install.php locally.

Test themesnew downloads.

  • Switch to use themesnew.php on sandbox.
  • Test downloads locally and on /themesnew.

Up until here, no real damage is done, marks the last chance to postpone the launch.

Switch over downloads and API scripts.
mv index.php old-api.php
mv themesnew.php index.php

Switch over URLs and redirect.

  • Commit /themes removal.
  • Notify @seanosh about making the switch.
  • Commit mu-plugins commercial change.
  • Test the hell out of /themes.

Switch over review sync script.
mv sync-theme-review-results.php sync-theme-review-results-old.php
mv sync-theme-review-results-themesnew.php sync-theme-review-results.php

Enable theme uploads in directory plugin.
Remove custom message and uncomment upload handler.

#theme-directory, #themes-api

Theme Directory Update 2/5

A very busy week with lots of improvements! These are some previously mentioned TODOs that I was able to scratch off the list:

  • Rewrote the Theme APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.’s update endpoint to work with WordPress.
  • Made synchronizing theme review results a cron job.
  • Made sure uploaded theme files are always deleted, no matter the outcome.
  • Added navigational links to Upload and Commercial pages (r1211).

Additionally, I removed the Admin approval workflow form the Directory pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party, since this is handled entirely on Themes TracTrac Trac is the place where contributors create issues for bugs or feature requests much like GitHub.https://core.trac.wordpress.org/..

I also opened the floor to bug reports from the community. After doing that at last week’s update here with limited success, I added another call for volunteers on make/themes which resulted in 15 tickets so far.

Next week I’ll be working though the tickets, as well as @melchoyce‘s Directory mockups, and @otto42 is still working on theme reviews/ratings.

#theme-directory, #themes-api

Theme Directory Update 1/16

This week I finished converting the theme download script and the info endpoint of the Themes APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. While working on the Themes API, I added some documentation to the Codex page and published a post about the changes to the API that were needed for the new directory.

Additionally I improved the directories front-end, mostly around single theme views and server-side rendering of themes. Now tag “archives” and author pages are working and testable. I also changed the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org structure for searches from /search.php?q=:query to /search/:query/ (more context) to align it with other parts of the directory.

Still to do:

  • Rewrite the Theme API’s update endpoint to work with WordPress.
  • Make synchronizing theme review results a cron job.
  • Make sure uploaded theme files are always deleted, no matter the outcome.
  • Import existing themes and ratings from bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org..
  • Make the theme and pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party available for translations.
  • Test localized versions.
  • Possibly add navigational links to Upload and Commercial pages.
  • Actually make the switch.

#theme-directory, #themes-api

WordPress.org Theme API Updates

In my last post I mentioned how changes to the Theme APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. that are necessary for the new Theme Directory, are done. It turned out that it’s only half true. Since the API is just as much based on bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org. as the current Theme Directory is, the underlying data source for it has to be changed as well, to use the new WordPress site that is being built. All of these changes will not affect the output of the API however, so let me go over the few things that we added recently, and that might be interesting for developers using the API.

The first step was a whitespace clean up, a chance to bring the code up to date with current WordPress coding standardsWordPress Coding Standards The Accessibility, PHP, JavaScript, CSS, HTML, etc. coding standards as published in the WordPress Coding Standards Handbook. May also refer to The collection of PHP_CodeSniffer rules (sniffs) used to format and validate PHP code developed for WordPress according to the PHP coding standards., to make it easier to grok future changes to the file. After that, two fields were added for theme responses, ratings and parent. Those fields are not included by default, so they have to be explicitly added to any request.

If ratings are requested, it adds an array with the number of reviews for each rating level. For Twenty Ten, it looks like this:

  public 'ratings' => 
    array (size=5)
      1 => int 7
      2 => int 0
      3 => int 9
      4 => int 31
      5 => int 88

The Theme Directory uses that information to generate the broken down rating statistics.

To be able to display decently rich information about a theme’s parent theme, the parent parameter was added. It will add an array with some information about the parent theme. Currently it has three rows, but if the need ever arises to add more information there, it’s possible to extend it to a full theme object without sacrificing backwards compatibility. For 2013 Green it looks like this:

  public 'parent' => 
    array (size=3)
      'slug' => string 'twentythirteen'
      'name' => string 'Twenty Thirteen'
      'homepage' => string 'https://wordpress.org/themes/twentythirteen'

For an example of all fields for a theme, you can use this poetic piece of code:

include ABSPATH . 'wp-admin/includes/theme.php';
$theme = themes_api( 'theme_information', array(
   'slug'   => 'twentyten',
   'fields' => array(
      'description'    => true,
      'sections'       => true,
      'rating'         => true,
      'ratings'        => true,
      'downloaded'     => true,
      'downloadlink'   => true,
      'last_updated'   => true,
      'tags'           => true,
      'template'       => true,
      'parent'         => true,
      'versions'       => true,
      'screenshot_url' => true,
   ),
) );

var_dump( $theme );exit;

#theme-directory, #themes-api