<ul><li><strong>woo_about</strong> - </li><li><strong>woo_ad_image_1</strong> - /images/ad.gif</li><li><strong>woo_ad_image_2</strong> - /images/ad.gif</li><li><strong>woo_ad_url_1</strong> - http://example.com</li><li><strong>woo_ad_url_2</strong> - http://example.com</li><li><strong>woo_alt_stylesheet</strong> - red.css</li><li><strong>woo_archives</strong> - </li><li><strong>woo_auto_img</strong> - true</li><li><strong>woo_bio</strong> - </li><li><strong>woo_cat_mid_1</strong> - false</li><li><strong>woo_cat_mid_164</strong> - false</li><li><strong>woo_cat_mid_165</strong> - false</li><li><strong>woo_cat_mid_167</strong> - false</li><li><strong>woo_cat_mid_168</strong> - false</li><li><strong>woo_cat_mid_171</strong> - false</li><li><strong>woo_cat_mid_173</strong> - false</li><li><strong>woo_cat_mid_174</strong> - true</li><li><strong>woo_cat_mid_188</strong> - false</li><li><strong>woo_cat_mid_203</strong> - false</li><li><strong>woo_cat_mid_205</strong> - false</li><li><strong>woo_cat_mid_5</strong> - false</li><li><strong>woo_cat_mid_5300</strong> - false</li><li><strong>woo_cat_mid_68</strong> - false</li><li><strong>woo_cat_mid_9</strong> - false</li><li><strong>woo_cat_thumb_height</strong> - 76</li><li><strong>woo_cat_thumb_width</strong> - 207</li><li><strong>woo_custom_css</strong> - </li><li><strong>woo_custom_favicon</strong> - </li><li><strong>woo_email</strong> - </li><li><strong>woo_exclude_cats</strong> - false</li><li><strong>woo_featured_category</strong> - Featured</li><li><strong>woo_feedburner_url</strong> - </li><li><strong>woo_flickr_entries</strong> - Select a number:</li><li><strong>woo_flickr_id</strong> - </li><li><strong>woo_google_analytics</strong> - <script type=\"text/javascript\">

  var _gaq = _gaq || [];
  _gaq.push([\'_setAccount\', \'UA-21109047-1\']);
  _gaq.push([\'_trackPageview\']);

  (function() {
    var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
    ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
    var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script></li><li><strong>woo_home_posts</strong> - Select a number:</li><li><strong>woo_image_disable</strong> - false</li><li><strong>woo_image_height</strong> - 173</li><li><strong>woo_image_width</strong> - 230</li><li><strong>woo_logo</strong> - http://agrobiodiversityplatform.org/cropbiodiversity/wp-content/woo_uploads/12-9-logo_p&d_new.png</li><li><strong>woo_manual</strong> - http://www.woothemes.com/support/theme-documentation/open-air/</li><li><strong>woo_resize</strong> - true</li><li><strong>woo_shortname</strong> - woo</li><li><strong>woo_show_blog</strong> - false</li><li><strong>woo_themename</strong> - Open Air</li><li><strong>woo_the_content</strong> - false</li><li><strong>woo_thumb_height</strong> - 145</li><li><strong>woo_thumb_width</strong> - 218</li><li><strong>woo_twitter</strong> - </li><li><strong>woo_uploads</strong> - http://agrobiodiversityplatform.org/cropbiodiversity/wp-content/woo_uploads/12-9-logo_p&d_new.png</li><li><strong>woo_video_posts</strong> - Select a number:</li><li><strong>woo_vidpage</strong> - Select a page:</li></ul>