design by merovingi's logo

Adjust Theme Settings on Activation

 

add_action( 'after_setup_theme', 'the_theme_setup' );
function the_theme_setup()
{
   // First we check to see if our default theme settings have been applied.
   $the_theme_status = get_option( 'theme_setup_status' );
   // If the theme has not yet been used we want to run our default settings.
   if ( $the_theme_status !== '1' ) {
      // Setup Default WordPress settings
      $core_settings = array(
         'avatar_default'   => 'mystery',   // Avatar style
         'avatar_rating'      => 'G',   // Avatar rating
         'comment_max_links'   => 0,   // We do not allow links from comments
         'comments_per_page'   => 20   // Default to 20 comments per page
      );
      foreach ( $core_settings as $k => $v ) {
         update_option( $k, $v );
      }
      // Delete dummy post, page and comment.
      wp_delete_post( 1, true );
      wp_delete_post( 2, true );
      wp_delete_comment( 1 );
      // Once done, we register our setting to make sure
      // we don't duplicate everytime we activate.
      update_option( 'theme_setup_status', '1' );
      // Lets let the admin know whats going on.
      $msg = '
      <div class="error">
         <p>The ' . get_option( 'current_theme' ) . 'theme has changed your WordPress default <a href="' . admin_url() . 'options-general.php" title="See Settings">settings</a> and deleted default posts & comments.</p>
      </div>';
      add_action( 'admin_notices', $c = create_function( '', 'echo "' . addcslashes( $msg, '"' ) . '";' ) );
   }
   // Else if we are re-activing the theme
   elseif ( $the_theme_status === '1' and isset( $_GET['activated'] ) ) {
      $msg = '
      <div class="updated">
         <p>The ' . get_option( 'current_theme' ) . ' theme was successfully re-activated.</p>
      </div>';
      add_action( 'admin_notices', $c = create_function( '', 'echo "' . addcslashes( $msg, '"' ) . '";' ) );
   }
}

Posted October 19th 2011. Bookmark the permalink.

Feedback:Show