<?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>Konstantin Kovshenin &#187; themes</title>
	<atom:link href="http://kovshenin.com/tag/themes/feed/" rel="self" type="application/rss+xml" />
	<link>http://kovshenin.com</link>
	<description>WordPress, Automattic and Open Source</description>
	<lastBuildDate>Mon, 21 May 2012 15:59:33 +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>I started a blog about Theme Options</title>
		<link>http://kovshenin.com/2012/i-started-a-blog-about-theme-options/</link>
		<comments>http://kovshenin.com/2012/i-started-a-blog-about-theme-options/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 08:13:04 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5603</guid>
		<description><![CDATA[I started a blog about Theme Options, where I post screenshots and thoughts about options panels in free and premium WordPress themes. My ultimate goal is to get a collection of good and bad practices when dealing with theme options. Thanks for subscribing and feel free to submit your screenshots and thoughts!]]></description>
			<content:encoded><![CDATA[<p>I started a blog about <a href="http://themeoptions.wordpress.com">Theme Options</a>, where I post screenshots and thoughts about options panels in free and premium WordPress themes. My ultimate goal is to get a collection of good and bad practices when dealing with theme options. Thanks for subscribing and feel free to <a href="http://themeoptions.wordpress.com/submit/">submit your screenshots</a> and thoughts!</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/i-started-a-blog-about-theme-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There are 0 new tickets waiting for review</title>
		<link>http://kovshenin.com/2012/there-are-0-new-tickets-waiting-for-review/</link>
		<comments>http://kovshenin.com/2012/there-are-0-new-tickets-waiting-for-review/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 16:22:04 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5589</guid>
		<description><![CDATA[There are 0 new tickets waiting for review. 121 themes were reviewed in the last 7 days. #wptrt #WordPress #Inbox0 twitpic.com/9cw4b4 &#8212; Chip Bennett (@chip_bennett) April 22, 2012]]></description>
			<content:encoded><![CDATA[<blockquote class="twitter-tweet" width="550"><p>There are 0 new tickets waiting for review. 121 themes were reviewed in the last 7 days. <a href="https://twitter.com/search/%2523wptrt">#wptrt</a> <a href="https://twitter.com/search/%2523WordPress">#WordPress</a> <a href="https://twitter.com/search/%2523Inbox0">#Inbox0</a> <a href="http://t.co/hYg5EDey" title="http://twitpic.com/9cw4b4">twitpic.com/9cw4b4</a></p>
<p>&mdash; Chip Bennett (@chip_bennett) <a href="https://twitter.com/chip_bennett/status/194089570726461441" data-datetime="2012-04-22T15:45:34+00:00">April 22, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/there-are-0-new-tickets-waiting-for-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to write a terrible WordPress tutorial</title>
		<link>http://kovshenin.com/2012/how-to-write-a-terrible-wordpress-tutorial/</link>
		<comments>http://kovshenin.com/2012/how-to-write-a-terrible-wordpress-tutorial/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 08:03:06 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5540</guid>
		<description><![CDATA[How to write a terrible WordPress tutorial: &#8220;Do X without a plugin. Just paste Y into your functions.php!&#8221; &#8212; Evan Solomon (@evansolomon) April 11, 2012 True, and here&#8217;s a related post I wrote earlier about Plugins vs. Without a Plugin. Still, we keep seeing such tutorials piling up everyday, even obvious ones like Google Analytics. [...]]]></description>
			<content:encoded><![CDATA[<blockquote class="twitter-tweet" width="550"><p>How to write a terrible WordPress tutorial: &#8220;Do X without a plugin. Just paste Y into your functions.php!&#8221;</p>
<p>&mdash; Evan Solomon (@evansolomon) <a href="https://twitter.com/evansolomon/status/189909728145571841" data-datetime="2012-04-11T02:56:22+00:00">April 11, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>True, and here&#8217;s a related post I wrote earlier about <a href="http://kovshenin.com/2012/plugins-vs-without-a-plugin/">Plugins vs. Without a Plugin</a>. Still, we keep seeing such tutorials piling up everyday, even obvious ones like Google Analytics.</p>
<p>Why would one want to go through the trouble of copying and pasting code into their theme&#8217;s header.php file, and then breaking everything when they change their theme or when the theme gets an update? Why not just use a plugin that will retrieve the analytics profile via OAuth?</p>
<p>Is it considered &#8220;cool&#8221; to copy/paste all my plugins into my theme&#8217;s functions.php file? If so, I might just try it out right here on my site! And since I&#8217;m running multisite with quite a few different sites, I&#8217;ll have to do that ten times for each plugin that I need to use. Then maybe use constants to indicate which snippets I want active and which ones I don&#8217;t. *</p>
<p>And as soon as I end up with a 5000-line functions.php file, I can go complain that WordPress is too difficult to learn, and that it&#8217;s a pain switching themes or domains, and maybe blame Otto for absolute URLs too. *</p>
<p><small>* Sarcasm</small></p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/how-to-write-a-terrible-wordpress-tutorial/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>P2 for WordPress Gets an Update!</title>
		<link>http://kovshenin.com/2012/p2-for-wordpress-gets-an-update/</link>
		<comments>http://kovshenin.com/2012/p2-for-wordpress-gets-an-update/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 09:58:25 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[automattic]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5523</guid>
		<description><![CDATA[New version of #WordPress P2 Theme by @automattic is now available: wordpress.org/extend/themes/… &#8212; Emil Uzelac (@EmilUzelac) April 9, 2012 Not much has changed from the previous version. Perhaps the most exciting change is that you can now create todo lists, by adding an &#8220;o&#8221; or an &#8220;x&#8221; at the beginning of a new line. Cool [...]]]></description>
			<content:encoded><![CDATA[<blockquote class="twitter-tweet" width="550"><p>New version of <a href="https://twitter.com/search/%2523WordPress">#WordPress</a> P2 Theme by @<a href="https://twitter.com/automattic">automattic</a> is now available: <a href="http://t.co/O91ESNlr" title="http://wordpress.org/extend/themes/p2">wordpress.org/extend/themes/…</a></p>
<p>&mdash; Emil Uzelac (@EmilUzelac) <a href="https://twitter.com/EmilUzelac/status/189229505347457024" data-datetime="2012-04-09T05:53:24+00:00">April 9, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Not much <a href="http://themes.trac.wordpress.org/changeset?old_path=/p2/1.3.3&#038;new_path=/p2/1.4.0">has changed</a> from the previous version. Perhaps the most exciting change is that you can now create todo lists, by adding an &#8220;o&#8221; or an &#8220;x&#8221; at the beginning of a new line. Cool huh? If you&#8217;re new to P2, don&#8217;t forget to read this article by Matt on <a href="http://ma.tt/2009/05/how-p2-changed-automattic/">why we use P2</a> at Automattic.</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/p2-for-wordpress-gets-an-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>San Kloud Theme by Theme.fm, now on WordPress.com</title>
		<link>http://kovshenin.com/2012/san-kloud-theme-by-theme-fm-now-on-wordpress-com/</link>
		<comments>http://kovshenin.com/2012/san-kloud-theme-by-theme-fm-now-on-wordpress-com/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 05:45:43 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress.com]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5418</guid>
		<description><![CDATA[Today WordPress.com has launched a couple of new themes, and one of them is San Kloud. I remember introducing the San Kloud theme for WordPress on Theme.fm, back in August last year, and it&#8217;s made almost nine thousand downloads since then. Designed by Umit Kayabas and developed by Alexander Permyakov, San Kloud is a great theme for [...]]]></description>
			<content:encoded><![CDATA[<p>Today WordPress.com <a href="http://en.blog.wordpress.com/2012/03/20/new-themes-ari-and-san-kloud/">has launched a couple of new themes</a>, and one of them is San Kloud. I remember <a href="http://theme.fm/2011/08/introducing-san-kloud-a-free-blogging-wordpress-theme-2166/">introducing</a> the San Kloud theme for WordPress on Theme.fm, back in August last year, and it&#8217;s made almost nine thousand downloads since then. Designed by Umit Kayabas and developed by <a href="https://twitter.com/#!/pedectrian">Alexander Permyakov</a>, San Kloud is a great theme for blogging. Congratulations to the Theme.fm team for making their first theme into the WordPress.com directory!</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/san-kloud-theme-by-theme-fm-now-on-wordpress-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dear WordPress Theme Developers, Stop Using TimThumb</title>
		<link>http://kovshenin.com/2012/timthumb-in-wordpress-themes/</link>
		<comments>http://kovshenin.com/2012/timthumb-in-wordpress-themes/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 19:19:46 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5175</guid>
		<description><![CDATA[Dear theme developers, WordPress has a billion functions to work with images, look at image-edit.php and stop using TimThumb! #tech &#8212; Konstantin Kovshenin (@kovshenin) March 3, 2012 Just a reminder, since this weekend I had to help out with yet another TimThumb-powered WordPress theme, broken by a &#8220;security patch&#8221; at the web hosting provider. This [...]]]></description>
			<content:encoded><![CDATA[<blockquote class="twitter-tweet" width="550"><p>Dear theme developers, WordPress has a billion functions to work with images, look at image-edit.php and stop using TimThumb! <a href="https://twitter.com/search/%2523tech">#tech</a></p>
<p>&mdash; Konstantin Kovshenin (@kovshenin) <a href="https://twitter.com/kovshenin/status/175993539040260097" data-datetime="2012-03-03T17:18:24+00:00">March 3, 2012</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Just a reminder, since this weekend I had to help out with yet another TimThumb-powered WordPress theme, broken by a &#8220;security patch&#8221; at the web hosting provider. This time it was Acquisto by Press75. The problems of Acquisto are not limited to thumbnails.</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/timthumb-in-wordpress-themes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>John Hawkins: Intro to Child Theming</title>
		<link>http://kovshenin.com/2012/john-hawkins-intro-to-child-theming/</link>
		<comments>http://kovshenin.com/2012/john-hawkins-intro-to-child-theming/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 07:37:28 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=5152</guid>
		<description><![CDATA[It&#8217;s never too late to learn about child themes in WordPress, and in this video from WordCamp San Diego, John walks us through the very basics of child theming, overriding templates, overriding vs. pluggable functions and of course theme frameworks.]]></description>
			<content:encoded><![CDATA[<p><embed src="http://v.wordpress.com/vM0HWOVU" type="application/x-shockwave-flash" width="580" height="326" allowscriptaccess="always" allowfullscreen="true" wmode="transparent"></embed></p>
<p>It&#8217;s never too late to learn about child themes in WordPress, and in this video from WordCamp San Diego, John walks us through the very basics of child theming, overriding templates, overriding vs. pluggable functions and of course theme frameworks.</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/john-hawkins-intro-to-child-theming/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Note About get_template_part and Child Themes</title>
		<link>http://kovshenin.com/2012/a-note-about-get_template_part-and-child-themes/</link>
		<comments>http://kovshenin.com/2012/a-note-about-get_template_part-and-child-themes/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 11:31:59 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=3807</guid>
		<description><![CDATA[Tip: if you&#8217;re wondering why your WordPress template file (for example index.php) is not being executed, perhaps a different file (archive.php) is overriding it. Now this may sound obvious, but not when you start using get_template_part to organize your theme files, and not when you&#8217;re making a child theme. Let&#8217;s take a quick look at the [...]]]></description>
			<content:encoded><![CDATA[<p>Tip: if you&#8217;re wondering why your WordPress template file (for example index.php) is not being executed, perhaps a different file (archive.php) is overriding it. Now this may sound obvious, but not when you start using <a href="http://codex.wordpress.org/Function_Reference/get_template_part">get_template_part</a> to organize your theme files, and not when you&#8217;re making a child theme.</p>
<p>Let&#8217;s take a quick look at the following snippet:</p>
<pre>get_template_part( 'content', get_post_format() );</pre>
<p>That will look for files like content-link.php, content-gallery.php and so on, and will always fall back to content.php if none of the others are found. Now, imagine you&#8217;re working on a child theme. You create content.php and content-gallery.php. You expect gallery posts to pick up content-gallery.php, which is correct.</p>
<p>You also expect a link post to pick up your content.php file because there is no content-link.php in your child theme, right? This is also correct, unless your parent theme has a content-link.php file, which will be of higher priority to the template loader, despite the child-parent relationship between the two themes.</p>
<p>It does make sense, otherwise a simple index.php file in your child theme would override all of the parent theme&#8217;s templates, because index.php is a fallback for everything. That would render child themes useless.</p>
<p>So when working with get_template_part (and theme templates in general, thanks Chip!) especially child themes, don&#8217;t forget to check (and preferably study) the parent theme&#8217;s template files. Also keep the <a href="http://codex.wordpress.org/Template_Hierarchy">template hierarchy</a> fresh in your head every time you create a new theme template file. It tends to evolve with every release.</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/a-note-about-get_template_part-and-child-themes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Diet Pills, SEO, and Theme Frameworks by Andy Stratton</title>
		<link>http://kovshenin.com/2012/andy-stratton-diet-pills-seo-and-theme-frameworks/</link>
		<comments>http://kovshenin.com/2012/andy-stratton-diet-pills-seo-and-theme-frameworks/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 11:22:43 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=3760</guid>
		<description><![CDATA[Andy Stratton gave a presentation called &#8220;Diet Pills, SEO, and Theme Frameworks&#8221; at WordCamp Chicago 2011. He talked about WordPress themes, frameworks, marketplaces and a lot of related misconceptions, and some of the many problems with commercial themes including SEO, customization, child themes. Here&#8217;s a quote if you haven&#8217;t got time to watch the whole video. [...]]]></description>
			<content:encoded><![CDATA[<p><embed src="http://v.wordpress.com/mkr7UQST" type="application/x-shockwave-flash" width="580" height="326" allowscriptaccess="always" allowfullscreen="true" wmode="transparent"></embed></p>
<p>Andy Stratton gave a presentation called &#8220;Diet Pills, SEO, and Theme Frameworks&#8221; at WordCamp Chicago 2011. He talked about WordPress themes, frameworks, marketplaces and a lot of related misconceptions, and some of the many problems with commercial themes including SEO, customization, child themes. Here&#8217;s a quote if you haven&#8217;t got time to watch the whole video.</p>
<blockquote><p>There are no shortcuts to awesome!</p></blockquote>
<p>So if your clients think that $30 themes are flexible, customizable and awesome products that will solve all their business problems, they might be wrong. Thank you Andy for clearing that out! Andy&#8217;s presentation is on <a href="http://www.slideshare.net/theandystratton/diet-pills-seo-theme-frameworks-there-are-no-magic-bullets">SlideShare</a> too!</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/andy-stratton-diet-pills-seo-and-theme-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About the &quot;Lock in Effect&quot; in WordPress Themes and Plugins</title>
		<link>http://kovshenin.com/2012/about-the-lock-in-effect-in-wordpress-themes-and-plugins/</link>
		<comments>http://kovshenin.com/2012/about-the-lock-in-effect-in-wordpress-themes-and-plugins/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 13:36:45 +0000</pubDate>
		<dc:creator>Konstantin Kovshenin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://kovshenin.com/?p=3750</guid>
		<description><![CDATA[The WordPress themes and plugins market is huge these days. With all that wide range of products available, we sometimes stumble into situations where we&#8217;d like to change our mind, i.e. use a different plugin or theme instead of the one we&#8217;re currently using. Eventually we figure out that it&#8217;s incredibly tough to replace some [...]]]></description>
			<content:encoded><![CDATA[<p>The WordPress themes and plugins market is huge these days. With all that wide range of products available, we sometimes stumble into situations where we&#8217;d like to change our mind, i.e. use a different plugin or theme instead of the one we&#8217;re currently using.</p>
<p>Eventually we figure out that it&#8217;s incredibly tough to replace some of the themes and plugins, because as soon as they&#8217;re deactivated, all (or part) of our data is lost, and the new theme or plugin that was supposed to replace the old ones, doesn&#8217;t see the data we previously had. So we say that we&#8217;re <strong>locked in</strong>.</p>
<p>This post describes the lock in effect, shows you some methods to identify such themes and plugins. Plus, if you really <em>do</em> have to use one such theme or plugin, we&#8217;ll cover some tips on escaping or locking yourself out.</p>
<p><span id="more-3750"></span></p>
<h2>The Lock in Effect and why it Matters</h2>
<p>The lock in effect is not a WordPress thing, it&#8217;s been around the software industry for ages. A good example is Microsoft Excel versus OpenOffice.org Spreadsheet. The two are somewhat compatible but you&#8217;ll still notice that not all Microsoft spreadsheets will open and render fine in OpenOffice, that&#8217;s because Microsoft locks you in.</p>
<p>Take Adobe Photoshop and the open source Gimp package. It&#8217;s quite difficult to read PSD files in Gimp because of the layers madness, effects and a bunch of other stuff that only Photoshop can read. That&#8217;s because Adobe locks you in. Sometimes you&#8217;ll have a hard time opening a CS4 file in CS3 or earlier, that&#8217;s a lockin as well.</p>
<p>Although Microsoft and Adobe are trying really hard to provide backwards compatibility and compatibility with other software where possible, we should understand that it&#8217;s not entirely possible especially with complicated software like that. In each new release new features are introduced which are not easily portable to other packages and older versions.</p>
<p>WordPress has been known for its backwards compatibility for ages. In fact, you&#8217;ll not loose your content when you downgrade (provided that you&#8217;re using the core features only,) plus WordPress provides several export options that can easily be read by other software and services. WordPress gives you control over your data so you&#8217;re never locked in to using WordPress itself. WordPress does not lock you in.</p>
<p>Plugins and themes are somewhat different though, mainly because developers are overlooking the WordPress API and a bunch of features which already ship with WordPress, and tend to reinvent the wheel. Another situation is where plugins or themes introduce some brand new features unavailable in WordPress so they store your data in a unique way which is not what other themes and plugins can understand. If not treated well, the lock in effect can cause loss or corruption of your data, but there are ways to escape it, which we&#8217;ll discuss later.</p>
<h2>Identifying Themes and Plugins that Lock You in</h2>
<p>It&#8217;s somewhat tough to identify such themes and plugins. You&#8217;d have to sit all day long browsing the different repositories, reading the code, forums and comments, testing each plugin out. Obviously we don&#8217;t have the time to do that, so here are a few tricks to speed up the whole process.</p>
<h3>Custom Post Types</h3>
<p>Let&#8217;s say we need a new portfolio website, we&#8217;ll go looking for portfolio themes in the WordPress repository or marketplaces. Now, &#8220;portfolio&#8221; is not a core part of WordPress (while posts and pages are) so a theme like that can create a new <a href="http://codex.wordpress.org/Post_Types">post type</a> called <strong>portfolio</strong> with the title, description, permalink, gallery and other features. Although this is perfectly fine when using the theme itself, in a couple of months we decide to look for a different one.</p>
<p>The new theme is also a portfolio theme with a custom post type too, but registers the custom post type as <strong>portfolio_items</strong> and as soon as you activate the new theme, you&#8217;ll see that all your old items are gone. Bad!</p>
<p><a href="http://kovshenin.com/files/2012/01/custom-post-types.png"><img class="alignnone size-full wp-image-3751" src="http://kovshenin.com/files/2012/01/custom-post-types.png" alt="Custom Post Types" width="679" height="240" /></a></p>
<p>You can easily identify if a theme creates a custom post type by looking at what&#8217;s available in the main menu in your admin panel. If you see a new entry, note that it might be available with that theme only and not portable to others.</p>
<h3>Post Meta Data</h3>
<p><a href="http://codex.wordpress.org/Custom_Fields">Custom fields</a> are not new to WordPress and many themes and plugins take advantage of that to store additional data associated with a post (or any other object.) While it&#8217;s a good technique, keep in mind that there are no naming conventions for meta data keys.</p>
<p>Suppose a theme gives you the additional option to &#8220;hide the title for this post&#8221; and stores it in the meta table with the <strong>hide_title</strong> field, cool! But as soon as you deactivate the theme and use a different one, your hidden titles are now all shown. You start looking for a plugin and find one that hides the titles and it works. Unfortunately though, it stores its data under the <strong>hide_post_title</strong> meta key so you&#8217;ll have to edit all your 2,000 posts and hit those checkboxes again. What a nightmare!</p>
<h3>New Database Tables</h3>
<p>This is one of the worst lock ins, and a good example in this field would be a gallery plugin that creates its own table(s) in the database to store the images data, and what&#8217;s worse, its own folder in your wp-content directory to store the image files. Escaping such lock ins is pretty tough, even for experienced developers since they&#8217;ll have to deal with SQL and the filesystem.</p>
<p><a href="http://kovshenin.com/files/2012/01/mysql-tables.png"><img class="alignnone size-large wp-image-3752" src="http://kovshenin.com/files/2012/01/mysql-tables-680x236.png" alt="Database Tables" width="580" height="201" /></a></p>
<p>You&#8217;ll easily identify such plugins by looking at the list of tables in your database and comparing it to the standard WordPress <a href="http://codex.wordpress.org/Database_Description">database schema</a>. Note that there are exceptions though where additional tables are necessary. A good example is <a href="http://buddypress.org">BuddyPress</a>.</p>
<p>There are other things to look out for, like custom <a href="http://codex.wordpress.org/Shortcode">shortcodes</a> (very popular in the themes market) and buttons in your visual editor, data stored in text or XML files. Although I consider all of the mentioned above a &#8220;bad idea&#8221;, I understand that sometimes there&#8217;s simply no other way than to use such a theme or plugin. Do look for alternatives though, before making your final decision.</p>
<h2>Choosing Alternatives</h2>
<p>It&#8217;s impossible to find an alternative to BuddyPress, or to that super cool events registration plugin that you&#8217;ve found. Or a portfolio theme that you really really loved.</p>
<p>But it&#8217;s fairly simple to find an alternative gallery plugin that would leverage the native WordPress galleries and use the already existing functionality and build on top of that. Try deactivating it and see if you can still see your images in the media library.</p>
<p>It&#8217;s fairly easy to find (or create) a plugin that would bring a set of new shortcodes to your WordPress setup so you won&#8217;t have to worry about loosing them when you switch themes, although it will lock you in to using this new plugin.</p>
<p>In any case, plugin lock ins are more loyal than theme lock ins, because you won&#8217;t change your set of plugins once every x days/months/years, but you will look out for other themes. So when looking for a theme try and find something that doesn&#8217;t ship &#8220;with everything&#8221;, especially things like SEO options, etc., because that&#8217;s the stuff you&#8217;ll want to take along with you after you switch to a new theme.</p>
<p>This is why you should prefer a <a href="http://www.woothemes.com/woocommerce/">WooCommerce</a> plugin with a compatible theme, rather than a theme that comes with all the shopping features built-in. It&#8217;s easier to find another theme that&#8217;s compatible with the WooCommerce plugin than it is to find a theme that implements the exact same features in the exact same way. WooCommerce will lock you in to using WooCommerce though, but that&#8217;s something you should be able to live with.</p>
<p>Avoiding plugin lock ins is more difficult, but if you do find a couple of suitable ones, do compare the two, see how they store and handle your data. See if they have an export option and see if you&#8217;re skilled enough to liberate the data if they don&#8217;t.</p>
<h2>Locking Yourself Out</h2>
<p>Okay this part is quite geeky. I believe that&#8217;s it&#8217;s possible to lock yourself out of any theme and plugin in 99.9% of the cases, but you&#8217;ll need some PHP and SQL skills to do that. Keep in mind that if you have deactivated a theme or plugin, it doesn&#8217;t mean your data is all gone, it&#8217;s probably still in the database (or wherever) but WordPress just doesn&#8217;t see it.</p>
<p>Get familiar with the SQL syntax and make sure you backup everything before trying to escape a lock in. Next, experiment, experiment experiment. If your old plugin has used <strong>hide_title</strong> and your new plugin uses <strong>hide_post_title</strong>, you can easily run an SQL UPDATE statement on the post meta table to rename the existing keys. If your old theme was using a <strong>portfolio</strong> post type while your new theme is using <strong>portfolio_items</strong>, you can run an SQL UPDATE on the posts table and change the post type of all your old portfolio entries.</p>
<p>Escaping things related to files (like that gallery plugin) is more difficult, you&#8217;d have to create a php script that would run through all your existing gallery images and copy or move them into the correct directory, creating an attachment entry for each. Then run through all the posts that reference the old directory and replace the broken links. This is quite difficult and can easily get messy, but that doesn&#8217;t mean it&#8217;s impossible.</p>
<p>In any case, you&#8217;ll have to read through the code of the old and new themes and plugins file to figure out what they&#8217;re doing differently, then try adapt the existing data to the new ones. But, again, make sure you always have a complete backup of your files and database, because things can go wrong any time.</p>
<p><strong>That&#8217;s all folks!</strong> I guess that&#8217;s enough information to think about and be more careful when choosing WordPress themes and plugins. Use the comment form below if you have anything to say and feel free to <a href="https://twitter.com/#!/kovshenin">ping me on Twitter</a> too!</p>
]]></content:encoded>
			<wfw:commentRss>http://kovshenin.com/2012/about-the-lock-in-effect-in-wordpress-themes-and-plugins/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
	</channel>
</rss>

