<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>UpThemes</title> <atom:link href="http://upthemes.com/feed/" rel="self" type="application/rss+xml" /><link>http://upthemes.com</link> <description>Premium WordPress Themes</description> <lastBuildDate>Thu, 17 May 2012 00:17:27 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>Agency Theme Launch Giveaway!</title><link>http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/</link> <comments>http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/#comments</comments> <pubDate>Wed, 16 May 2012 14:35:14 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[Contests]]></category><guid isPermaLink="false">http://upthemes.com/?p=1966</guid> <description><![CDATA[<p>We&#8217;ve had an incredible response to the Agency theme in its first 24 hours of being live, so we thought we&#8217;d sweeten the deal a bit. We&#8217;re giving away 5 copies of the Agency theme, a rad UpThemes t-shirt (pictured above), and a one-year Developer Club Membership. All you have to do to enter is [...]</p> ]]></description> <content:encoded><![CDATA[<p><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/ScreenShot-t-shirt.png"><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/ScreenShot-t-shirt.png" alt="" title="UpThemes T-Shirt" width="391" height="386" class="aligncenter size-full wp-image-1969" /></a></p><p>We&#8217;ve had an incredible response to the <a href="http://upthemes.com/themes/agency/" title="Agency">Agency theme</a> in its first 24 hours of being live, so we thought we&#8217;d sweeten the deal a bit. We&#8217;re giving away 5 copies of the Agency theme, a rad UpThemes t-shirt (pictured above), and a one-year Developer Club Membership.</p><p>All you have to do to enter is follow the instructions below. The more ways you enter, the more likely you are to win, so enjoy:</p><p><a id="rc-de5e8c3" class="rafl" href="http://www.rafflecopter.com">a Rafflecopter giveaway</a><br /><script src="//d12vno17mo87cx.cloudfront.net/embed/rafl/cptr.js"></script></p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/" data-text="Agency Theme Launch Giveaway!" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/agency-theme-launch-giveaway/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Your Guide to Using WordPress for Microblogging</title><link>http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/</link> <comments>http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/#comments</comments> <pubDate>Tue, 15 May 2012 14:42:38 +0000</pubDate> <dc:creator>Siobhan</dc:creator> <category><![CDATA[Microblogging]]></category> <category><![CDATA[Tumblr]]></category> <category><![CDATA[micro]]></category> <category><![CDATA[micro theme]]></category> <category><![CDATA[microblog theme]]></category><guid isPermaLink="false">http://upthemes.com/?p=1952</guid> <description><![CDATA[<p>Despite stiff competition, WordPress is rapidly gaining popularity as a microblogging platform. If you already know and love the world&#8217;s favorite CMS, there&#8217;s really no reason to use another service. There are many good microblogging themes available these days, which let you create a Tumblr or Posterous-style blog, but with all the power and flexibility [...]</p> ]]></description> <content:encoded><![CDATA[<p>Despite stiff competition, WordPress is rapidly gaining popularity as a microblogging platform. If you already know and love the world&#8217;s favorite CMS, there&#8217;s really no reason to use another service. There are many good microblogging themes available these days, which let you create a <a href="http://tumblr.com" target="_blank">Tumblr</a> or <a href="http://posterous.com" target="_blank">Posterous</a>-style blog, but with all the power and flexibility of good ole&#8217; WordPress.</p><p><span id="more-1952"></span></p><h2>Microblogging in a Nutshell</h2><p>Microblogging is the perfect medium for sharing photos, videos, and short snippets of text. The emphasis is on small and frequent updates, rather than great big chunks of writing. It&#8217;s a stream-of-consciousness style of publishing that lets you share your thoughts as they occur, rather than saving them all up for that huge blog post that you never get around to writing.</p><p>Tweets and Facebook status updates could be considered forms of microblogging, but it was Tumblr that really got the concept off the ground. The service has become insanely popular, with over 46 million &#8216;tumblelogs&#8217; created since 2007. Even <a href="http://barackobama.tumblr.com/" target="_blank">President Obama</a> is on Tumblr on these days.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Pic-1.png" alt="President Obama&#039;s tumblog" title="Obma tumblog" width="500" height="344" class="alignnone size-full wp-image-1957" /></p><p>People love Tumblr because it offers the path of least resistance to publishing content. The user interface is ultra-simple, and with a few clicks you can create an account and start microblogging your heart out.</p><p>Yet for all its sexy minimalism, Tumblr is a fairly restrictive service with limited scope for customization. Serious web publishers have begun looking for a Tumblr-style experience on a more advanced platform. <strong>WordPress to the rescue!</strong></p><h2>Why You Should Microblog on WordPress</h2><p>WordPress is older than the concept of microblogging, and the software was originally designed for longer-form publishing. These days, of course, you can use WordPress for whatever you damn well please, including creating an awesome microblog. These are a few reasons to use WordPress instead of Tumblr:</p><ul><li>Tumblr is known for downtime issues, which you have no control over. With WordPress you can choose any web host you like.</li><li>If Tumblr disappears from the face of the Earth one day, your content goes with it. A self-hosted WordPress blog gives you that extra peace of mind.</li><li>Using WordPress, you don&#8217;t have to worry about your content violating some weird Tumblr policy. When you own the blog, you make the rules.</li></ul><h2>WordPress Post Formats</h2><p>Microblogging with WordPress has become far more practical since the introduction of Post Formats in version 3.1. Post formats are a theme feature that allow you to apply a defined style to different types of content, much like the posting options in Tumblr.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Pic-2.png" alt="tumble post types" title="tumblr" width="500" height="93" class="alignnone size-full wp-image-1956" /></p><p>WordPress currently supports nine post formats:</p><ul><li><strong>aside</strong> (a note-style post, without a title)</li><li><strong>gallery</strong></li><li><strong>link</strong></li><li><strong>image</strong></li><li><strong>quote</strong></li><li><strong>status</strong></li><li><strong>video</strong></li><li><strong>audio</strong></li><li><strong>chat</strong> (a transcript of an instant messenger chat session)</li></ul><p>WordPress themes can support all of these post formats, or only some of them. The theme designer will activate the ones that he or she wants to include in the theme. But the overall list is fixed and it&#8217;s not possible to create your own custom formats at this stage. You can check out the <a href="http://codex.wordpress.org/Post_Formats">Post Formats page on the WordPress Codex for more information</a>, including help with adding post format support to your themes.</p><h2>Choosing a Good Microblogging Theme for WordPress</h2><p>There are no hard-and-fast rules to microblog design; you really just want a theme that gets out of the way and lets your content shine. These are some features to look out for:</p><ul><li>Clean and minimalist layout; you don&#8217;t want a lot of distracting clutter on a microblog.</li><li>Support for WordPress post formats, preferably all nine of them.</li><li>Responsive design, because a lot of microblogging is done on mobile devices.</li></ul><p>If you&#8217;re setting up a WordPress microblog for the first time, the popular <a href="http://upthemes.com/themes/micro/" target="_blank">Micro Theme Framework</a> is a good starting point. Micro is a powerful parent theme that you can customize to your heart&#8217;s content, but also looks sexy straight out-of-the-box.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Pic-3.png" alt="A Screenshot of the Micro Them from UpThemes" title="Micro Theme" width="500" height="496" class="alignnone size-full wp-image-1955" /></p><h2>Migrating from Tumblr to WordPress</h2><p>It&#8217;s a common scenario; you start your microblogging career on Tumblr, love it at first but eventually grow weary of its limitations, and finally decide to shift over to WordPress.</p><p>Naturally, you&#8217;ll want to bring all your content with you. You can do this using the WordPress <strong>Import</strong> function, which you&#8217;ll find at <strong>Tools &#62; Export</strong>.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Pic-4.png" alt="Import menu item" title="Import" width="145" height="228" class="alignnone size-full wp-image-1958" /></p><p>You&#8217;ll need to <a href="http://wordpress.org/extend/plugins/tumblr-importer/">install the Tumblr importer plugin </a>if you haven&#8217;t already. With the plugin activated, all you need to do is enter your Tumblr login details, and select the blogs that you wish to import.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Pic-5.png" alt="Tumblr Importer" title="Tumblr Importer" width="500" height="363" class="alignnone size-full wp-image-1954" /></p><p>This process runs in the background, and can take a while, depending on how much Tumblr content you have.</p><p><strong>And that&#8217;s it, you&#8217;re ready to rock! Welcome to the brave new world of WordPress microblogging.</strong></p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/" data-text="Your Guide to Using WordPress for Microblogging" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/your-guide-to-using-wordpress-for-microblogging/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Theme Launch: Agency, for Design and Development Companies</title><link>http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/</link> <comments>http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/#comments</comments> <pubDate>Mon, 14 May 2012 15:30:34 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">http://upthemes.com/?p=1940</guid> <description><![CDATA[<p>The long-anticipated Agency theme has finally been unleashed upon the world. Agency is a theme for design companies and freelance designers to showcase their portfolio and team members quickly and easily. Features CSS files generated with SASS &#38; Compass (all .scss files are included in the theme) Custom Portfolio Section for easily displaying your projects [...]</p> ]]></description> <content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1910" title="agency-promo-blog" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/agency-promo-blog.jpg" alt="" width="640" height="280" /></p><p>The long-anticipated Agency theme has finally been unleashed upon the world. Agency is a theme for design companies and freelance designers to showcase their portfolio and team members quickly and easily.</p><p><span id="more-1940"></span></p><h3>Features</h3><ul><li>CSS files generated with SASS &amp; Compass (all .scss files are included in the theme)</li><li>Custom Portfolio Section for easily displaying your projects with sorting and previews</li><li>Team Member section to showcase the members of your company or design team</li><li>Integration with the new <a href="http://upthemes.com/2012/05/new-in-wordpress-3-4-theme-customizer/" data-cke-saved-href="http://upthemes.com/2012/05/new-in-wordpress-3-4-theme-customizer/">WordPress Theme Customizer</a></li><li>Custom lightbox with <a href="http://upthemes.com/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/" data-cke-saved-href="http://upthemes.com/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/">View.js</a> (a $10 value)</li><li>Includes <a title="Nivo Slider" href="http://nivo.dev7studios.com/">Nivo Slider</a> (a $19 value)</li><li>Beautiful blog styles with support for WordPress post formats</li><li>Custom contact form to integrate seamlessly into your site</li><li>Custom homepage slideshow carousel</li><li>Custom widgets to feature a portfolio item or team member</li><li>Sticky breadcrumbs for easy navigation</li><li>Customizable gradient colors for breadcrumb bar and other parts of the site</li></ul><p><a href="http://upthemes.com/themes/agency/">View Theme Details</a></p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/" data-text="Theme Launch: Agency, for Design and Development Companies" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/theme-launch-agency-for-design-and-development-companies/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Incorporating Contextual Help and Support into WordPress Themes</title><link>http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/</link> <comments>http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/#comments</comments> <pubDate>Wed, 09 May 2012 09:08:56 +0000</pubDate> <dc:creator>Chip Bennett</dc:creator> <category><![CDATA[Teasers]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[contextual help]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://upthemes.com/?p=1590</guid> <description><![CDATA[<p>One of the great improvements of the recently released WordPress 3.3 is the enhancement to the contextual help feature for admin screens. Originally, the contextual help screen was largely rudimentary, and designed to display basic text. However, contextual help was improved considerably in WordPress 3.3, with an all-new Screen API, and UI enhancements such as [...]</p> ]]></description> <content:encoded><![CDATA[<p>One of the great improvements of the <a href="http://codex.wordpress.org/Version_3.3">recently released WordPress 3.3</a> is the enhancement to the <a href="http://codex.wordpress.org/Adding_Contextual_Help_to_Administration_Menus">contextual help feature for admin screens</a>. Originally, the contextual help screen was largely rudimentary, and designed to display basic text.</p><p>However, <a href="http://wpdevel.wordpress.com/2011/12/06/help-and-screen-api-changes-in-3-3/">contextual help was improved considerably in WordPress 3.3</a>, with an all-new <a href="http://codex.wordpress.org/Class_Reference/WP_Screen">Screen API</a>, and UI enhancements such as tabs and a sidebar. These enhancements are perfect for organizing contextual help, especially for Themes with complex Theme options, and/or tabbed UIs for Theme settings pages &#8211; in other words, these enhancements are perfect for UpThemes!</p><p><span id="more-1590"></span></p><p>So, I&#8217;ve been experimenting with incorporating the new hotness in our Themes. Especially compared to the previous iteration, the WP 3.3 contextual help is actually quite simple to integrate. <a href="http://ottopress.com/2011/new-in-wordpress-3-3-more-useful-help-screens/">Otto Wood wrote a detailed tutorial here</a>.</p><p>All contextual help-related functionality is handled through the <code>WP_Screen()</code> class, so the first step is identifying the Theme&#8217;s specific admin screen. WordPress simplifies this identification, by defining a <em>hook</em> for every admin screen, based on the <code>add_*_page()</code> function used to instantiate the page. Accessing this hook is as simple as defining a global variable when calling <code>add_*_page()</code>. If our original code is as follows:<br /> <code></p><pre class="crayon-plain-tag">function micro_add_settings_page() {
	// Add Micro Theme settings page
	add_theme_page( $args );
}
add_action( 'admin_menu', 'micro_add_settings_page' );</pre><p></code><br /> &#8230;then we modify it like so:<br /> <code></p><pre class="crayon-plain-tag">function micro_add_settings_page() {
	// Global variable for Micro's settings page hook
	global $micro_settings_page;
	// Add Micro Theme settings page
	$micro_settings_page = add_theme_page( $args );
}
add_action( 'admin_menu', 'micro_add_settings_page' );</pre><p></code><br /> The next step, then, is to invoke contextual help for our Theme&#8217;s settings page. Again, WordPress provides a specific hook for this purpose: <code>load-$pagehook</code>. Since we&#8217;ve defined a global to hold the name of our Theme&#8217;s specific page hook, we can use it here:<br /> <code></p><pre class="crayon-plain-tag">function micro_add_settings_page() {
	// Global variable for Micro's settings page hook
	global $micro_settings_page;
	// Add Micro Theme settings page
	$micro_settings_page = add_theme_page( $args );
	// Add contextual help
	add_action( 'load-' . $micro_settings_page, 'micro_add_contextual_help' );
}
add_action( 'admin_menu', 'micro_settings_page_contextual_help' );</pre><p></code><br /> Next, as you might imagine, we define the <code>micro_settings_page_contextual_help()</code> callback:<br /> <code></p><pre class="crayon-plain-tag">function micro_settings_page_contextual_help() {
}</pre><p></code><br /> The first step is to invoke the screen object. The <code>WP_Screen()</code> class provides a useful function that we&#8217;ll use for this step, but will also make use of later: <a href="http://codex.wordpress.org/Function_Reference/get_current_screen"><code>get_current_screen()</code></a>. This function &#8220;<em>returns an object that includes the screen’s ID, base, post type, and taxonomy, among other data points</em>.&#8221;<br /> <code></p><pre class="crayon-plain-tag">function micro_settings_page_contextual_help() {
	// Globalize settings page
	global $micro_settings_page;
	// Get the current screen object
	$screen = get_current_screen();
}</pre><p></code><br /> The next step is redundant (since we already use a page-specific hook to execute our callback), but is a standard failsafe: ensure we&#8217;re on our own Theme&#8217;s settings page. Here, we use the <code>$screen-&gt;id</code> parameter:<br /> <code></p><pre class="crayon-plain-tag">function micro_settings_page_contextual_help() {
	// Globalize settings page
	global $micro_settings_page;
	// Get the current screen object
	$screen = get_current_screen();

	// Ensure current page is Micro settings page
	if ( $screen-&amp;gt;id != $micro_settings_page ) {
		return;
	}
}</pre><p></code><br /> Having assured that we are on our own Theme&#8217;s settings page, we now begin to add content to the contextual help, using the <a href="http://codex.wordpress.org/Function_Reference/add_help_tab"><code>add_help_tab()</code></a> member function of the <code>WP_Screen()</code> class. We&#8217;ll use a &#8220;README&#8221; tab for example:<br /> <code></p><pre class="crayon-plain-tag">function micro_settings_page_contextual_help() {
	// Globalize settings page
	global $micro_settings_page;
	// Get the current screen object
	$screen = get_current_screen();

	// Ensure current page is Micro settings page
	if ( $screen-&amp;gt;id != $micro_settings_page ) {
		return;
	}

	// Add README Reference help screen tab
	$screen-&amp;gt;add_help_tab( array(
		// HTML ID attribute
		'id'      =&amp;gt; 'micro-readme',
		// Tab title
		'title'   =&amp;gt; __( 'README', 'micro' ),
		// Tab content
		'content' =&amp;gt; file_get_contents( get_template_directory() . '/help/readme.html' ),
	) );
}</pre><p></code><br /> The <code>'content'</code> parameter expects a string, but this parameter can be replaced with <code>'function'</code> in order to pass a callback instead. Since our Themes already ship with a &#8220;readme.html&#8221; file, we can simply pass it here as a string, via <code>file_get_contents()</code>.</p><p>For every contextual help tab needed, simply add another <code>$screen-&gt;add_help_tab()</code> call. Here are some proof-of-concept screenshots:</p><div id="attachment_1593" class="wp-caption aligncenter" style="width: 574px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.themedocs.1.png"><img class=" wp-image-1593  " title="Theme Readme in Contextual Help" src="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.themedocs.1-940x421.png" alt="" width="564" height="253" /></a><p class="wp-caption-text">Here, you can see the contextual help panel, with several tabs. The &quot;Theme Documentation&quot; tab includes the (HTML) content of the Theme&#39;s existing readme.html file.</p></div><div id="attachment_1594" class="wp-caption aligncenter" style="width: 303px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.themedocs.2.png"><img class="size-full wp-image-1594" title="Contextual Help Tabs" src="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.themedocs.2.png" alt="" width="293" height="289" /></a><p class="wp-caption-text">And here you can see the several tabs in the contextual help panel - one tab for each of the UpThemes settings pages.</p></div><p>Notice, in the tab list, a &#8220;Support&#8221; tab at the bottom. This tab is something else that I&#8217;m working on integrating into our Themes.</p><p>Here at UpThemes, we use private <a href="http://www.github.com">GitHub</a> repositories for collaborative development, and for bug tracking. I also use GitHub for my personal projects, including my Oenology Theme, which also integrates the new WordPress 3.3 contextual help. Also included in the contextual help, however, is a fairly full-featured support tab, including links to submit support issues, an RSS feed for support forum posts, and, <a href="http://developer.github.com/">thanks to the awesome GitHub API</a>, real-time reports of commits and issues (i.e. bugs), both opened and closed. Here&#8217;s how it looks in Oenology:</p><div id="attachment_1591" class="wp-caption aligncenter" style="width: 681px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.oenology.support.png"><img class="size-full wp-image-1591" title="Oenology Theme Support Panel" src="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.oenology.support.png" alt="" width="671" height="604" /></a><p class="wp-caption-text">Here&#39;s how the contextual help support tab looks in Oenology. The data are all pulled in dynamically, from the wordpress.org support forum, and via the GitHub API.</p></div><p>I think this is great, because it helps Theme users get a better idea of ongoing development and bugfixes. While useful for a free Theme, it can potentially be a great premium feature for a commercial Theme. So, I&#8217;ve roughed in the same features into Micro. Since the UpThemes GitHub repositories are private, I need to add in an oAuth token in order to use the API to read commit and issue data, which is why the API is returning 404s:</p><div id="attachment_1592" class="wp-caption aligncenter" style="width: 574px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.support.png"><img class=" wp-image-1592 " title="UpThemes Contextual Help Support Panel" src="http://cdn.upthemes.com/wp-content/uploads/2012/01/upthemes.contextualhelp.support-940x389.png" alt="" width="564" height="233" /></a><p class="wp-caption-text">This will be essentially the same, once I implement the oAuth tokens to be able to read GitHub API data for private repositories.</p></div><p>Look for these features to be rolled out into our Themes in the very near future! For current and future UpThemes customers: how would you like to see these features implemented? What would you find the most useful?</p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/" data-text="Incorporating Contextual Help and Support into WordPress Themes" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/incorporating-contextual-help-and-support-into-wordpress-themes/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Exploring the Theme Customizer Code in WordPress 3.4</title><link>http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/</link> <comments>http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/#comments</comments> <pubDate>Mon, 07 May 2012 09:00:51 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[Code Examples]]></category><guid isPermaLink="false">http://upthemes.com/?p=1874</guid> <description><![CDATA[<p>Being a theme developer means staying up-to-date on the latest WordPress features and changes to ensure our themes remain compatible and enjoy enhanced features that live in harmony with core WordPress code and utilities. The new Theme Customizer is certainly one of the most exciting features for theme developers in quite some time, allowing us [...]</p> ]]></description> <content:encoded><![CDATA[<p>Being a theme developer means staying up-to-date on the latest WordPress features and changes to ensure our themes remain compatible and enjoy enhanced features that live in harmony with core WordPress code and utilities. The new Theme Customizer is certainly one of the most exciting features for theme developers in quite some time, allowing us to add our theme customization controls into a live customization panel that makes it super easy to view and update your theme&#8217;s design quickly and easily.</p><p><span id="more-1874"></span></p><p>I want to give big props to Otto for providing a thorough <a href="http://ottopress.com/2012/how-to-leverage-the-theme-customizer-in-your-own-themes/" title="How to leverage the Theme Customizer in your own themes">explanation of the implementation details for developers</a> (which is currently subject to change, since it is beta code, after all). It&#8217;s a helpful post so I&#8217;d recommend reading that first and coming back here to dive a little deeper into the code. I&#8217;m going to walk you through a quick overview of what the Theme Customizer code is actually doing and how it can be extended in your own themes to provide custom controls.</p><p>We&#8217;re currently working on implementing controls that already exist in the <a href="https://github.com/LiftUX/UpThemes-Framework/tree/settings-api" title="UpThemes Framework Settings API branch">UpThemes Framework</a> as a part of the new Theme Customizer so all UpThemes customers can have access to these features shortly after WordPress 3.4 is released. We just recently implemented support for the Settings API and now, with the new Theme Customizer, we&#8217;re a few short steps away from being able to quickly add support for that.</p><h2>The PHP Stuffs</h2><p>The new Theme Customizer code actually lives in a few files inside your <em>wp-includes</em> folder that we&#8217;re going to look at today:</p><ul><li><a href="http://svn.automattic.com/wordpress/trunk/wp-includes/class-wp-customize.php" target="_blank">class-wp-customize.php</a></li><li><a href="http://svn.automattic.com/wordpress/trunk/wp-includes/class-wp-customize-setting.php" target="_blank">class-wp-customize-setting.php</a></li><li><a href="http://svn.automattic.com/wordpress/trunk/wp-includes/class-wp-customize-section.php" target="_blank">class-wp-customize-section.php</a></li><li><a href="http://svn.automattic.com/wordpress/trunk/wp-includes/class-wp-customize-control.php" target="_blank">class-wp-customize-control.php</a></li></ul><p>First, we&#8217;re going to take a look at <a href="http://svn.automattic.com/wordpress/trunk/wp-includes/class-wp-customize.php" target="_blank">class-wp-customize.php</a>. This is where the Theme Customizer class is defined and does the bulk of the work. One area I want to point out is where the Theme Customizer checks to see that it is active:</p><p><code></p><pre class="crayon-plain-tag">public function setup_theme() {
	if ( ! isset( $_REQUEST['customize'] ) || 'on' != $_REQUEST['customize'] )
		return;

	$this-&gt;start_previewing_theme();
	show_admin_bar( false );
}</pre><p></code></p><p>This function essentially tells the customizer to load on the front-end by checking for a query string variable of &#8220;customize&#8221; that is currently set to &#8220;on&#8221; and then the magic happens.</p><p>The next part to take note of is the <code>start_previewing_theme()</code> function. This function sits right below the <code>setup_theme()</code> function:</p><p><code></p><pre class="crayon-plain-tag">public function start_previewing_theme() {
	if ( $this-&gt;is_preview() || false === $this-&gt;theme || ( $this-&gt;theme &amp;&amp; ! $this-&gt;theme-&gt;exists() ) )
		return;

	// Initialize $theme and $original_stylesheet if they do not yet exist.
	if ( ! isset( $this-&gt;theme ) ) {
		$this-&gt;theme = wp_get_theme( $_REQUEST['theme'] );
		if ( ! $this-&gt;theme-&gt;exists() ) {
			$this-&gt;theme = false;
			return;
		}
	}

	$this-&gt;original_stylesheet = get_stylesheet();

	$this-&gt;previewing = true;

	add_filter( 'template', array( $this, 'get_template' ) );
	add_filter( 'stylesheet', array( $this, 'get_stylesheet' ) );
	add_filter( 'pre_option_current_theme', array( $this, 'current_theme' ) );

	// @link: http://core.trac.wordpress.org/ticket/20027
	add_filter( 'pre_option_stylesheet', array( $this, 'get_stylesheet' ) );
	add_filter( 'pre_option_template', array( $this, 'get_template' ) );

	// Handle custom theme roots.
	add_filter( 'pre_option_stylesheet_root', array( $this, 'get_stylesheet_root' ) );
	add_filter( 'pre_option_template_root', array( $this, 'get_template_root' ) );

	do_action( 'start_previewing_theme', $this );
}</pre><p></code></p><p>As you can see inside this function, there are a number of filters added as well as an action that is fired to officially start previewing the theme.</p><p>There are a few functions here that are important to note for adding settings, sections, and controls. I&#8217;ve dropped them in below for reference, just so you can see exactly how WordPress is building out the theme customization panel. This is very similar to how the Settings API works.</p><p><code></p><pre class="crayon-plain-tag">public function add_setting( $id, $args = array() ) {
	if ( is_a( $id, 'WP_Customize_Setting' ) )
		$setting = $id;
	else
		$setting = new WP_Customize_Setting( $this, $id, $args );

	$this-&gt;settings[ $setting-&gt;id ] = $setting;
}</pre><p></code></p><p><code></p><pre class="crayon-plain-tag">public function add_section( $id, $args = array() ) {
	if ( is_a( $id, 'WP_Customize_Section' ) )
		$section = $id;
	else
		$section = new WP_Customize_Section( $this, $id, $args );

	$this-&gt;sections[ $section-&gt;id ] = $section;
}</pre><p></code></p><p><code></p><pre class="crayon-plain-tag">public function add_control( $id, $args = array() ) {
	if ( is_a( $id, 'WP_Customize_Control' ) )
		$control = $id;
	else
		$control = new WP_Customize_Control( $this, $id, $args );

	$this-&gt;controls[ $control-&gt;id ] = $control;
}</pre><p></code></p><h2>Putting it all together</h2><p>Now, I realize that what I&#8217;ve shared above isn&#8217;t all that helpful until you see some code that you can actually use as an example for registering your own settings. One of the largest functions in the entire file is the one that registers your default settings, like so:</p><p><code></p><pre class="crayon-plain-tag">public function register_controls() {

	/* Custom Header */

	$this-&gt;add_section( 'header', array(
		'title'          =&gt; __( 'Header' ),
		'theme_supports' =&gt; 'custom-header',
		'priority'       =&gt; 20,
	) );

	$this-&gt;add_setting( 'header_textcolor', array(
		// @todo: replace with a new accept() setting method
		// 'sanitize_callback' =&gt; 'sanitize_hexcolor',
		'theme_supports' =&gt; array( 'custom-header', 'header-text' ),
		'default'        =&gt; get_theme_support( 'custom-header', 'default-text-color' ),
	) );

	$this-&gt;add_control( 'display_header_text', array(
		'settings' =&gt; 'header_textcolor',
		'label'    =&gt; __( 'Display Header Text' ),
		'section'  =&gt; 'header',
		'type'     =&gt; 'checkbox',
	) );

	$this-&gt;add_control( new WP_Customize_Color_Control( $this, 'header_textcolor', array(
		'label'   =&gt; __( 'Text Color' ),
		'section' =&gt; 'header',
	) ) );

	// Input type: checkbox
	// With custom value
	$this-&gt;add_setting( 'header_image', array(
		'default'        =&gt; get_theme_support( 'custom-header', 'default-image' ),
		'theme_supports' =&gt; 'custom-header',
	) );

	$this-&gt;add_control( new WP_Customize_Header_Image_Control( $this ) );

	/* Custom Background */

	$this-&gt;add_section( 'background', array(
		'title'          =&gt; __( 'Background' ),
		'theme_supports' =&gt; 'custom-background',
		'priority'       =&gt; 30,
	) );

	// Input type: Color
	// With sanitize_callback
	$this-&gt;add_setting( 'background_color', array(
		'default'           =&gt; get_theme_support( 'custom-background', 'default-color' ),
		'sanitize_callback' =&gt; 'sanitize_hexcolor',
		'theme_supports'    =&gt; 'custom-background',
		'transport'         =&gt; 'postMessage',
	) );

	$this-&gt;add_control( new WP_Customize_Color_Control( $this, 'background_color', array(
		'label'   =&gt; __( 'Background Color' ),
		'section' =&gt; 'background',
	) ) );

	$this-&gt;add_setting( 'background_image', array(
		'default'        =&gt; get_theme_support( 'custom-background', 'default-image' ),
		'theme_supports' =&gt; 'custom-background',
	) );

	$this-&gt;add_control( new WP_Customize_Image_Control( $this, 'background_image', array(
		'label'          =&gt; __( 'Background Image' ),
		'section'        =&gt; 'background',
		'context'        =&gt; 'custom-background',
	) ) );

	$this-&gt;add_setting( 'background_repeat', array(
		'default'        =&gt; 'repeat',
		'theme_supports' =&gt; 'custom-background',
	) );

	$this-&gt;add_control( 'background_repeat', array(
		'label'      =&gt; __( 'Background Repeat' ),
		'section'    =&gt; 'background',
		'type'       =&gt; 'radio',
		'choices'    =&gt; array(
			'no-repeat'  =&gt; __('No Repeat'),
			'repeat'     =&gt; __('Tile'),
			'repeat-x'   =&gt; __('Tile Horizontally'),
			'repeat-y'   =&gt; __('Tile Vertically'),
		),
	) );

	$this-&gt;add_setting( 'background_position_x', array(
		'default'        =&gt; 'left',
		'theme_supports' =&gt; 'custom-background',
	) );

	$this-&gt;add_control( 'background_position_x', array(
		'label'      =&gt; __( 'Background Position' ),
		'section'    =&gt; 'background',
		'type'       =&gt; 'radio',
		'choices'    =&gt; array(
			'left'       =&gt; __('Left'),
			'center'     =&gt; __('Center'),
			'right'      =&gt; __('Right'),
		),
	) );

	$this-&gt;add_setting( 'background_attachment', array(
		'default'        =&gt; 'fixed',
		'theme_supports' =&gt; 'custom-background',
	) );

	$this-&gt;add_control( 'background_attachment', array(
		'label'      =&gt; __( 'Background Attachment' ),
		'section'    =&gt; 'background',
		'type'       =&gt; 'radio',
		'choices'    =&gt; array(
			'fixed'      =&gt; __('Fixed'),
			'scroll'     =&gt; __('Scroll'),
		),
	) );

	/* Nav Menus */

	$locations      = get_registered_nav_menus();
	$menus          = wp_get_nav_menus();
	$menu_locations = get_nav_menu_locations();
	$num_locations  = count( array_keys( $locations ) );

	$this-&gt;add_section( 'nav', array(
		'title'          =&gt; __( 'Navigation' ),
		'theme_supports' =&gt; 'menus',
		'priority'       =&gt; 40,
		'description'    =&gt; sprintf( _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) ) . &quot;\n\n&quot; . __('You can edit your menu content on the Menus screen in the Appearance section.'),
	) );

	if ( $menus ) {
		$choices = array( 0 =&gt; __( '&amp;mdash; Select &amp;mdash;' ) );
		foreach ( $menus as $menu ) {
			$truncated_name = wp_html_excerpt( $menu-&gt;name, 40 );
			$truncated_name = ( $truncated_name == $menu-&gt;name ) ? $menu-&gt;name : trim( $truncated_name ) . '&amp;hellip;';
			$choices[ $menu-&gt;term_id ] = $truncated_name;
		}

		foreach ( $locations as $location =&gt; $description ) {
			$menu_setting_id = &quot;nav_menu_locations[{$location}]&quot;;

			$this-&gt;add_setting( $menu_setting_id, array(
				'sanitize_callback' =&gt; 'absint',
				'theme_supports'    =&gt; 'menus',
			) );

			$this-&gt;add_control( $menu_setting_id, array(
				'label'   =&gt; $description,
				'section' =&gt; 'nav',
				'type'    =&gt; 'select',
				'choices' =&gt; $choices,
			) );
		}
	}

	/* Static Front Page */
	// #WP19627

	$this-&gt;add_section( 'static_front_page', array(
		'title'          =&gt; __( 'Static Front Page' ),
	//	'theme_supports' =&gt; 'static-front-page',
		'priority'       =&gt; 50,
		'description'    =&gt; __( 'Your theme supports a static front page.' ),
	) );

	$this-&gt;add_setting( 'show_on_front', array(
		'default'        =&gt; get_option( 'show_on_front' ),
		'capability'     =&gt; 'manage_options',
		'type'           =&gt; 'option',
	//	'theme_supports' =&gt; 'static-front-page',
	) );

	$this-&gt;add_control( 'show_on_front', array(
		'label'   =&gt; __( 'Front page displays' ),
		'section' =&gt; 'static_front_page',
		'type'    =&gt; 'radio',
		'choices' =&gt; array(
			'posts' =&gt; __( 'Your latest posts' ),
			'page'  =&gt; __( 'A static page' ),
		),
	) );

	$this-&gt;add_setting( 'page_on_front', array(
		'type'       =&gt; 'option',
		'capability' =&gt; 'manage_options',
	//	'theme_supports' =&gt; 'static-front-page',
	) );

	$this-&gt;add_control( 'page_on_front', array(
		'label'      =&gt; __( 'Front page' ),
		'section'    =&gt; 'static_front_page',
		'type'       =&gt; 'dropdown-pages',
	) );

	$this-&gt;add_setting( 'page_for_posts', array(
		'type'           =&gt; 'option',
		'capability'     =&gt; 'manage_options',
	//	'theme_supports' =&gt; 'static-front-page',
	) );

	$this-&gt;add_control( 'page_for_posts', array(
		'label'      =&gt; __( 'Posts page' ),
		'section'    =&gt; 'static_front_page',
		'type'       =&gt; 'dropdown-pages',
	) );

	/* Site Title &amp; Tagline */

	$this-&gt;add_section( 'strings', array(
		'title'    =&gt; __( 'Site Title &amp; Tagline' ),
		'priority' =&gt; 5,
	) );

	$this-&gt;add_setting( 'blogname', array(
		'default'    =&gt; get_option( 'blogname' ),
		'type'       =&gt; 'option',
		'capability' =&gt; 'manage_options',
	) );

	$this-&gt;add_control( 'blogname', array(
		'label'      =&gt; __( 'Site Title' ),
		'section'    =&gt; 'strings',
	) );

	$this-&gt;add_setting( 'blogdescription', array(
		'default'    =&gt; get_option( 'blogdescription' ),
		'type'       =&gt; 'option',
		'capability' =&gt; 'manage_options',
	) );

	$this-&gt;add_control( 'blogdescription', array(
		'label'      =&gt; __( 'Tagline' ),
		'section'    =&gt; 'strings',
	) );
}</pre><p></code></p><p>If you pay close attention to this section, you can see how each and every default preview setting is registered. Each &#8220;option&#8221; is actually defined by a pair of definitions, with an add_setting and add_control function being fired for each one:</p><p><code></p><pre class="crayon-plain-tag">$this-&gt;add_setting( 'blogdescription', array(
		'default'    =&gt; get_option( 'blogdescription' ),
		'type'       =&gt; 'option',
		'capability' =&gt; 'manage_options',
	) );

	$this-&gt;add_control( 'blogdescription', array(
		'label'      =&gt; __( 'Tagline' ),
		'section'    =&gt; 'strings',
	) );</pre><p></code></p><p>The important pieces of these settings to note are the &#8216;type&#8217; and the &#8216;capability&#8217; bits. These pieces allow you to define what <strong>control type</strong> it is and <strong>which users</strong> can access it.</p><p>This is where we can jump over to the class-wp-customize-control.php file and take a peek at the different types of default controls we have access to:</p><ul><li>text</li><li>checkbox</li><li>radio</li><li>select</li><li>dropdown-pages</li></ul><p><code></p><pre class="crayon-plain-tag">protected function render_content() {
	switch( $this-&gt;type ) {
		case 'text':
			?&gt;
			&lt;label&gt;
				&lt;span class=&quot;customize-control-title&quot;&gt;&lt;?php echo esc_html( $this-&gt;label ); ?&gt;&lt;/span&gt;
				&lt;input type=&quot;text&quot; value=&quot;&lt;?php echo esc_attr( $this-&gt;value() ); ?&gt;&quot; &lt;?php $this-&gt;link(); ?&gt; /&gt;
			&lt;/label&gt;
			&lt;?php
			break;
		case 'checkbox':
			?&gt;
			&lt;label&gt;
				&lt;span class=&quot;customize-control-title&quot;&gt;&lt;?php echo esc_html( $this-&gt;label ); ?&gt;&lt;/span&gt;
				&lt;input type=&quot;checkbox&quot; value=&quot;&lt;?php echo esc_attr( $this-&gt;value() ); ?&gt;&quot; &lt;?php $this-&gt;link(); checked( $this-&gt;value() ); ?&gt; /&gt;
			&lt;/label&gt;
			&lt;?php
			break;
		case 'radio':
			if ( empty( $this-&gt;choices ) )
				return;

			$name = '_customize-radio-' . $this-&gt;id;

			?&gt;
			&lt;span class=&quot;customize-control-title&quot;&gt;&lt;?php echo esc_html( $this-&gt;label ); ?&gt;&lt;/span&gt;
			&lt;?php
			foreach ( $this-&gt;choices as $value =&gt; $label ) :
				?&gt;
				&lt;label&gt;
					&lt;input type=&quot;radio&quot; value=&quot;&lt;?php echo esc_attr( $value ); ?&gt;&quot; name=&quot;&lt;?php echo esc_attr( $name ); ?&gt;&quot; &lt;?php $this-&gt;link(); checked( $this-&gt;value(), $value ); ?&gt; /&gt;
					&lt;?php echo esc_html( $label ); ?&gt;&lt;br/&gt;
				&lt;/label&gt;
				&lt;?php
			endforeach;
			break;
		case 'select':
			if ( empty( $this-&gt;choices ) )
				return;

			?&gt;
			&lt;label&gt;
				&lt;span class=&quot;customize-control-title&quot;&gt;&lt;?php echo esc_html( $this-&gt;label ); ?&gt;&lt;/span&gt;
				&lt;select &lt;?php $this-&gt;link(); ?&gt;&gt;
					&lt;?php
					foreach ( $this-&gt;choices as $value =&gt; $label )
						echo '&lt;option value=&quot;' . esc_attr( $value ) . '&quot;' . selected( $this-&gt;value(), $value, false ) . '&gt;' . $label . '&lt;/option&gt;';
					?&gt;
				&lt;/select&gt;
			&lt;/label&gt;
			&lt;?php
			break;
		case 'dropdown-pages':
			$dropdown = wp_dropdown_pages(
				array(
					'name'              =&gt; '_customize-dropdown-pages-' . $this-&gt;id,
					'echo'              =&gt; 0,
					'show_option_none'  =&gt; __( '&amp;mdash; Select &amp;mdash;' ),
					'option_none_value' =&gt; '0',
					'selected'          =&gt; $this-&gt;value(),
				)
			);

			// Hackily add in the data link parameter.
			$dropdown = str_replace( '&lt;select', '&lt;select ' . $this-&gt;get_link(), $dropdown );

			printf(
				'&lt;label class=&quot;customize-control-select&quot;&gt;&lt;span class=&quot;customize-control-title&quot;&gt;%s&lt;/span&gt; %s&lt;/label&gt;',
				$this-&gt;label,
				$dropdown
			);
			break;
	}
}</pre><p></code></p><p>And of course, you can add your own controls, as shown by the custom &#8216;color,&#8217; &#8216;upload,&#8217; and &#8216;header-image&#8217; types, defined below the function I just shared with you:</p><p><code></p><pre class="crayon-plain-tag">class WP_Customize_Upload_Control extends WP_Customize_Control {
	public $type    = 'upload';
	public $removed = '';
	public $context;

	public function enqueue() {
		wp_enqueue_script( 'wp-plupload' );
	}

	public function to_json() {
		parent::to_json();

		$this-&gt;json['removed'] = $this-&gt;removed;

		if ( $this-&gt;context )
			$this-&gt;json['context'] = $this-&gt;context;
	}

	public function render_content() {
		?&gt;
		&lt;label&gt;
			&lt;span class=&quot;customize-control-title&quot;&gt;&lt;?php echo esc_html( $this-&gt;label ); ?&gt;&lt;/span&gt;
			&lt;div&gt;
				&lt;a href=&quot;#&quot; class=&quot;button-secondary upload&quot;&gt;&lt;?php _e( 'Upload' ); ?&gt;&lt;/a&gt;
				&lt;a href=&quot;#&quot; class=&quot;remove&quot;&gt;&lt;?php _e( 'Remove' ); ?&gt;&lt;/a&gt;
			&lt;/div&gt;
		&lt;/label&gt;
		&lt;?php
	}
}

class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
	public $type = 'image';
	public $get_url;
	public $statuses;

	protected $tabs = array();

	public function __construct( $manager, $id, $args ) {
		$this-&gt;statuses = array( '' =&gt; __('No Image') );

		parent::__construct( $manager, $id, $args );

		$this-&gt;add_tab( 'upload-new', __('Upload New'), array( $this, 'tab_upload_new' ) );
		$this-&gt;add_tab( 'uploaded',   __('Uploaded'),   array( $this, 'tab_uploaded' ) );
	}

	public function to_json() {
		parent::to_json();
		$this-&gt;json['statuses'] = $this-&gt;statuses;
	}

	public function render_content() {
		$src = $this-&gt;value();
		if ( isset( $this-&gt;get_url ) )
			$src = call_user_func( $this-&gt;get_url, $src );

		?&gt;
		&lt;label class=&quot;customize-image-picker&quot;&gt;
			&lt;span class=&quot;customize-control-title&quot;&gt;&lt;?php echo esc_html( $this-&gt;label ); ?&gt;&lt;/span&gt;

			&lt;div class=&quot;customize-control-content&quot;&gt;
				&lt;div class=&quot;dropdown preview-thumbnail&quot;&gt;
					&lt;div class=&quot;dropdown-content&quot;&gt;
						&lt;?php if ( empty( $src ) ): ?&gt;
							&lt;img style=&quot;display:none;&quot; /&gt;
						&lt;?php else: ?&gt;
							&lt;img src=&quot;&lt;?php echo esc_url( $src ); ?&gt;&quot; /&gt;
						&lt;?php endif; ?&gt;
						&lt;div class=&quot;dropdown-status&quot;&gt;&lt;/div&gt;
					&lt;/div&gt;
					&lt;div class=&quot;dropdown-arrow&quot;&gt;&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

			&lt;div class=&quot;library&quot;&gt;
				&lt;ul&gt;
					&lt;?php foreach ( $this-&gt;tabs as $id =&gt; $tab ): ?&gt;
						&lt;li data-customize-tab='&lt;?php echo esc_attr( $id ); ?&gt;'&gt;
							&lt;?php echo esc_html( $tab['label'] ); ?&gt;
						&lt;/li&gt;
					&lt;?php endforeach; ?&gt;
				&lt;/ul&gt;
				&lt;?php foreach ( $this-&gt;tabs as $id =&gt; $tab ): ?&gt;
					&lt;div class=&quot;library-content&quot; data-customize-tab='&lt;?php echo esc_attr( $id ); ?&gt;'&gt;
						&lt;?php call_user_func( $tab['callback'] ); ?&gt;
					&lt;/div&gt;
				&lt;?php endforeach; ?&gt;
			&lt;/div&gt;

			&lt;div class=&quot;actions&quot;&gt;
				&lt;a href=&quot;#&quot; class=&quot;remove&quot;&gt;&lt;?php _e( 'Remove Image' ); ?&gt;&lt;/a&gt;
			&lt;/div&gt;
		&lt;/label&gt;
		&lt;?php
	}

	public function add_tab( $id, $label, $callback ) {
		$this-&gt;tabs[ $id ] = array(
			'label'    =&gt; $label,
			'callback' =&gt; $callback,
		);
	}

	public function remove_tab( $id ) {
		unset( $this-&gt;tabs[ $id ] );
	}

	public function tab_upload_new() {
		?&gt;
		&lt;div class=&quot;upload-dropzone&quot;&gt;
			&lt;?php _e('Drop a file here or &lt;a href=&quot;#&quot; class=&quot;upload&quot;&gt;select a file&lt;/a&gt;.'); ?&gt;
		&lt;/div&gt;
		&lt;?php
	}

	public function tab_uploaded() {
		?&gt;
		&lt;div class=&quot;uploaded-target&quot;&gt;&lt;/div&gt;
		&lt;?php
	}
}

class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
	public function __construct( $manager ) {
		parent::__construct( $manager, 'header_image', array(
			'label'    =&gt; __( 'Header Image' ),
			'section'  =&gt; 'header',
			'context'  =&gt; 'custom-header',
			'removed'  =&gt; 'remove-header',
			'get_url'  =&gt; 'get_header_image',
			'statuses' =&gt; array(
				''                      =&gt; __('Default'),
				'remove-header'         =&gt; __('No Image'),
				'random-default-image'  =&gt; __('Random Default Image'),
				'random-uploaded-image' =&gt; __('Random Uploaded Image'),
			)
		) );

		$this-&gt;add_tab( 'default',  __('Default'),  array( $this, 'tab_default_headers' ) );
	}

	public function tab_uploaded() {
		$headers = get_uploaded_header_images();

		?&gt;&lt;div class=&quot;uploaded-target&quot;&gt;&lt;/div&gt;&lt;?php

		foreach ( $headers as $header ) : ?&gt;
			&lt;a href=&quot;#&quot; class=&quot;thumbnail&quot; data-customize-image-value=&quot;&lt;?php echo esc_url( $header['url'] ); ?&gt;&quot;&gt;
				&lt;img src=&quot;&lt;?php echo esc_url( $header['thumbnail_url'] ); ?&gt;&quot; /&gt;
			&lt;/a&gt;
		&lt;?php endforeach;
	}

	public function tab_default_headers() {
		global $custom_image_header;
		$custom_image_header-&gt;process_default_headers();

		foreach ( $custom_image_header-&gt;default_headers as $header ) : ?&gt;
			&lt;a href=&quot;#&quot; class=&quot;thumbnail&quot; data-customize-image-value=&quot;&lt;?php echo esc_url( $header['url'] ); ?&gt;&quot;&gt;
				&lt;img src=&quot;&lt;?php echo esc_url( $header['thumbnail_url'] ); ?&gt;&quot; /&gt;
			&lt;/a&gt;
		&lt;?php endforeach;
	}
}</pre><p></code></p><h2>The Difference Between Using a Default and Custom Control</h2><p>If you compare the two control declarations below, you&#8217;ll see one of them uses a default setting control of <code>'type' => 'checkbox'</code> and the other actually instantiates a new object for <code>WP_Customize_Color_Control()</code>. Notice the array of arguments passed in are quite a bit different.</p><p><code></p><pre class="crayon-plain-tag">$this-&gt;add_control( 'display_header_text', array(
			'settings' =&gt; 'header_textcolor',
			'label'    =&gt; __( 'Display Header Text' ),
			'section'  =&gt; 'header',
			'type'     =&gt; 'checkbox',
		) );</pre><p></code><br /> <code></p><pre class="crayon-plain-tag">$this-&gt;add_control( new WP_Customize_Color_Control( $this, 'header_textcolor', array(
			'label'   =&gt; __( 'Text Color' ),
			'section' =&gt; 'header',
		) ) );</pre><p></code><br /> Make sure to browse the files I linked earlier in the post and learn about how the Theme Customizer works and it&#8217;ll make life much easier when implementing your custom options. Also note that these functions will all change at some point, so please reference the current version of the code in trunk (which is what I linked above). We are certainly excited about the future of the UpThemes Framework with the new Theme Customizer and we&#8217;ll definitely be posting our progress in implementing these features in the near future so make sure to <a href="http://feeds.feedburner.com/upthemes" title="UpThemes RSS Feed">subscribe to the RSS feed</a> to stay updated.</p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/" data-text="Exploring the Theme Customizer Code in WordPress 3.4" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/exploring-the-theme-customizer-code-in-wordpress-3-4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Theme Sneak Peek: Agency</title><link>http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/</link> <comments>http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/#comments</comments> <pubDate>Sun, 06 May 2012 16:13:17 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[Teasers]]></category> <category><![CDATA[Agency Theme]]></category> <category><![CDATA[teaser]]></category><guid isPermaLink="false">http://upthemes.com/?p=1903</guid> <description><![CDATA[<p>If you&#8217;re running a design or development company, then this theme was made just for you. Agency is a beautiful design-oriented WordPress theme that allows you to showcase your projects and team members with the greatest of ease. This theme is slated for release within the next couple weeks and will feature integration with the [...]</p> ]]></description> <content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1910" title="agency-promo-blog" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/agency-promo-blog.jpg" alt="" width="640" height="280" /></p><p>If you&#8217;re running a design or development company, then this theme was made just for you. Agency is a beautiful design-oriented WordPress theme that allows you to showcase your projects and team members with the greatest of ease.</p><p><span id="more-1903"></span></p><p>This theme is slated for release within the next couple weeks and will feature integration with the upcoming <a title="New in WordPress 3.4: Theme Customizer" href="http://upthemes.com/2012/05/new-in-wordpress-3-4-theme-customizer/">Theme Customizer in WordPress 3.4</a> as well as loads of other features:</p><h2>Agency Theme Features</h2><ul><li>Custom Portfolio Section for easily displaying your projects with sorting and previews</li><li>Team Member section to showcase the members of your company or design team</li><li>Integration with the new <a href="http://upthemes.com/2012/05/new-in-wordpress-3-4-theme-customizer/">WordPress Theme Customizer</a></li><li>Custom lightbox with <a href="http://upthemes.com/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/">View.js</a></li><li>Beautiful blog styles with support for all WordPress post formats</li><li>Custom contact form to integrate seamlessly into your site</li><li>Custom homepage slideshow carousel</li><li>Custom widgets to feature a portfolio item or team member</li><li>Sticky breadcrumbs for easy navigation</li><li>Customizable gradient colors for breadcrumb bar and other parts of the site</li></ul><h2>Theme Screenshots</h2><p><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/agency_homepage.png"><img class="aligncenter size-large wp-image-1907" title="agency_homepage" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/agency_homepage-640x767.png" alt="" width="640" height="767" /></a></p><p><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/agency_portfolio.png"><img class="aligncenter size-large wp-image-1906" title="agency_portfolio" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/agency_portfolio-640x672.png" alt="" width="640" height="672" /></a></p><p style="text-align: center;">Make sure to <a title="UpThemes RSS Feed" href="http://feeds.feedburner.com/upthemes">subscribe to the UpThemes blog</a> to be the first to know when the Agency theme is officially released!</p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/" data-text="Theme Sneak Peek: Agency" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/theme-sneak-peek-agency/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Say Hello to View.js, a Beautiful Lightbox by Rogie King</title><link>http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/</link> <comments>http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/#comments</comments> <pubDate>Sun, 06 May 2012 14:22:06 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[News & Updates]]></category> <category><![CDATA[micro]]></category> <category><![CDATA[StoreFrontal]]></category> <category><![CDATA[UpThemes]]></category> <category><![CDATA[View.js]]></category><guid isPermaLink="false">http://upthemes.com/?p=1896</guid> <description><![CDATA[<p>If you&#8217;ve ever come across Rogie King&#8217;s Fine Goods Market, you&#8217;re one of the lucky folks that realize the pure insanity of his amazing design talents. A few months ago, we came into an agreement to incorporate Rogie&#8217;s View.js into future themes at no additional cost to you, even though it costs us a license [...]</p> ]]></description> <content:encoded><![CDATA[<p>If you&#8217;ve ever come across Rogie King&#8217;s <a title="Fine Goods Market" href="http://www.finegoodsmarket.com">Fine Goods Market</a>, you&#8217;re one of the lucky folks that realize the pure insanity of his amazing design talents. A few months ago, we came into an agreement to incorporate Rogie&#8217;s <a title="View.js" href="http://www.finegoodsmarket.com/view.js/">View.js</a> into future themes at no additional cost to you, even though it costs us a license fee to use it. Our goal is to bring you the best quality designs and features as possible.</p><p>For your sampling pleasure, we&#8217;ve even added View.js to UpThemes.com. Click the image below to see it in action:</p><p><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/finegoods.png"><img class="aligncenter size-medium wp-image-1897" title="finegoods" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/finegoods-300x204.png" alt="" width="300" height="204" /></a></p><p>As of right now, View.js is currently available in the <a title="StoreFrontal" href="http://upthemes.com/themes/storefrontal/">StoreFrontal theme</a> and <a title="Micro" href="http://upthemes.com/themes/micro/">Micro theme</a> and will soon be available in all themes with a future update to the UpThemes Framework. We hope you enjoy!</p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/" data-text="Say Hello to View.js, a Beautiful Lightbox by Rogie King" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/say-hello-to-view-js-a-beautiful-lightbox-by-rogie-king/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>New in WordPress 3.4: Theme Customizer</title><link>http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/</link> <comments>http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/#comments</comments> <pubDate>Thu, 03 May 2012 08:50:29 +0000</pubDate> <dc:creator>Chip Bennett</dc:creator> <category><![CDATA[Teasers]]></category> <category><![CDATA[Theme Customizer]]></category> <category><![CDATA[WordPress 3.4]]></category><guid isPermaLink="false">http://upthemes.com/?p=1837</guid> <description><![CDATA[<p>Much of the focus of the upcoming WordPress 3.4 release involves Themes and the Appearance Settings user interface. In addition to some under-the-hood improvements to handling of custom header images and custom backgrounds, WordPress 3.4 includes some improvements that will be readily apparent to end users. One such improvement is the Theme Customizer, which is [...]</p> ]]></description> <content:encoded><![CDATA[<p>Much of the focus of <a href="http://codex.wordpress.org/Version_3.4">the upcoming WordPress 3.4 release</a> involves Themes and the Appearance Settings user interface. In addition to some under-the-hood improvements to handling of custom header images and custom backgrounds, WordPress 3.4 includes some improvements that will be readily apparent to end users.</p><p><span id="more-1837"></span></p><p>One such improvement is the Theme Customizer, which is invoked whenever the user activates a new Theme:</p><div id="attachment_1838" class="wp-caption aligncenter" style="width: 310px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.twentyeleven.preview.jpg"><img class="size-medium wp-image-1838" title="WordPress 3.4 Theme Customizer with Live Preview" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.twentyeleven.preview-300x203.jpg" alt="WordPress 3.4 Theme Customizer with Live Preview" width="300" height="203" /></a><p class="wp-caption-text">The WordPress 3.4 Theme Customizer, which allows the user to apply - and to live-preview, Theme customizations</p></div><p>As you can see, the Theme Customizer includes a <em>live preview</em>, allowing the user to try out customizations before applying them to the Theme.</p><div id="attachment_1840" class="wp-caption alignright" style="width: 116px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.panel_.expanded.jpg"><img class="size-medium wp-image-1840 " title="Expanded Theme Customizer Panel" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.panel_.expanded-106x300.jpg" alt="Expanded Theme Customizer Panel" width="106" height="300" /></a><p class="wp-caption-text">The Theme customizer panel expanded</p></div><p>The left panel includes all of the available customizations. This list should look familiar; it is comprised of several of the existing customizations, including:</p><ul><li>Site Title and Tagline (<code>Dashboard -&gt; Settings General</code>)</li><li>Header (<code>Dashboard -&gt; Appearance -&gt; Header</code>)</li><li>Background (<code>Dashboard -&gt; Appearance -&gt; Background</code>)</li><li>Navigation (<code>Dashboard -&gt; Appearance -&gt; Menus</code>)</li><li>Static Front Page (<code>Dashboard -&gt; Settings -&gt; Reading</code>)</li></ul><p>When expanded, each customization section includes simplified versions of the full settings pages corresponding to the setting. (The original settings pages are still available, and can still be found in their original locations as noted above, should you need or want the full UI for each setting.)</p><p>Perhaps the best feature of the Theme Customizer, however, is the live preview. Make a change in the left-hand panel, and that change is displayed in the preview.</p><p>Here&#8217;s the header image customized. Select the image in the panel, and it is displayed:</p><div id="attachment_1843" class="wp-caption aligncenter" style="width: 310px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.header.image_.live_.preview.jpg"><img class="size-medium wp-image-1843" title="Header image live preview" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.header.image_.live_.preview-300x144.jpg" alt="Header image live preview" width="300" height="144" /></a><p class="wp-caption-text">Select an image in the customization panel, and the change is reflected in the live previewer</p></div><p>Here&#8217;s the navigation menu customized. Apply an (existing) custom menu to a Theme location, and it is displayed:</p><div id="attachment_1844" class="wp-caption aligncenter" style="width: 310px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.navigation.live_.preview.jpg"><img class="size-medium wp-image-1844" title="Navigation menu live preview" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.navigation.live_.preview-300x101.jpg" alt="Navigation menu live preview" width="300" height="101" /></a><p class="wp-caption-text">Apply a custom navigation menu to a Theme location, and it is displayed in the live preview</p></div><p>And here are the front page settings customized; live preview of a static front page or blog posts index:</p><div id="attachment_1845" class="wp-caption aligncenter" style="width: 310px"><a href="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.front_.page_.live_.preview.jpg"><img class="size-medium wp-image-1845" title="Front page settings customized" src="http://cdn.upthemes.com/wp-content/uploads/2012/05/theme.switcher.front_.page_.live_.preview-300x177.jpg" alt="Front page settings customized" width="300" height="177" /></a><p class="wp-caption-text">Change front page display to a static page or blog posts index, and the live preview is updated</p></div><p>So what do you think? Will you find this new Theme customizer feature to be useful? If you&#8217;d like to test-drive it for yourself, just install the latest WordPress 3.4 pre-release version, using the <a href="http://wordpress.org/extend/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> Plugin (the normal caveats regarding pre-release software in production environments apply, of course).</p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/" data-text="New in WordPress 3.4: Theme Customizer" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/new-in-wordpress-3-4-theme-customizer/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Using Typecase to Add Custom Fonts to Your WordPress Website</title><link>http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/</link> <comments>http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/#comments</comments> <pubDate>Thu, 03 May 2012 08:24:15 +0000</pubDate> <dc:creator>Siobhan</dc:creator> <category><![CDATA[Blog]]></category> <category><![CDATA[Tutorials]]></category><guid isPermaLink="false">http://upthemes.com/?p=1800</guid> <description><![CDATA[<p>Last week we launched Typecase, our awesome new plugin for WordPress. This tool imports the entire Google Web Fonts collection to your WordPress dashboard, allowing you to add custom typography to your site without touching any code. Typecase is available in the WordPress Plugin Directory and can be installed from your dashboard. In your left-hand [...]</p> ]]></description> <content:encoded><![CDATA[<p><a href="http://upthemes.com/2012/04/plugin-launch-typecase-a-web-font-manager/">Last week</a> we launched <a href="http://wordpress.org/extend/plugins/typecase/">Typecase</a>, our awesome new plugin for WordPress. This tool imports the entire Google Web Fonts collection to your WordPress dashboard, allowing you to add custom typography to your site without touching any code.</p><p><span id="more-1800"></span></p><p>Typecase is available in the WordPress Plugin Directory and can be installed from your dashboard. In your left-hand menu, just go to <strong>Plugins &gt; Add New &gt; Search</strong>. You can also <a href="http://upthemes.com/plugins/typecase/" target="_blank">purchase the Pro version for $19</a>, which includes a live front-end editor plus lifetime support and upgrades.</p><p>This tutorial shows you how to set up Typecase and start adding custom fonts to your WordPress site.</p><h2>The User Interface</h2><p>Once you&#8217;ve installed and activated the plugin in your WordPress dashboard, you&#8217;ll find the Typecase panel in your left-hand menu. Clicking this opens the interface where you manage your fonts.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-1.png" alt="typecase on the WordPress menu" title="Typecase 1" width="500" class="alignnone size-full wp-image-1803" /></p><h2>Searching for Fonts</h2><p>If you know which font you&#8217;re looking for, use the search bar at the top of the &#8220;Available Fonts&#8221; panel to find it. You can search the entire Google Web Fonts collection from here.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-2.png" alt="the typecase search bar" title="Typecase 2" width="500" class="alignnone size-full wp-image-1803" /></p><p>Alternatively, you can browse through all available fonts, which are displayed in alphabetical order below the search bar. Click the &#8220;Load More Fonts&#8221; button to pull new samples into the preview window.</p><p>When you find a font that you want to use, click the green plus icon to add it to your collection.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-3.png" alt="an image of the listed londs" title="font list" width="500"  class="alignnone size-full wp-image-1803" /></p><p>Some Google Web Fonts offer multiple font weights and character sets, which can be selected once the font is in your collection.</p><h2>Using New Fonts on Your WordPress Site</h2><p>You can apply your new fonts to different elements of your site using CSS selectors. Just choose the font, add your CSS selector, and hit enter. Your changes will be saved automatically.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-4.png" alt="the selector dropdown" title="dropdown" width="500" class="alignnone size-full wp-image-1803" /></p><p>If you&#8217;re not sure which CSS selector you need, right click on the relevant area of your site (where you want to apply your new font) and click <strong>&#8220;inspect element.&#8221;</strong> This works in both Chrome and Firefox.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-5.png" alt="the flyout menu with the inspect element item circled" title="drpdown" width="500" class="alignnone size-full wp-image-1803" /></p><p>In the example shown below, I&#8217;ve chosen the font <strong>Francois One</strong> and applied it to the <strong>h1 and h2 elements</strong>, for headings and subheadings.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-6.png" alt="the selector with francoise one selected and applied to h1 and h2" title="selector" width="500" height="360" class="alignnone size-full wp-image-1803" /></p><p>I&#8217;ve then chosen <strong>Open Sans</strong> and applied it to the <strong>p element</strong>, for paragraph text.</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-7.png" alt="the selector dropdown" title="dropdown" width="500"  class="alignnone size-full wp-image-1803" /></p><p>The WordPress posts now look like this:</p><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Typecase-8.png" alt="new typography with francoise 1 and open sans" title="dropdown" width="500" class="alignnone size-full wp-image-1803" /></p><h2>Some Font Combination Ideas</h2><p>If you need a little inspiration, these are 10 font combinations you can use on your WordPress site. There are over 500 Google Web Fonts available, so get in there and start experimenting!</p><h3>Audiowide &amp; Dosis</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Audiowide-Dosis.png" alt="an example of audiowide and dosis together" title="Audiowide &amp; Dosis" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Averia Libre &amp; Actor</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Averia-Libre-Actor.png" alt="an example of Averia Libre and Actor fonts together" title="Audiowide &amp; Dosis" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Graduate &amp; Karla</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Graduate-Karla.png" alt="an example of Graduate and Karlafonts together" title=Graduate and KArla" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Jolly Lodger &amp; PT Mono</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Jolly-Lodger-PT-Mono.png" alt="an example of Jolly Lodger and PT Monotfonts together" title="Jolly Lodget and PT Mono" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Londrina Sketch &amp; Loved by the King</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Londrina-Sketch-Loved-by-the-King.png" alt="an example of Londrina Sketch and Loved by the King fonts together" title="Londrina Sketch etc" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Oleo Script &amp; Cabin Condensed</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Oleo-Script-Cabin-Condensed.png" alt="an example of Oleo Script and Cabin Condensed fonts together" title="Oleo Script and Cabin Condensed" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Passion One &amp; Shanti</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Passion-One-Shanti.png" alt="an example of Passion One and Shanti fonts together" title="Passion One Shanti" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Russo One &amp; Mate SC</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Russo-One-Mate-SC.png" alt="an example of Russo One and Mate SC fonts together" title="Russo-One-Mate-SC" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Salsa &amp; Oxygen</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Salsa-Oxygen.png" alt="an example of Salsa and Oxygenfonts together" title="Salsa-Oxygen" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><h3>Wellfleet &amp; Lato</h3><p><img src="http://cdn.upthemes.com/wp-content/uploads/2012/05/Wellfleet-Lato.png" alt="an example of the Wellfleet and Lato fonts together" title="Wellfleet and Lato" width="500" height="296" class="alignnone size-full wp-image-1811" /></p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/" data-text="Using Typecase to Add Custom Fonts to Your WordPress Website" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/using-typecase-to-add-custom-fonts-to-your-wordpress-website/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Typecase Now Comes Pre-installed for All New Page.ly Customers</title><link>http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/</link> <comments>http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/#comments</comments> <pubDate>Tue, 01 May 2012 16:35:56 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[News & Updates]]></category> <category><![CDATA[page.ly]]></category><guid isPermaLink="false">http://upthemes.com/?p=1790</guid> <description><![CDATA[<p>If you hadn&#8217;t heard, we just released a brand new web font plugin called Typecase. You can read more about that in our launch blog post here. We&#8217;re excited to announce that you can now apply kickass web fonts directly to your Page.ly website! With an exclusive partnership between UpThemes and Page.ly, we&#8217;ve made it [...]</p> ]]></description> <content:encoded><![CDATA[<p>If you hadn&#8217;t heard, we just released a brand new web font plugin called Typecase. You can read more about that in our <a href="http://upthemes.com/2012/04/plugin-launch-typecase-a-web-font-manager/" title="Plugin Launch: Typecase, A Web Font Manager">launch blog post here</a>.</p><p>We&#8217;re excited to announce that you can now apply kickass web fonts directly to your <a href="http://blog.page.ly/2012/05/beautiful-web-fonts-by-typecase/" title="Page.ly Adds Typecase to Plugin List">Page.ly</a> website! With an exclusive partnership between UpThemes and Page.ly, we&#8217;ve made it even easier to apply any of 500+ Google Web Fonts to your website. For all new customer signups on Page.ly, Typecase comes pre-installed and ready for you to browse and apply custom fonts to ANY theme! Simply visit the Typecase page in your WordPress admin and start adding fonts to your collection. It&#8217;s that easy!</p><p>If you&#8217;re not yet a Page.ly customer, you should be! <a href="http://page.ly/?a=30814766" title="Page.ly WordPress Hosting"><strong>Sign up here.</strong></a></p><div class="soma-buttons soma-alignright soma-valignbottom soma-horizontal"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/" data-text="Typecase Now Comes Pre-installed for All New Page.ly Customers" data-via="" data-size="" data-related="" data-hashtags="" data-count="horizontal" data-counturl="http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/">Tweet</a> <g:plusone size="medium" annotation="bubble" href="http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/"></g:plusone><div class="fb-like" data-href="http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false" data-font="arial"></div></div> ]]></content:encoded> <wfw:commentRss>http://upthemes.com/blog/2012/05/typecase-now-comes-pre-installed-for-all-new-page-ly-customers/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using memcached
Database Caching 5/7 queries in 0.002 seconds using memcached
Object Caching 1067/1074 objects using apc
Content Delivery Network via Amazon Web Services: CloudFront: cdn.upthemes.com

Served from: upthemes.com @ 2012-05-16 21:40:45 -->
