Wordpress use an option to store the current active child theme. This option is named 'stylesheet'.

Using the filter 'pre_option_{$option_name}' you can change every option getted by WP.

So, in your case you should hook the 'pre_option_stylesheet' filter, use some logic to retrieve current season and return the child theme you want.
This workflow should be done in a plugin (loaded before theme and child theme), in this way you are sure it works.

Example plugin code:

&lt;?php 
/**
 * Plugin Name: Seasoned Child Theme
 * Plugin URI: http://wordpress.stackexchange.com/questions/114538/conditionally-load-child-themes
 * Author: G.M.
 * Author URI: http://wordpress.stackexchange.com/users/35541/
 */

add_action('pre_option_stylesheet', function() {    
  $seasons_themes = array(
    // this are the child theme names (the folder name) related to season
    'child_winter', 'child_spring', 'child_summer', 'child_autumn'
  );
  $m = intval( date('n') );
  if ( $m &lt; 3 || $m == 12 ) {
    $theme = $seasons_themes[0];
  } elseif ( $m &gt; 2 &amp;&amp; $m &lt; 6) {
    $theme = $seasons_themes[1];
  } elseif ( $m &gt; 5 &amp;&amp; $m &lt; 9) {
    $theme = $seasons_themes[2];
  } else {
    $theme = $seasons_themes[3];
  }
  $root = get_theme_roots(); 
  $path = false;
  if ( is_string($root) ) {
      $path =  WP_CONTENT_DIR . '/' . $root . '/' . $theme ;
  } elseif ( is_array($root) &amp;&amp; isset($root[$theme]) ) {
      $path =  WP_CONTENT_DIR . '/' . $root[$theme] . '/' . $theme;
  }
  // if the theme exist return its name, if not return false
  // (theme setted in backend will be used)
  if ( $path &amp;&amp; file_exists($path) ) return $theme;
  return false;  
});


Conditionally load child themes
I want to be able to verify the integrity of a ciphertext by providing the cleartext hash, for this to work it would need to:

$$hash(crypt(cleartext)) = f(hash(cleartext))$$

Where $f$ is an arbitrary function mapping the cleartext hash to the ciphertext hash.

Is there such a pair?

Update: I'm trying to prove the integrity to the receiver while delaying the key exchange until I'm ready to commit (send him the decryption details). The hash that proves the integrity comes from another source entirely.
