<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/" version="2.0"><channel><title>WPCandyWPCandy</title> <link>http://wpcandy.com</link> <description>A blog all about WordPress. Yes, we're a bit meta.</description> <lastBuildDate>Tue, 07 Feb 2012 05:53:19 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator><itunes:summary>A blog all about WordPress. Yes, we're a bit meta.</itunes:summary> <itunes:author>WPCandy</itunes:author> <itunes:explicit>no</itunes:explicit> <itunes:image href="http://wpcandy.gooroohq.com/files/powerpress/podcast-larger.png" /> <itunes:subtitle>A blog all about WordPress. Yes, we're a bit meta.</itunes:subtitle> <image><title>WPCandyWPCandy</title> <url>http://wpcandy.gooroohq.com/wp-content/plugins/powerpress/rss_default.jpg</url><link>http://wpcandy.com</link> </image> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wpcandy" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wpcandy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">wpcandy</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Internationalization should be common practice, not a feature</title><link>http://wpcandy.com/thinks/internationalization-should-be-common-practice?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=internationalization-should-be-common-practice</link> <comments>http://wpcandy.com/thinks/internationalization-should-be-common-practice#comments</comments> <pubDate>Mon, 06 Feb 2012 17:21:06 +0000</pubDate> <dc:creator>Piet Bos</dc:creator> <category><![CDATA[Opinion]]></category> <category><![CDATA[featured]]></category> <category><![CDATA[Plugins]]></category> <category><![CDATA[Themes]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35042</guid> <description><![CDATA[For people whose native language is not English and who need/want to develop websites in more than one language it is very frustrating to read news about fantastic theme A that was just released and cool plugin B that just saw the light only to realize after downloading that it actually is completely useless because it has not been internationalized!<div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35042">Internationalization should be common practice, not a feature</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35042"><img
class="alignnone size-full wp-image-35494" src="http://cdn.wpcandy.com/files/2012/02/pietmorethanafeature-teaser.jpeg" alt="" width="600" height="220" /></a></p><p>A subject finally getting some attention in the WordPress community is i18n, or internationalization.</p><p>Internationalization is <em>the process of making an application ready for translation</em>. Often this gets confused with localization, which is the process by which the text on the page and other settings are translated and adapted to another language and culture.</p><p>Both internationalization and localization are equally important within WordPress, but there cannot be any localization if the theme or plugin has not been internationalized first. Therefore it is of utmost importance for WordPress theme and plugin developers to internationalize their software, regardless of whether it ever actually receives a translation into another language.</p><p>In the past couple of months we have seen more and more articles being published on the subject of internationalization. Some are even dripping with frustration!</p><ul><li>Last October Thord Daniel Hedengren published <a
title="link to article" href="http://wpmu.org/dont-be-a-dick-localize-everything/">Don&#8217;t Be A Dick: Localize Everything</a>, then</li><li>in December David Decker posted <a
title="link to article" href="http://genesisthemes.de/en/2011-12/seven-cardinal-sins-localizing-wordpress-plugins-themes/">The 7 Cardinal Sins of Localizing WordPress Plugins and Themes</a>.</li></ul><p>I must admit that I have left frustrated comments on sites like WPCandy, WPBeginner, WPMU and the like, whenever something is promoted that is not properly internationalized. It seems I finally got someone&#8217;s attention as <a
title="Ryan Imel" href="http://wpcandy.com/author/ryanimel">Ryan</a> is the one who asked me to write this editorial after I left yet another <a
title="link to comment" href="http://wpcandy.com/reports/max-foundry-to-launch-maxbuttons-pro#comment-341758">frustrated comment</a> on one of the articles published here.</p><p>For those whose native language is <em>not</em> English and who want to develop websites in more than one language, it is very frustrating to read any news about Fantastic Hypothetical Theme A or Cool Plugin B that were just released, only to realize after downloading that it is actually completely useless since it hasn&#8217;t be internationalized!</p><p>And do you know what is even worse? When said theme or plugin costs money (often <a
title="Let’s stop calling WordPress themes “premium”, whether they are or not" href="http://wpcandy.com/thinks/we-can-stop-with-premium-already">called premium</a>). Not only is that frustrating, it&#8217;s just wrong. Despite the number of features your theme or plugin has, if it has not been internationalized it shouldn&#8217;t be sold in the first place.</p><p>This is just not open for discussion. Internationalization should be common practice, not a feature!</p><p><span
id="more-35042"></span></p><h3>But then again&#8230;</h3><p>It actually is not <strong>that</strong> strange that for many developers internationalization comes as an afterthought. If you look at the Theme Development Standards article in the WordPress Codex, you will see that <a
title="link to Codex article" href="http://codex.wordpress.org/Theme_Development#Translation_.2F_i18n_Support">all the way down</a>, somewhere at the bottom is a quick note about internationalization:</p><blockquote><p>To ensure smooth transition for language localization, use the gettext functions for wrapping all translatable text within the template files. This makes it easier for the translation files to hook in and translate the titles into the site&#8217;s language.</p></blockquote><p>&#8220;This makes it easier&#8221;? Without it, the theme is <strong>impossible</strong> to translate! Anyone interested in this part of the standards will need to do lots of additional reading.</p><p>I believe that because WordPress is primarily an American invention and most popular blogs that cover WordPress are put together by people that reside in the USA, one can unfortunately safely assume that internationalization is not high on anybody&#8217;s priority list.</p><p>After all, English is the primary language in use on the web, right?</p><p>In reality it&#8217;s not. The world is larger than the North America. As a matter of fact, as of December 2011 English is being used by only 27% of (online) users worldwide; that is a bit more than <em>one-quarter</em> of the total internet population (via <a
title="link to Wikipedia" href="http://en.wikipedia.org/wiki/Global_Internet_usage">Wikipedia</a>).</p><p>I ask you to briefly consider the following: If you are a premium theme developer who properly internationalized your themes, your potential market would instantly increase by <strong>four times</strong>.</p><p>That convinced you, now didn&#8217;t it?</p><h3>Implementation tips</h3><p>The best part is that internationalizing your themes is actually quite easy.</p><p>First, I would suggest you add the <code>textdomain</code> to your theme and to set up a special directory for additional languages. For this to work you need to add the following lines to your <code>functions.php</code> file:</p><div
id="gist-1723855" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="x">add_action(&#39;after_setup_theme&#39;, &#39;my_theme_setup&#39;); </span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="x">function my_theme_setup() { </span></div><div class='line' id='LC4'><span class="x">	load_theme_textdomain(&#39;mytheme&#39;, get_template_directory() . &#39;/languages&#39;);</span></div><div class='line' id='LC5'><span class="x">}</span></div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723855/2da2c42245a01039f5bbd292cdabddca5dd4da73/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723855#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723855">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><p>On line 4 you see <code>mytheme</code>. This is going to be your <code>textdomain</code> and you will need to replace this with the name of your theme. If your theme name is very long, you can also use something shorter. Make sure that it is unique.</p><p>If you are using a child theme you should replace <code>load_theme_textdomain</code> with <code>load_child_theme_textdomain</code>.</p><p>If you would actually also localize your WordPress theme and offer it with a few additional languages on launch, you would add the .mo files of these languages to the languages directory.</p><p>After setting up the <code>textdomain</code>, next is the actual internationalization of the strings in your theme.</p><p>First up is <strong>displaying translated text</strong>. Let&#8217;s have a look at the theme <a
title="link to WordPress Theme" href="http://wordpress.org/extend/themes/sunny-blue-sky">Sunny Blue Sky</a>, which is one of the most recent themes (at time of writing) added to the WordPress Theme Directory.<br
/> Via the theme SVN we can have a peek at the theme&#8217;s files and we hit the jackpot at the first available file: the <a
title="404.php on Themes SVN" href="http://themes.svn.wordpress.org/sunny-blue-sky/1.0.3/404.php">404.php</a>:</p><div
id="gist-1723863" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="nt">&lt;h1</span> <span class="na">class=</span><span class="s">&quot;content-title&quot;</span><span class="nt">&gt;</span>Error 404 - Not Found<span class="nt">&lt;/h1&gt;</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="nt">&lt;p&gt;</span>Apologies, but the page you requested could not be found.<span class="nt">&lt;/p&gt;</span></div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723863/5992c552e89775a81cc3a824442f1b71eb270fb5/gistfile1.html" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723863#file_gistfile1.html" style="float:right;margin-right:10px;color:#666">gistfile1.html</a> <a
href="https://gist.github.com/1723863">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><p>The correct way of writing these strings is:</p><div
id="gist-1723875" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="x">&lt;h1 class=&quot;content-title&quot;&gt;</span><span class="cp">&lt;?php</span> <span class="nx">_e</span><span class="p">(</span><span class="s1">&#39;Error 404 - Not Found&#39;</span><span class="p">,</span> <span class="s1">&#39;sunny-blue-sky&#39;</span><span class="p">);</span> <span class="cp">?&gt;</span><span class="x">&lt;/h1&gt; </span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="x">&lt;p&gt;</span><span class="cp">&lt;?php</span> <span class="nx">_e</span><span class="p">(</span><span class="s1">&#39;Apologies, but the page you requested could not be found.&#39;</span><span class="p">,</span> <span class="s1">&#39;sunny-blue-sky&#39;</span><span class="p">);</span> <span class="cp">?&gt;</span><span class="x">&lt;/p&gt;</span></div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723875/3f88942711beaa5fa6437f0d47627585f2ce51e6/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723875#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723875">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><p>That wasn&#8217;t so hard, now was it?</p><p>Next up is <strong>processing the translated text</strong>. To show this I use a string in the <code><a
title="functions.php on Themes SVN" href="http://themes.svn.wordpress.org/sunny-blue-sky/1.0.3/functions.php">functions.php</a></code> file:</p><div
id="gist-1723884" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="nx">add_action</span><span class="p">(</span><span class="s1">&#39;widgets_init&#39;</span><span class="p">,</span> <span class="s1">&#39;SunnyBlueSky_sidebar&#39;</span><span class="p">);</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'><span class="k">function</span> <span class="nf">SunnyBlueSky_sidebar</span><span class="p">()</span> <span class="p">{</span> </div><div class='line' id='LC6'>	<span class="nx">register_sidebar</span> <span class="p">(</span> </div><div class='line' id='LC7'>		<span class="k">array</span> <span class="p">(</span> </div><div class='line' id='LC8'>			<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Sidebar Widget Area&#39;</span><span class="p">,</span> </div><div class='line' id='LC9'>			<span class="s1">&#39;id&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;sidebar-widget-area&#39;</span><span class="p">,</span> </div><div class='line' id='LC10'>			<span class="s1">&#39;description&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;The sidebar widget area&#39;</span><span class="p">,</span> </div><div class='line' id='LC11'>			<span class="s1">&#39;before_widget&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;li&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC12'>			<span class="s1">&#39;after_widget&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;/li&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC13'>			<span class="s1">&#39;before_title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;h2&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC14'>			<span class="s1">&#39;after_title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;/h2&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC15'>		<span class="p">)</span></div><div class='line' id='LC16'>	<span class="p">);</span> </div><div class='line' id='LC17'><br/></div><div class='line' id='LC18'><span class="p">}</span> </div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723884/9232478659fda286b3fdf8d7b53286f13814fb05/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723884#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723884">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><p>To internationalize this, we change the strings as follows:</p><div
id="gist-1723889" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> </div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="nx">add_action</span><span class="p">(</span><span class="s1">&#39;widgets_init&#39;</span><span class="p">,</span> <span class="s1">&#39;SunnyBlueSky_sidebar&#39;</span><span class="p">);</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'><span class="k">function</span> <span class="nf">SunnyBlueSky_sidebar</span><span class="p">()</span> <span class="p">{</span> </div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'>	<span class="nx">register_sidebar</span> <span class="p">(</span> </div><div class='line' id='LC8'>		<span class="k">array</span> <span class="p">(</span> </div><div class='line' id='LC9'>			<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="nx">__</span><span class="p">(</span><span class="s1">&#39;Sidebar Widget Area&#39;</span><span class="p">,</span> <span class="s1">&#39;sunny-blue-sky&#39;</span><span class="p">),</span> </div><div class='line' id='LC10'>			<span class="s1">&#39;id&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;sidebar-widget-area&#39;</span><span class="p">,</span> </div><div class='line' id='LC11'>			<span class="s1">&#39;description&#39;</span> <span class="o">=&gt;</span> <span class="nx">__</span><span class="p">(</span><span class="s1">&#39;The sidebar widget area&#39;</span><span class="p">,</span> <span class="s1">&#39;sunny-blue-sky&#39;</span><span class="p">),</span> </div><div class='line' id='LC12'>			<span class="s1">&#39;before_widget&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;li&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC13'>			<span class="s1">&#39;after_widget&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;/li&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC14'>			<span class="s1">&#39;before_title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;h2&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC15'>			<span class="s1">&#39;after_title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&lt;/h2&gt;&#39;</span><span class="p">,</span> </div><div class='line' id='LC16'>		<span class="p">)</span></div><div class='line' id='LC17'>	<span class="p">);</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="p">}</span> </div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723889/7649c90a8459cec4c8f644e2a7ce384185ed71f4/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723889#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723889">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><p>Also not super tough, right?</p><p>It does actually get a bit more complicated than this as there are more possibilities to write strings; without getting into too much details – after all this information is widely available online – I will list the most common ones below:</p><div
id="gist-1723897" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> </div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="nb">printf</span><span class="p">(</span> <span class="nx">__</span><span class="p">(</span><span class="s1">&#39;We deleted %d spam messages.&#39;</span><span class="p">,</span> <span class="s1">&#39;mytheme-textdomain&#39;</span><span class="p">),</span> <span class="nv">$count</span><span class="p">);</span></div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723897/8ef0dc826760b0fb47dfde5c6dbb579917c9dff0/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723897#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723897">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><div
id="gist-1723901" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> </div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="nb">printf</span><span class="p">(</span> <span class="nx">__</span><span class="p">(</span><span class="s1">&#39;Your city is %1$s, and your zip code is %2$s.&#39;</span><span class="p">,</span> <span class="s1">&#39;mytheme- textdomain&#39;</span><span class="p">),</span> <span class="nv">$city</span><span class="p">,</span> <span class="nv">$zipcode</span><span class="p">);</span></div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723901/e31448ca7639043438fa794327ec717b6719ed6f/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723901#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723901">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><div
id="gist-1723905" class="gist"><div
class="gist-file"><div
class="gist-data gist-syntax"><div
class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span> </div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="nb">sprintf</span><span class="p">(</span> <span class="nx">_n</span><span class="p">(</span> <span class="s1">&#39;%s comment approved&#39;</span><span class="p">,</span> <span class="s1">&#39;%s comments approved&#39;</span><span class="p">,</span> <span class="nv">$approved</span><span class="p">,</span> <span class="s1">&#39;mytheme-textdomain&#39;</span> <span class="p">),</span> <span class="nv">$approved</span><span class="p">);</span></div></pre></div></div><div
class="gist-meta"> <a
href="https://gist.github.com/raw/1723905/5d25607b65b7ba918c5165262d012265a25ac07b/gistfile1.aw" style="float:right;">view raw</a> <a
href="https://gist.github.com/1723905#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a> <a
href="https://gist.github.com/1723905">This Gist</a> brought to you by <a
href="http://github.com">GitHub</a>.</div></div></div><p>The WordPress Codex has a <a
title="Internationalization tutorial on WordPress Codex" href="http://codex.wordpress.org/I18n_for_WordPress_Developers">great tutorial</a> with basically all the options available. The <code>textdomain</code> is all the way <a
href="http://codex.wordpress.org/I18n_for_WordPress_Developers#Marking_strings_in_themes_and_plugins">at the bottom</a>, so please keep that in mind.</p><p>Remember that after you have done it once, the second time will be easier, and the third time even easier than that, and so forth. Furthermore there is plenty of information available online and there are people who can help you with it too (for instance the <a
title="Internationalization tag on WordPress forums" href="http://wordpress.org/tags/internationalization">WordPress forums</a>).</p><p>Once you have fully internationalized your theme, you will need to make a .pot or .po file, so translators can do their work and add .mo files per translation. You can include this default .po file by adding it to your languages directory.</p><p><a
title="Download POEdit" href="http://www.poedit.net/download.php">POEdit</a> is a handy tool that you can use to generate .pot, .po and .mo files of your internationalized theme or plugin. <a
title="link to article" href="http://wp.smashingmagazine.com/2011/12/29/internationalizing-localizing-wordpress-theme/">Smashing Magazine</a> published an article on the subject not too long ago, so I&#8217;d suggest referring to that.</p><h3>Additional resources</h3><p>If you&#8217;re looking for additional reading on this topic, I recommend:</p><ul><li><a
title="link to article" href="http://wp.tutsplus.com/tutorials/how-to-localize-wordpress-themes-and-plugins/">Tutsplus</a></li><li><a
title="link to article" href="http://www.viper007bond.com/2011/11/02/translating-strings-in-wordpress-containing-multiple-placerholders/">Viper007bond</a></li><li><a
title="link to article" href="http://wpengineer.com/2237/whats-the-difference-between-__-_e-_x-and-_ex/">WP Engineer</a></li></ul><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35042">Internationalization should be common practice, not a feature</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/thinks/internationalization-should-be-common-practice/feed</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>The Quarterly Magazine’s design process, sped up on video</title><link>http://wpcandy.com/announces/quarterly-01-design-process-video?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quarterly-01-design-process-video</link> <comments>http://wpcandy.com/announces/quarterly-01-design-process-video#comments</comments> <pubDate>Mon, 06 Feb 2012 16:21:43 +0000</pubDate> <dc:creator>Ryan Imel</dc:creator> <category><![CDATA[Announcements]]></category> <category><![CDATA[featured]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35579</guid> <description><![CDATA[The first issue of The WPCandy Quarterly is in the printing queue as you read &#8230;  <a
href="http://wpcandy.com/announces/quarterly-01-design-process-video">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35579">The Quarterly Magazine's design process, sped up on video</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35579"><img
class="alignnone size-full wp-image-35580" title="q01spedup-teaser" src="http://cdn.wpcandy.com/files/2012/02/q01spedup-teaser.jpeg" alt="" width="600" height="280" /></a></p><p>The first issue of <a
title="The WPCandy Quarterly" href="http://wpcandy.com/quarterly">The WPCandy Quarterly</a> is in the printing queue as you read these words. Exciting, right? Since there&#8217;s nothing I can do to speed up the process (believe me, I would if I could) I&#8217;ve taken some time and looked back over the first issue&#8217;s development.</p><p>One thing I did, while the design process of the Quarterly moved along, was save several drafts. There were nearly 50 individual design drafts of this issue, actually (we drafted articles separately with the individual authors).</p><p>Since the drafts were interesting, I put together a quick video showing a few stages of development for various pages within the Quarterly. In the video you get to see the pages when they weren&#8217;t much more than words on a page, when they changed formats and styles, and then what they eventually become. I had fun making it, so I hope you enjoy watching it.</p><p>I&#8217;ve embedded the video below, just after the jump.</p><p><span
id="more-35579"></span></p><p><a
href="http://wpcandy.com/announces/quarterly-01-design-process-video"><em>Click here to view the embedded video.</em></a></p><p>The video&#8217;s on <a
href="http://www.youtube.com/watch?v=gfgGx8k6N7Q">YouTube</a> and <a
href="http://vimeo.com/36265227">Vimeo</a>. Thanks to <a
title="37signals Basecamp Next video" href="http://37signals.com/svn/posts/3087-basecamp-next-a-peek-at-early-iterations-of-the-projects-screen">37signals</a> for the inspiration for the general style.</p><p>I find it is useful to look back on early versions and first drafts to see exactly how much the magazine progressed. There were times, particularly on a large project like the Quarterly, where I needed inspiration to keep working on it. Peering back at the early versions and seeing how far it had come definitely helped keep me moving at times.</p><p>If you haven&#8217;t seen the <a
title="The WPCandy Quarterly print proofs are in" href="http://wpcandy.com/announces/quarterly-issue-01-print-proofs-are-in">proof</a> or <a
title="Quarterly update: The magazine’s at the printer" href="http://wpcandy.com/announces/quarterly-magazine-is-at-the-printer">teaser photos</a> yet, check them out.</p><h3>What is The WPCandy Quarterly?</h3><p>The Quarterly is a printed publication (yup, the real kind where you hold <em>paper in your hands)</em> featuring articles written by members of the WordPress community. The first issue includes 11 contributors writing about everything from theme frameworks and open source in the government to the ethos of the WordPress community itself. If you enjoy WPCandy at all (or even just a <em>little</em> bit) then this magazine is just for you.</p><p>If you haven&#8217;t picked up a copy of <a
title="The WPCandy Quarterly" href="http://wpcandy.com/quarterly">The WPCandy Quarterly</a> yet, now is the time. Issues will be hot off the printer and shipped out in just a few days!</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35579">The Quarterly Magazine's design process, sped up on video</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/announces/quarterly-01-design-process-video/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>How to query by “standard” post format</title><link>http://wpcandy.com/linked/how-to-query-by-standard-post-format?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-query-by-standard-post-format</link> <comments>http://wpcandy.com/linked/how-to-query-by-standard-post-format#comments</comments> <pubDate>Mon, 06 Feb 2012 15:52:28 +0000</pubDate> <dc:creator>Mark McWilliams</dc:creator> <category><![CDATA[Links]]></category> <category><![CDATA[Plugins]]></category> <category><![CDATA[Themes]]></category><guid isPermaLink="false">http://wpcandy.com/?p=34644</guid> <description><![CDATA[Ever find yourself wanting to query the &#8220;standard&#8221; post format within WordPress and not having &#8230;  <a
href="http://wpcandy.com/linked/how-to-query-by-standard-post-format">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=34644">How to query by "standard" post format</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p>Ever find yourself wanting to query the &#8220;standard&#8221; post format within WordPress and not having much luck? It turns out there&#8217;s a <a
href="http://core.trac.wordpress.org/ticket/16149">Trac Ticket</a> for this very subject<em>.</em> But for now, <a
title="WP_Query by &quot;Standard&quot; Post Format" href="http://alexking.org/blog/2012/01/05/wp_query-by-standard-post-format">Alex King came up with a way for it to work</a> with <code>WP_Query</code> calls. Go have a look at his code.</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=34644">How to query by "standard" post format</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/linked/how-to-query-by-standard-post-format/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>The first WP on Tour was a huge success</title><link>http://wpcandy.com/reports/the-first-wp-on-tour-was-a-hugesuccess?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-first-wp-on-tour-was-a-hugesuccess</link> <comments>http://wpcandy.com/reports/the-first-wp-on-tour-was-a-hugesuccess#comments</comments> <pubDate>Mon, 06 Feb 2012 15:40:01 +0000</pubDate> <dc:creator>Remkus de Vries</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35154</guid> <description><![CDATA[The 15th of January through the 22nd finally saw its first WP on Tour go &#8230;  <a
href="http://wpcandy.com/reports/the-first-wp-on-tour-was-a-hugesuccess">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35154">The first WP on Tour was a huge&nbsp;success</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35154"><img
class="alignnone size-full wp-image-35350" src="http://cdn.wpcandy.com/files/2012/01/wp-on-tour-crew-2012.jpg" alt="WP on Tour Crew 2012" width="600" height="235" /></a></p><p>The 15<sup>th</sup> of January through the 22<sup>nd</sup> finally saw its first WP on Tour go live. WPCandy mentioned WP on Tour <a
title="WP on Tour to organize an International WordPress Coworking Trip" href="http://wpcandy.com/reports/wp-on-tour-to-organize-international-wordpress-coworking-trip">here before</a>, but it&#8217;s basically a bunch of WordPress developers (of all shapes and sizes) sharing a working space for a week.  This first edition saw 10 of us — <em>yes</em>, I was fortunate to be among them — in a beautiful house in <a
href="http://g.co/maps/zjp39">Sitges, Spain</a> having fun and co-working for 7 days.</p><p>You can find the full list of WP on Tour attendees on this <a
href="https://twitter.com/#!/WPOnTour/wp-on-tour-attendees/members">Twitter list</a>, You might have noticed some of your WordPress buddies on Twitter mentioning the <a
href="https://twitter.com/search/wpontour">#wpontour</a> hashtag and you might have concluded that we had a lot of fun&#8230;</p><p><span
id="more-35154"></span></p><p>…and you&#8217;d be right! The only thing we really had in common was our love for WordPress, but if you&#8217;ve ever been to a WordCamp you know that there are some awesome people out there in the WordPress community. And to an extend, that&#8217;s how WP on Tour felt to me. We had a lot of fun getting to know each other, our <a
href="http://instagr.am/p/hca5N/">housepet Wolfy</a> and of course learning <em>from each other</em> as well.</p><p>As we were close to Barcelona we of course went all <em>touristy</em> as well and visited the great city.  While in Barcelona we met up with Automattic&#8217;s <a
href="http://instagr.am/p/jMb1Q/">Renewal team</a>, who were in Barcelona at the same time, for even more WordPress <em>geekyness</em>.</p><h3>Projects launched</h3><p>The week was not just fun and play (and some clients projects actually needed finishing), but there also was time to share ideas on various personal projects and some of them actually saw the light of day. Briefly, folks worked on the following projects:</p><ul><li>Noel Tock created his version of WordPress meets Stripe: <a
href="http://wordpress.org/extend/plugins/wp-stripe/">WP Stripe</a></li><li>Bas van der Lans made a large update to his<a
href="https://github.com/delans/YouTube-DJ"> YouTube DJ</a> tool</li></ul><p>The idea behind WP on Tour is to step out of our daily (office) environment and work at a challenging location somewhere in the world. Like a holiday, but with WordPress geeks. This is the best way I know of to get in touch and hang out with developers, designers and evangelists next to visiting a WordCamp. If you feel like organizing your version of WP on Tour then all you&#8217;ve got to do is <a
href="http://wpontour.com/contact/">contact Karim</a>.</p><p>(Feel like checking out all the pictures we took and what the wolf is doing in some of those pictures? Do check out <a
href="http://www.flickr.com/groups/wpontour/pool/">WP on Tour Flickr pool</a> then!)</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35154">The first WP on Tour was a huge&nbsp;success</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/reports/the-first-wp-on-tour-was-a-hugesuccess/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>The WPCandy Quarterly print proofs are in</title><link>http://wpcandy.com/announces/quarterly-issue-01-print-proofs-are-in?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quarterly-issue-01-print-proofs-are-in</link> <comments>http://wpcandy.com/announces/quarterly-issue-01-print-proofs-are-in#comments</comments> <pubDate>Sat, 04 Feb 2012 18:50:50 +0000</pubDate> <dc:creator>Ryan Imel</dc:creator> <category><![CDATA[Announcements]]></category> <category><![CDATA[featured]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35549</guid> <description><![CDATA[The WPCandy Quarterly is, as far as I know, the first-ever WordPress-centric magazine. Or rather, &#8230;  <a
href="http://wpcandy.com/announces/quarterly-issue-01-print-proofs-are-in">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35549">The WPCandy Quarterly print proofs are in</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35549"><img
class="alignnone size-full wp-image-35555" title="q01proofs-teaser" src="http://cdn.wpcandy.com/files/2012/02/q01proofs-teaser.jpg" alt="" width="600" height="265" /></a></p><p><a
title="The WPCandy Quarterly" href="http://wpcandy.com/quarterly">The WPCandy Quarterly</a> is, as far as I know, the first-ever WordPress-centric magazine. Or rather, it <em>will be</em> when it begins shipping out to subscribers in the next week or so. On Friday I received the final print proofs, which wraps up the last necessary step before all the issue are printed and delivered.</p><p>I&#8217;ve dropped in a few photos of the proof sheets below. Of course I&#8217;m a bit biased, but I think this issue looks <em>fantastic</em>. I&#8217;ll have more to share about the production process next week, but I just couldn&#8217;t help sharing this update now. I&#8217;m pretty excited to see this coming together.</p><p>Remember, we have a limited number of issues. <a
title="The WPCandy Quarterly" href="http://wpcandy.com/quarterly">Pick one up today</a> to be sure you have one of the first issues of the Quarterly.</p><p><span
id="more-35549"></span></p><h3>Proof sheets</h3><p>When magazines like this are produced, a number of pages are printed on one large sheet. The sheets are then cut down to the various spreads and folded into place.</p><p><img
class="alignnone size-large wp-image-35550" title="The WPCandy Quarterly Issue #1 proof sheets (01)" src="http://cdn.wpcandy.com/files/2012/02/q01proof001-600x401.jpg" alt="" width="600" height="401" /></p><p><img
class="alignnone size-large wp-image-35551" title="The WPCandy Quarterly Issue #1 proof sheets (02)" src="http://cdn.wpcandy.com/files/2012/02/q01proof002-600x401.jpg" alt="" width="600" height="401" /></p><p><img
class="alignnone size-large wp-image-35552" title="The WPCandy Quarterly Issue #1 proof sheets (03)" src="http://cdn.wpcandy.com/files/2012/02/q01proof003-600x401.jpg" alt="" width="600" height="401" /></p><p><img
class="alignnone size-large wp-image-35553" title="The WPCandy Quarterly Issue #1 proof sheets (04)" src="http://cdn.wpcandy.com/files/2012/02/q01proof004-600x483.jpg" alt="" width="600" height="483" /></p><p><img
class="alignnone size-large wp-image-35554" title="The WPCandy Quarterly Issue #1 proof sheets (05)" src="http://cdn.wpcandy.com/files/2012/02/q01proof005-600x401.jpg" alt="" width="600" height="401" /></p><h3>Print vs. digital</h3><p>Everyone who orders an issue will receive access to digital copies as well, but even so I think the printed version of the magazine is <em>just cool</em>. For this first run we have only 2,000 copies available — if you haven&#8217;t picked up a copy of <a
title="The WPCandy Quarterly" href="http://wpcandy.com/quarterly">The WPCandy Quarterly</a> yet, now is the time.</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35549">The WPCandy Quarterly print proofs are in</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/announces/quarterly-issue-01-print-proofs-are-in/feed</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Pressbits 005: Don’t delete plugin options on deactivation</title><link>http://wpcandy.com/broadcasts/pressbits/pressbits-005-dont-delete-plugin-options-on-deactivation?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pressbits-005-dont-delete-plugin-options-on-deactivation</link> <comments>http://wpcandy.com/broadcasts/pressbits/pressbits-005-dont-delete-plugin-options-on-deactivation#comments</comments> <pubDate>Fri, 03 Feb 2012 21:55:11 +0000</pubDate> <dc:creator>Brian Krogsgard</dc:creator> <category><![CDATA[Pressbits]]></category> <category><![CDATA[Plugins]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35534</guid> <description><![CDATA[In this episode of Pressbits I discuss my pet peeve of plugin developers deleting my &#8230;  <a
href="http://wpcandy.com/broadcasts/pressbits/pressbits-005-dont-delete-plugin-options-on-deactivation">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35534">Pressbits 005: Don't delete plugin options on deactivation</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35534"><img
class="aligncenter size-full wp-image-35337" title="Pressbits Show" src="http://cdn.wpcandy.com/files/2012/01/pressbits-teaser.png" alt="" width="600" height="150" /></a>In this episode of Pressbits I discuss my pet peeve of plugin developers deleting my options settings on deactivation, rather than upon uninstallation.</p><p>You should listen to it, <em>especially</em> if you&#8217;re a plugin developer.</p><p>If you would rather download it directly <a
href="http://wpcandy.s3.amazonaws.com/pressbits/Pressbits-0005-plugin-options-and-deactivation.mp3">you can do that too</a>, or subscribe to this show <a
title="Pressbits RSS feed" href="http://feeds.feedburner.com/pressbits">via RSS</a> or <a
title="Pressbits WordPress podcast on iTunes" href="http://itunes.apple.com/us/podcast/pressbits-on-wpcandy/id499726651">on iTunes</a>. If you would prefer a written summary, you can also read that just after the jump.</p><p><span
id="more-35534"></span></p><h3>Deactivating and uninstalling a plugin are not the same thing</h3><p>Let&#8217;s talk about plugin options. Specifically, what I expect as a user when I deactivate a plugin, versus uninstall one. WordPress has some hooks built in that help enable plugin others to do things, namely <a
href="http://codex.wordpress.org/Function_Reference/register_activation_hook">register_activation_hook</a>, <a
href="http://codex.wordpress.org/Function_Reference/register_deactivation_hook">register_deactivation_hook</a>, and <a
href="http://codex.wordpress.org/Function_Reference/register_uninstall_hook">register_uninstall_hook</a>. The deactivation hook and uninstall hook are great places to trigger certain things. Unfortunately, too many plugin authors unset options in the wrong one.</p><p>When I deactivate a plugin, I&#8217;m not really trying to totally remove the plugin from my site, but rather just turn it off. So when a plugin author deletes all of the options I&#8217;ve selected on a plugins&#8217; settings screen on the deactivation hook, it makes me angry that I have to go and reset them when I turn it back on. So angry that I might just find another solution for what your plugin is doing.</p><p>What they should be doing instead, is removing these options, and e<em>verything else</em>, with the uninstall hook. When i uninstall a plugin completely, it is safe to assume I am finished with it, and it is the appropriate place to take such action. But when I simply deactivate, in all likelihood I&#8217;m just debugging something in my theme or another plugin, or maybe backing up or upgrading something.</p><p>So consider this a friendly message to plugin developers, and future plugin developers &#8211; remove options on the uninstall hook, and not the deactivation hook.</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35534">Pressbits 005: Don't delete plugin options on deactivation</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/broadcasts/pressbits/pressbits-005-dont-delete-plugin-options-on-deactivation/feed</wfw:commentRss> <slash:comments>3</slash:comments> <enclosure url="http://wpcandy.s3.amazonaws.com/pressbits/Pressbits-0005-plugin-options-and-deactivation.mp3" length="813057" type="audio/mpeg" /> <itunes:keywords>Plugins</itunes:keywords> <itunes:subtitle>In this episode of Pressbits I discuss my pet peeve of plugin developers deleting my options settings on deactivation, rather than upon uninstallation. - You should listen to it, especially if you're a plugin developer. - </itunes:subtitle> <itunes:summary>(http://wpcandy.com/files/2012/01/pressbits-teaser.png)In this episode of Pressbits I discuss my pet peeve of plugin developers deleting my options settings on deactivation, rather than upon uninstallation.You should listen to it, especially if you're a plugin developer.If you would rather download it directly you can do that too (http://wpcandy.s3.amazonaws.com/pressbits/Pressbits-0005-plugin-options-and-deactivation.mp3), or subscribe to this show via RSS (http://feeds.feedburner.com/pressbits) or on iTunes (http://itunes.apple.com/us/podcast/pressbits-on-wpcandy/id499726651). If you would prefer a written summary, you can also read that just after the jump.Deactivating and uninstalling a plugin are not the same thing
Let's talk about plugin options. Specifically, what I expect as a user when I deactivate a plugin, versus uninstall one. WordPress has some hooks built in that help enable plugin others to do things, namely register_activation_hook (http://codex.wordpress.org/Function_Reference/register_activation_hook), register_deactivation_hook (http://codex.wordpress.org/Function_Reference/register_deactivation_hook), and register_uninstall_hook (http://codex.wordpress.org/Function_Reference/register_uninstall_hook). The deactivation hook and uninstall hook are great places to trigger certain things. Unfortunately, too many plugin authors unset options in the wrong one.When I deactivate a plugin, I'm not really trying to totally remove the plugin from my site, but rather just turn it off. So when a plugin author deletes all of the options I've selected on a plugins' settings screen on the deactivation hook, it makes me angry that I have to go and reset them when I turn it back on. So angry that I might just find another solution for what your plugin is doing.What they should be doing instead, is removing these options, and everything else, with the uninstall hook. When i uninstall a plugin completely, it is safe to assume I am finished with it, and it is the appropriate place to take such action. But when I simply deactivate, in all likelihood I'm just debugging something in my theme or another plugin, or maybe backing up or upgrading something.So consider this a friendly message to plugin developers, and future plugin developers - remove options on the uninstall hook, and not the deactivation hook.</itunes:summary> <itunes:author>WPCandy</itunes:author> <itunes:explicit>no</itunes:explicit> <itunes:duration>1:41</itunes:duration> </item> <item><title>Pressbits 004: Don’t hesitate to release plugins</title><link>http://wpcandy.com/broadcasts/pressbits/0004-dont-hesitate-to-release-plugins?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=0004-dont-hesitate-to-release-plugins</link> <comments>http://wpcandy.com/broadcasts/pressbits/0004-dont-hesitate-to-release-plugins#comments</comments> <pubDate>Fri, 03 Feb 2012 14:42:29 +0000</pubDate> <dc:creator>Ryan Imel</dc:creator> <category><![CDATA[Pressbits]]></category> <category><![CDATA[Plugins]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35444</guid> <description><![CDATA[In this episode of Pressbits I discuss the hesitance I sometimes see in folks to release their &#8230;  <a
href="http://wpcandy.com/broadcasts/pressbits/0004-dont-hesitate-to-release-plugins">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35444">Pressbits 004: Don't hesitate to release plugins</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35444"><img
class="alignnone size-full wp-image-35337" title="Pressbits Show" src="http://cdn.wpcandy.com/files/2012/01/pressbits-teaser.png" alt="" width="600" height="150" /></a></p><p>In this episode of Pressbits I discuss the hesitance I sometimes see in folks to release their code as WordPress plugins. Listen, <em>I dare you</em>:</p><p>If you would rather download it directly <a
href="http://wpcandy.s3.amazonaws.com/pressbits/Pressbits-0004-Dont-hesitate-to-release-plugins.mp3">you can do that too</a>, or subscribe to this show <a
title="Pressbits RSS feed" href="http://feeds.feedburner.com/pressbits">via RSS</a> or <a
title="Pressbits WordPress podcast on iTunes" href="http://itunes.apple.com/us/podcast/pressbits-on-wpcandy/id499726651">on iTunes</a>. If you would prefer a transcript, you can also read that just after the jump.</p><p><span
id="more-35444"></span></p><h3>Mine your work for plugins that you can release</h3><p>Sometimes I get the sense that someone is shying away from releasing any of their work as a plugin. They will say things like &#8220;this isn&#8217;t that complex&#8221; or &#8220;this isn&#8217;t worthwhile or unique&#8221;. But the thing is, we (the community) <em>need</em> more plugins that are small, simple, and compact.</p><p>Dig into your functions file, your <a
title="How to create your own WordPress functionality plugin" href="http://wpcandy.com/teaches/how-to-create-a-functionality-plugin">functionality plugins</a>, or even stray code that you have within your theme files. Be watchful for what could become a general public plugin. If not for your own sake — some aren&#8217;t interested in maintaining plugins on WordPress.org, which I get — then release them for me. I want to see your awesome ideas, the ways you have solved your own problems, and whether they might be useful for myself or others. Some of my favorite plugins are not big and powerful, but small and very specific.</p><p>One thing I&#8217;ve learned by being a part of the WordPress community (or is it <a
title="WordPress isn’t a community" href="http://wpcandy.com/thinks/wordpress-isnt-a-community">communities</a>?) is that code you keep to yourself can end up stale and weak. Sharing code, on the other hand, using WordPress.org or Github (my two favorites) means that others can add to and improve on your code. It also helps to bring you further into the community and makes others aware of you and your ideas.</p><p>Personally I try to turn as many of my site&#8217;s features into plugins as possible (internally). They instantly become easier to manage and seem generally more organized than as scattered functions in a file or two. Now I just need to take my own advice and release a slew of my own tiny, purpose-specific plugins.</p><p>Are you sitting on any code (read: solutions to problems) that you could take a few minutes to release as a plugin?</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35444">Pressbits 004: Don't hesitate to release plugins</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/broadcasts/pressbits/0004-dont-hesitate-to-release-plugins/feed</wfw:commentRss> <slash:comments>8</slash:comments> <enclosure url="http://wpcandy.s3.amazonaws.com/pressbits/Pressbits-0004-Dont-hesitate-to-release-plugins.mp3" length="1057504" type="audio/mpeg" /> <itunes:keywords>Plugins</itunes:keywords> <itunes:subtitle>In this episode of Pressbits I discuss the hesitance I sometimes see in folks to release their code as WordPress plugins. Listen, I dare you: - If you would rather download it directly you can do that too,</itunes:subtitle> <itunes:summary>(http://wpcandy.com/files/2012/01/pressbits-teaser.png)In this episode of Pressbits I discuss the hesitance I sometimes see in folks to release their code as WordPress plugins. Listen, I dare you:If you would rather download it directly you can do that too (http://wpcandy.s3.amazonaws.com/pressbits/Pressbits-0004-Dont-hesitate-to-release-plugins.mp3), or subscribe to this show via RSS (http://feeds.feedburner.com/pressbits) or on iTunes (http://itunes.apple.com/us/podcast/pressbits-on-wpcandy/id499726651). If you would prefer a transcript, you can also read that just after the jump.Mine your work for plugins that you can release
Sometimes I get the sense that someone is shying away from releasing any of their work as a plugin. They will say things like "this isn't that complex" or "this isn't worthwhile or unique". But the thing is, we (the community) need more plugins that are small, simple, and compact.Dig into your functions file, your functionality plugins (http://wpcandy.com/teaches/how-to-create-a-functionality-plugin), or even stray code that you have within your theme files. Be watchful for what could become a general public plugin. If not for your own sake — some aren't interested in maintaining plugins on WordPress.org, which I get — then release them for me. I want to see your awesome ideas, the ways you have solved your own problems, and whether they might be useful for myself or others. Some of my favorite plugins are not big and powerful, but small and very specific.One thing I've learned by being a part of the WordPress community (or is it communities (http://wpcandy.com/thinks/wordpress-isnt-a-community)?) is that code you keep to yourself can end up stale and weak. Sharing code, on the other hand, using WordPress.org or Github (my two favorites) means that others can add to and improve on your code. It also helps to bring you further into the community and makes others aware of you and your ideas.Personally I try to turn as many of my site's features into plugins as possible (internally). They instantly become easier to manage and seem generally more organized than as scattered functions in a file or two. Now I just need to take my own advice and release a slew of my own tiny, purpose-specific plugins.Are you sitting on any code (read: solutions to problems) that you could take a few minutes to release as a plugin?</itunes:summary> <itunes:author>WPCandy</itunes:author> <itunes:explicit>no</itunes:explicit> <itunes:duration>2:12</itunes:duration> </item> <item><title>Envato removes price adjustment tool from their Elite program</title><link>http://wpcandy.com/reports/envato-removes-price-adjustment-tool?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=envato-removes-price-adjustment-tool</link> <comments>http://wpcandy.com/reports/envato-removes-price-adjustment-tool#comments</comments> <pubDate>Fri, 03 Feb 2012 14:34:45 +0000</pubDate> <dc:creator>Ryan Imel</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[featured]]></category> <category><![CDATA[Themes]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35513</guid> <description><![CDATA[This morning Collis Ta&#8217;eed announced on the Envato Notes blog that their price adjustment tool, &#8230;  <a
href="http://wpcandy.com/reports/envato-removes-price-adjustment-tool">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35513">Envato removes price adjustment tool from their Elite&nbsp;program</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35513"><img
class="alignnone size-large wp-image-35514" title="elitechanges" src="http://cdn.wpcandy.com/files/2012/02/elitechanges-e1328279598878-600x176.png" alt="" width="600" height="176" /></a></p><p>This morning Collis Ta&#8217;eed announced on the Envato Notes blog that their price adjustment tool, previously available to Envato Elite authors on their marketplaces that reached $75,000 in sales, is no longer available. Normally prices on the Envato marketplaces are set by Envato during the product review process, and not by the author of the product. The price adjustment tool, <a
title="Envato launches Envato Elite to “reward and recognize” their elite authors" href="http://wpcandy.com/reports/envato-launches-envato-elite">announced last year</a>, allowed certain authors to test out different prices for their products beyond what the marketplace would set for them.</p><p>The change, Ta&#8217;eed said, comes to prepare for the next major change to Envato&#8217;s pricing strategy. The introduction of variable pricing for certain elite authors was Envato&#8217;s first step toward dynamic pricing. &#8220;While it has had some success,&#8221; he said, &#8220;it’s become clear to us that it’s not the long-term solution.&#8221; The updated pricing solution — while what <em>it</em> is isn&#8217;t exactly clear yet — is slated for release &#8220;later this year&#8221;.</p><p>With the pricing tool removed, any marketplace products with modified prices will be left at the last price their author left them at. This affects 160 current authors who have already reached the $75,000 Elite level.</p><p><span
id="more-35513"></span></p><p>As a replacement for the price adjustment ability, which was the main draw at the $75,000 Envato Elite level, authors will be given an Elite badge on their products and the ability to give themselves a custom forum title. Each author will also 12 months of Envato&#8217;s Tuts+ Premium membership.</p><p>Ta&#8217;eed recognized in his post that this news could disappoint authors. He said:</p><blockquote><p>In the meantime I wanted to give a personal apology for the inconvenience of not having access to the price adjustment tool. I know many existing and new Elite authors were warming up to the tool and increasingly using it. And I realize that in those cases, our new additions will likely not make up for the removal.</p></blockquote><p>Responses to the announcement <a
href="http://themeforest.net/forums/thread/price-adjustment-tool-and-envato-elite-updates/58707?page=1">in the ThemeForest forum</a> are mixed, though some are disappointed at the change and, sometimes, lack of communication. Orman Clark, who has <a
title="Orman Clark breaks all time Theme Forest monthly sales record and expands team" href="http://wpcandy.com/reports/orman-clark-sets-theme-forest-record-and-expands-team">quite a sales record</a> on ThemeForest, <a
href="http://themeforest.net/forums/thread/price-adjustment-tool-and-envato-elite-updates/58707?page=2#527142">responded in disappointment</a> at the news:</p><blockquote><p>As someone that operates their entire business through ThemeForest, and has managed to grow a small team around it, substituting one for the other is not going to wash. And while everyone can always learn something new, 12 months access to Tuts+ is hardly a worthy replacement or incentive based on the assumption that Elite authors have already got some skills to pay the bills.</p></blockquote><p>Ta&#8217;eed did join the discussion in that forum thread, answering questions and responding to suggestions. It&#8217;s an interesting discussion if you&#8217;re interested in some of the dynamics and thought process behind the largest WordPress theme marketplace in the world.</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35513">Envato removes price adjustment tool from their Elite&nbsp;program</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/reports/envato-removes-price-adjustment-tool/feed</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>WPCandy Podcast 30: Jetpack full of fireworks edition</title><link>http://wpcandy.com/podcasts/episode-030?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=episode-030</link> <comments>http://wpcandy.com/podcasts/episode-030#comments</comments> <pubDate>Thu, 02 Feb 2012 14:59:16 +0000</pubDate> <dc:creator>Ryan Imel</dc:creator> <category><![CDATA[Podcasts]]></category> <category><![CDATA[featured]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://wpcandy.com/?p=35464</guid> <description><![CDATA[In this, episode 30 of the WPCandy Podcast, we officially adopt a new format for &#8230;  <a
href="http://wpcandy.com/podcasts/episode-030">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35464">WPCandy Podcast 30: Jetpack full of fireworks edition</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><a
href="http://wpcandy.com/?p=35464"><img
class="alignnone size-full wp-image-35465" title="WPCandy Podcast 30" src="http://cdn.wpcandy.com/files/2012/02/wpcandypodcast-30-jetpackfireworks.jpeg" alt="" width="600" height="195" /></a></p><p>In this, episode 30 of the <a
title="The WPCandy Podcast" href="http://wpcandy.com/category/podcasts/">WPCandy Podcast</a>, we officially adopt a new format for the official show. In short, the goal is for the WPCandy Podcast to deliver a higher <em>awesome</em> per <em>minute</em> ratio, and be the &#8220;if you only listen to one WordPress podcast, listen to this one&#8221; podcast.</p><p>But that&#8217;s not all. In this episode Brian and I recap on 2011 at WPCandy, and I sit down to interview <a
title="Andy Skelton's blog" href="http://andy.wordpress.com/">Andy Skelton</a> and <a
title="Joen Asmussen's blog" href="http://noscope.com/">Joen Asmussen</a> from Automattic about the WordPress.com/Jetpack year-end reports (<a
href="http://matt.wordpress.com/2011/annual-report">example</a>).</p><p>You can listen to the podcast here:</p><p>This week&#8217;s episode is just over 41 minutes long. If you want to jump ahead:</p><ul><li>00:50 Ryan and Brian reminisce on 2011</li><li>14:55 Interview with Andy Skelton and Joen Asmussen</li></ul><p>Subscribe to the show <a
title="WPCandy WordPress Podcast on iTunes" href="http://itunes.apple.com/us/podcast/the-wpcandy-wordpress-podcast/id388757170">on iTunes</a>, or <a
title="The WPCandy WordPress Podcast RSS feed" href="http://feeds.feedburner.com/WPCandyPodcast">directly to the RSS feed</a>. As always you can send any emails you would like to have included on the show to <a
title="Send Us An Email" href="mailto:podcast@wpcandy.com" target="_blank">podcast@wpcandy.com</a>. The download link is just after the jump.</p><p><span
id="more-35464"></span></p><p>If you would like to download the podcast in MP3 format directly, you can do so <a
title="Download WPCandy WordPress podcast episode 030" href="http://wpcandy.s3.amazonaws.com/podcasts/WPCandy-Podcast-030-Jetpack-full-of-fireworks.mp3">here</a>.</p><div></div><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=35464">WPCandy Podcast 30: Jetpack full of fireworks edition</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/podcasts/episode-030/feed</wfw:commentRss> <slash:comments>2</slash:comments> <enclosure url="http://wpcandy.s3.amazonaws.com/podcasts/WPCandy-Podcast-030-Jetpack-full-of-fireworks.mp3" length="19738571" type="audio/mpeg" /> <itunes:keywords>featured,WordPress</itunes:keywords> <itunes:subtitle>In this, episode 30 of the WPCandy Podcast, we officially adopt a new format for the official show. In short, the goal is for the WPCandy Podcast to deliver a higher awesome per minute ratio, and be the "if you only listen to one WordPress podcast,</itunes:subtitle> <itunes:summary>(http://wpcandy.com/files/2012/02/wpcandypodcast-30-jetpackfireworks.jpeg)In this, episode 30 of the WPCandy Podcast (http://wpcandy.com/category/podcasts/), we officially adopt a new format for the official show. In short, the goal is for the WPCandy Podcast to deliver a higher awesome per minute ratio, and be the "if you only listen to one WordPress podcast, listen to this one" podcast.But that's not all. In this episode Brian and I recap on 2011 at WPCandy, and I sit down to interview Andy Skelton (http://andy.wordpress.com/) and Joen Asmussen (http://noscope.com/) from Automattic about the WordPress.com/Jetpack year-end reports (example (http://matt.wordpress.com/2011/annual-report)).You can listen to the podcast here:This week's episode is just over 41 minutes long. If you want to jump ahead:* 00:50 Ryan and Brian reminisce on 2011
* 14:55 Interview with Andy Skelton and Joen AsmussenSubscribe to the show on iTunes (http://itunes.apple.com/us/podcast/the-wpcandy-wordpress-podcast/id388757170), or directly to the RSS feed (http://feeds.feedburner.com/WPCandyPodcast). As always you can send any emails you would like to have included on the show to podcast@wpcandy.com (mailto:podcast@wpcandy.com). The download link is just after the jump.If you would like to download the podcast in MP3 format directly, you can do so here (http://wpcandy.s3.amazonaws.com/podcasts/WPCandy-Podcast-030-Jetpack-full-of-fireworks.mp3).</itunes:summary> <itunes:author>WPCandy</itunes:author> <itunes:explicit>no</itunes:explicit> <itunes:duration>41:07</itunes:duration> </item> <item><title>Envato offers bounty to get more e-commerce plugins</title><link>http://wpcandy.com/reports/evanto-offers-bounty-to-get-more-e-commerce-plugins?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=evanto-offers-bounty-to-get-more-e-commerce-plugins</link> <comments>http://wpcandy.com/reports/evanto-offers-bounty-to-get-more-e-commerce-plugins#comments</comments> <pubDate>Thu, 02 Feb 2012 14:41:26 +0000</pubDate> <dc:creator>Jonathan Dingman</dc:creator> <category><![CDATA[News]]></category><guid isPermaLink="false">http://wpcandy.com/?p=34859</guid> <description><![CDATA[E-commerce is becoming more of a hot topic within the WordPress community. Given this realization, &#8230;  <a
href="http://wpcandy.com/reports/evanto-offers-bounty-to-get-more-e-commerce-plugins">Continue reading <span
class="meta-nav">&#8594;</span></a><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=34859">Envato offers bounty to get more e-commerce plugins</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></description> <content:encoded><![CDATA[<p><img
src="http://cdn.wpcandy.com/files/2012/01/codecanyon-ecommerce-wanted.png" alt="" width="600" height="222" class="aligncenter size-full wp-image-35108" /></p><p>E-commerce is becoming more of a hot topic within the WordPress community.  Given this realization, we&#8217;ve seen plugins like WooCommerce be released free of charge, among other great e-commerce plugins.</p><p>Envato, the company behind ThemeForest and CodeCanyon (just to name of a few of their properties), put up a bounty to plugin developers.  They see a need for more e-commerce plugins to be available in their marketplace and they&#8217;re willing to pay to get those plugins up there.<br
/> <span
id="more-34859"></span><br
/> Here are the details about the bounty.</p><blockquote><ul><li><strong>Date Posted:</strong> January 11, 2012</li><li><strong>Prizes:</strong> 20 winning files will get a share of <strong>$2,000</strong> of prizes! 20 x $100 &#8220;cash&#8221; (payable via either PayPal or Moneybookers).</li><li><strong>Maximum Prizes per Author</strong>: 3</li><li><strong>Closing Date</strong>: February 11, 2012</li><li><strong>Files We&#8217;re Looking For:</strong> <a
href="http://codecanyon.net/category/plugins/wordpress/e-commerce">WordPress e-Commerce Plugins</a> built for the following plugins:</li><ul><li>WP e-Commerce</li><li>WooCommerce</li><li>Jigoshop</li><li>Cart66</li></ul><li>An item created and converted to another sub category is allowed! So for example, a Cart66 plugin converted to Jigoshop and WooCommerce has the potential to win $300 (presuming they are all one of the first 20 items submitted/approved of course).</li><li>&#8220;Standalone&#8221; and &#8220;Other&#8221; plugins are  NOT  eligible for this contest.</li><li>Envato Staff are  NOT  allowed to enter Envato&#8217;s Most Wanted. Volunteer Community Moderators  ARE  allowed to participate.</li><li>Where Files Should be Submitted: <a
href="http://codecanyon.net/category/plugins/wordpress/e-commerce">http://codecanyon.net/category/plugins/wordpress/e-commerce</a> within the appropriate sub category.</li></ul></blockquote><p>You still have another week to get your plugins in and capture up to $300 of that bounty.</p><div
class="tentblogger-rss-footer"><p>You just finished reading <a
href="http://wpcandy.com/?p=34859">Envato offers bounty to get more e-commerce plugins</a> on <a
href="http://wpcandy.com" title="WPCandy WordPress community news">WPCandy</a>. Please consider leaving a comment!</p><p></p></div>]]></content:encoded> <wfw:commentRss>http://wpcandy.com/reports/evanto-offers-bounty-to-get-more-e-commerce-plugins/feed</wfw:commentRss> <slash:comments>6</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 disk: basic
Database Caching 32/73 queries in 0.094 seconds using disk: basic
Object Caching 1846/1965 objects using disk: basic
Content Delivery Network via cdn.wpcandy.com

Served from: wpcandy.com @ 2012-02-07 00:58:52 -->

