<?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>Idealien Studios &#187; Wordpress</title>
	<atom:link href="http://idealienstudios.com/category/blog/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://idealienstudios.com</link>
	<description>We will turn your dreams into reality together!</description>
	<lastBuildDate>Thu, 27 Oct 2011 01:54:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Introducing: Idealien Rideshares</title>
		<link>http://idealienstudios.com/blog/wordpress/introducing-idealien-rideshares/</link>
		<comments>http://idealienstudios.com/blog/wordpress/introducing-idealien-rideshares/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 01:41:58 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Idealien]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=978</guid>
		<description><![CDATA[The plugin creates a custom post type which enables you and your community to get to where you want to go using less gas &#038; having more fun on road trips. t has been designed towards event rideshares so that drivers &#038; passengers in the same city can co-ordinate their travel to whatever festival, WordCamp, etc they are attending.]]></description>
			<content:encoded><![CDATA[<p><a href="http://idealienstudios.com/wp-content/uploads/ridesharePluginRepo.jpg"><img class="alignright size-medium wp-image-979" title="ridesharePluginRepo" src="http://idealienstudios.com/wp-content/uploads/ridesharePluginRepo-300x141.jpg" alt="" width="300" height="141" /></a>I first had the idea to build a rideshare form / board system around the time of release of WordPress 2.7. That initial iteration of development was a series of theme template files, lots of functions.php code, a category to store the posts and what now feels like duct-tape quality code to solve the <a href="http://idealienstudios.com/blog/wordpress/custom-field-query-quandry/">custom field quandary</a> it all created. WP 3.0&#8242;s custom post types and query_post meta_value parameters made the entire thing far more elegant in concept. So as my spare time has permitted I worked away at re-factoring it to be a stand-alone plugin. Today I&#8217;m happy to launch  <a href="http://rideshare.idealienstudios.com">v0.1 of Idealien Rideshare</a> onto the <a href="http://wordpress.org/extend/plugins/idealien-rideshare/">WordPress.org plugin repository</a>.</p>
<p><a href="http://idealienstudios.com/wp-content/uploads/screenshot-1.jpg"><img class="alignleft size-full wp-image-983" title="screenshot-1" src="http://idealienstudios.com/wp-content/uploads/screenshot-1.jpg" alt="" width="159" height="144" /></a>The plugin creates a custom post type (Rideshares) which enables you and your community to get to where you want to go using less gas and having more fun on road trips. It has been designed towards event-based rideshares in particular so that drivers and passengers in the same city can co-ordinate their travel to whatever festival, concert, workshop, WordCamp, etc they are attending elsewhere. The admin form is easy for adding / editing rideshares for those who have access to your sites’ admin console. To make the process as easy for your extended community, this plugin also provides an exceptional <a href="http://www.gravityforms.com/">Gravity Form</a> to let anyone submit their rideshare request via the front-end of your website.</p>
<p>For more details I&#8217;d point you to either check out the <a href="http://wordpress.org/extend/plugins/idealien-rideshare/">plugin repository</a> with it&#8217;s detailed installation instructions or the <a href="http://rideshare.idealienstudios.com/">rideshare.idealienstudios.com</a> plugin site that I setup to support it.</p>
<p>In case you&#8217;re wondering why v0.1, it&#8217;s because the plugin doesn&#8217;t (yet) have all the features / functionality in it that I think are worthy of a 1.0. At the moment, I&#8217;m expecting to do a big version jump when:</p>
<ul>
<li>The Gravity Form is added to an installation during initial plugin activation.</li>
<li>You can configure the plugin via an options screen to operate in a straight date-based model or the event-based one it has initially been designed for.</li>
<li>Uninstalling the plugin will remove all taxonomy and custom post rideshares.</li>
<li>Registered users gain the able to remove their rideshare request when you have filled it.</li>
<li>Cron job added to remove any rideshares that have expired</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/introducing-idealien-rideshares/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating WordPress MultiSite to Media Temple Grid Server</title>
		<link>http://idealienstudios.com/blog/development/migrating-wordpress-grid-server/</link>
		<comments>http://idealienstudios.com/blog/development/migrating-wordpress-grid-server/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 18:41:24 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=950</guid>
		<description><![CDATA[If you have ever setup a WordPress Multi-Site aka a WordPress Network, you know that it is not quite the famous 5-minute install that the single site version can be. The few bumps in the road that you encounter are well worth smoothing over as the simplicity of having a single instance of the back-end code to update for multiple domains is worth the effort. ]]></description>
			<content:encoded><![CDATA[<p>If you have ever setup a WordPress Multi-Site aka a WordPress Network, you know that it is not quite the <a href="http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install">famous 5-minute install</a> that the single site version can be. The few bumps in the road that you encounter are well worth smoothing over as the simplicity of having a single instance of the back-end code to update for multiple domains is worth the effort. I originally setup my WordPress Network when 3.0 consolidated the code-base which simplified or eliminated a number of the more complex parts of the process. Recently I have been changed my primary webhosting environment to a Media Temple (MT) Grid Server (GS) environment. The process has gone far smoother than I expected, but wanted to document a few of the issues I encountered and resolutions to them (as much for myself as anyone else).</p>
<h3>Single Site Instructions</h3>
<p>The <a href="http://kb.mediatemple.net/questions/1556/Migrating+your+websites+to+the+%28gs%29+Grid-Service#gs">MT: GS single site migration documentation</a> for is quite excellent. My process was only marginally different than what they describe. A brief outline of the process which took 10 &#8211; 20 minutes per domain depending on file sizes:</p>
<ol>
<li>Add a new domain on MT:GS</li>
<li>Create email user with FTP and SSH access for the domain.</li>
<li>Create new database and user / pass with permissions access to it.</li>
<li>Login to your phpmyadmin to take an export of your entire database.<br />
<em>Optional: </em>Use a <a href="http://wordpress.org/extend/plugins/wp-db-backup/">WordPress database backup plugin</a> if you find it easier.</li>
<li>SSH login to your existing webhosting domain root folder (httpdocs? html? wwwroot?)</li>
<li><strong>tar -zcf yourentiresitebackup.tar.gz *</strong>to create a single archive of your entire site.</li>
<li>SSH login to your MT:GS server and the appropriate domain /html/ folder.</li>
<li><strong>wget http://[insertyourdomainname.com]/yourentiresitebackup.tar.gz </strong>to copy the archive folder.<br />
For large sites or for those who are not on truly high-speed connections, doing this server-to-server copy of a single file is MUCH faster than the alternative download to local PC / upload to new server alternative.</li>
<li><strong>tar -zxf yourentiresitebackup.tar.gz</strong> to uncompress the archive.<br />
Don&#8217;t forget to delete the archive once you&#8217;ve confirmed the site is operational.</li>
<li>Go into the MT:GS database admin page and import your mySQL archive from step 3.</li>
<li>Setup your new local FTP connection in your development IDE of choice.</li>
<li>Your database connection strings will have changed. Modify the wp-config.php files on the new server.<br />
The tutorial linked above outlines this information very well. The change of <strong>localhost </strong>to <strong>$ENV{&#8216;DATABASE_SERVER&#8217;}</strong> was the only unexpected item to me for this.</li>
<li>Replacing 000000 with your account details, you can now preview the domain either at http:/s00000.gridserver.com if it is the primary domain on your MT:GS site or http://sub.alt-example.com.s00000.gridserver.com if it is an additional domain.</li>
<li>Update the DNS entries and wait for the magic to happen.</li>
</ol>
<p>Their tutorial did cover updating site paths &amp; previews within the SQL database before updating the DNS, but once you&#8217;ve ensured your landing page is accessible, the rest of the site will show properly when the DNS have propogated so I found it as a step worth skipping. You may have to re-generate your .htaccess file via the WordPress admin console once that has been done. If you&#8217;re DNS are taking longer than you care to wait you can <a href="http://www.mediacollege.com/computer/network/dns.html">temporarily map DNS/IP addresses</a> to the new server.</p>
<p>Another quirk I discovered is regarding the mail server configuration. Despite the fact that, &#8220;When a domain is added to a (gs)Grid-Service, the mail service is automatically created&#8221; it is not <a href="http://kb.mediatemple.net/questions/519/How+to+enable+or+disable+local+mail+for+your+server%3F#gs">enabled by default</a>. You have to enable it via the account center in Media Temple.</p>
<h3>MultiSite Migration</h3>
<p>Wash, rise, repeat? Almost. In the case where I was migrating existing domains as a part of a MultiSite installation things were essentially the same for steps 1 to 13 as above for the primary domain.  In the case of the sub-sites there is no need for database or file transfer since the primary one stores everything. One merely had to create a <a href="http://www.rogerstringer.com/2011/01/03/wordpress-using-multisite-domain-mapping-on-a-mediatemple-grid-server/">symlink</a> between your subsite and primary network site via ssh on your MT:GS environment. This was actually a lot easier to resolve than my previous hosting environment which had a mix of cPanel + Plesk and required an intricate series of steps.</p>
<p>To bring other domains over to the new WordPress Network on MT:GS environment this <a href="http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite">migration guide</a> was a useful place to start. A couple of other pieces of info I discovered along the way that may prove helpful to others:</p>
<ul>
<li>The <a href="http://codex.wordpress.org/Tools_Export_Screen"><strong>WordPress Import screen</strong></a> for WXR data will not be available on sub-sites until you <a href="http://wordpress.org/support/topic/import-plugin-does-not-install-in-mu-setup">enable it on the primary</a> domain of your Network.</li>
<li>With the Super Admin / Network Admin changeover, as of 3.2.1 you may find the excellent <a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/">domain mapping plugin</a> menu has <a href="http://wordpress.org/support/topic/lost-domain-mapping-after-wp-321-upgrade">changed locations</a>.</li>
<li>When dealing with a site that was already domain mapped in the new installation (but had not yet had the DNS updates) I was struggling to find a way to preview the site similar to step #13 above for a single site. The subsite URL would re-point to the full domain, and the subsite.s000000.gridserver.com would be treated as if it were a new registration request. The easiest solution is actually to NOT have a domain mapping in the primary site until you are ready for the switch, that way subdomain.primarydomain.com will display everything as you need to test plugins, theme, etc.</li>
<li>The WXR import / export will bring all your posts, pages and related content and then offer you the option to bring across all attachments which could be a lengthy conversion depending on size of your files &#8211; which are essentially moving from /wp-content/uploads/ on your single-site to /wp-content/blogs.dir/##/ on the new server where ## represents the ID of your subsite.</li>
<li>Don&#8217;t forget to confirm whether the plugins / theme features from your single install work on the multi-site environment.</li>
</ul>
<p>Good luck! If you find any other tips / tricks that can help others on this path, feel free to post a comment to share.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/development/migrating-wordpress-grid-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Themes and the GPL – again?</title>
		<link>http://idealienstudios.com/blog/gpl-again/</link>
		<comments>http://idealienstudios.com/blog/gpl-again/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 05:58:30 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=756</guid>
		<description><![CDATA[This issue of theme theft, re-selling  (or conflicting business models and the GPL) comes up every couple months. This obviously sucks, but based on the current WordPress code structure and theme distribution model, there isn't a lot which can be done - it is the nature of the beneficial beast that is working with open source licensing models. It caused me to think outside the box and ponder a different approach to resolve the problem at hand.

In the 2 years since I originally wrote that article, the premium theme industry developed around a number of thriving businesses. Today, most of the theme developers who sell their wares do so entirely under the GPL. The symptoms causing the questions to be raised may have changed, but the important ones still remain:

   1. Can (or will) developers distribute their work under multiple licenses which would respect the source code base license?
   2. What do you do if someone does not respect the license that your product is distributed under?
   3. How will this on-going conversation affect the open-source community surrounding WordPress?
]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-757" title="Secure WordPress Theme" src="http://idealienstudios.com/wp-content/uploads/my002_080222_securetheme-300x224.jpg" alt="" width="300" height="224" /><strong>NOTE:</strong> <em>I originally wrote the bulk of this post circa February 2008 (In fact, I had to go re-load a 2.1 version of WordPress to find it &#8211; how very LiveJournal the admin console was back then) &#8221; The discussion then was whether premium themes exist within the community / ecosystem of WordPress and what to do about theme theft / re-distribution.  Similar question(s) have come up again with the recent <a title="WordPress Themes and the GPL" href="http://markjaquith.wordpress.com/2010/07/17/why-wordpress-themes-are-derivative-of-wordpress/">Thesis / GPL</a> debate and the alternatives I suggest are no less timely now.</em></p>
<p>The <a href="http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins">GPL website FAQ</a> does mostly addresses this concept, &#8220;If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins.&#8221;</p>
<p>Bryan at <a href="http://onemansgoal.com/310/premium-themes-and-digital-copyright-leeching/">One Man’s Goal</a> pondered the issues surrounding digital copyright leeching and the following quotes summarize the (then) prevaling opinions on this situation:</p>
<blockquote>
<div>By designing on a GPL platform…when you release it to the public you are releasing it licensed to everyone not just those who pay for it. Companies like Redhat linux make their money not by charging for the linux o/s which is open source, but by charing for support and tweaking packages that are added to it. That’s why CentOS can directly clone what Redhat Enterprise is and not be touched.</div>
</blockquote>
<blockquote>
<div>The part of themes or plugins which makes them subject to the terms of the GPL is that they use WordPress code hooks to extract data from the WordPress database. While theme designers can SAY that their theme is licensed under some non-GPL model, they have no legal basis to do so. Someone profiting from reselling the work of another is ethically rotten, but in the current legal landscape is technically fair.</div>
</blockquote>
<p>This issue of <a href="http://bloggingexperiment.com/archives/is-blogging-experiment-breaking-the-law.php">theme theft</a>, <a href="http://www.adii.co.za/2008/02/17/pirated-wordpress-themes-get-a-100-theme-for-only-6/">re-selling</a> (or conflicting business models and the GPL) comes up every couple months. This obviously sucks, but based on the current WordPress code structure and theme distribution model, there isn&#8217;t a lot which can be done &#8211; it is the nature of the beneficial beast that is working with open source licensing models. It caused me to think outside the box and ponder a different approach to resolve the problem at hand.</p>
<h2>Distribute separate theme packages with split license</h2>
<ol>
<li><strong>GPL-licensed files which include all references to WordPress logic</strong><br />
This .zip archive would only contain the .php files which make up the theme &#8211; sidebar, header, index, comments, etc. These files would only have integration to css through the id / class names applied to div containers. A blog owner that deploys this package alone will have their content displayed in a reasonable approximation of the theme structure without any styles applied.</li>
<li><strong>Images, javascript and css files licensed under whatever terms the designer wishes</strong><br />
This second .zip file would contain all the elements required to convert that basic structure into the beautiful presentation shown in the theme screenshot / demo. After purchasing this set of files, the user would have to upload these into the theme directory – a process which has been proven simple enough for most blog owners to execute without issue.</li>
</ol>
<h2>What are the benefits?</h2>
<ul>
<li><strong>Separate downloads equals separate licenses</strong><br />
This concept would be viable because of the difference the GPL affords non-dynamically linked plugins. As the visual elements could be used with any system they would not be subject to the terms of the GPL.</li>
<li><strong>Separating form from function</strong><br />
Decoupling the business logic and presentation layer is a best practice which simplifies future development efforts. Developers already recognize the benefit of separating substance and style &#8211; html and css anyone? Automattic made a sound decision to separate blog operations (wp-admin) from custom functionality (plugins) and presentation (themes).</li>
<li><strong>Consistent with standard design processes</strong><br />
Designers usually cut a photoshop file up into images and use a static .html template file to perfect the css with them. The non-gpl .zip file would represent this stage of design. The PHP code which uses WordPress hooks to dynamicize this template would become the GPL-licensed .zip file in effect.</li>
<li><strong>Developing architecture agnostic solutions</strong><br />
With the graphics and css separated from WordPress specific code, your theme is now portable to other open source architectures: Joomla, Drupal or Expression Engine. Whether the premium designer does the work themselves or partners with someone else, they have diversified their potential markets. Including the static .html file(s) you built during the design phase and it could be sold as a generic css template as well.</li>
<li><strong>Multiple premium themes from one template</strong><br />
If the css elements are well-designed it would be easy to create multiple themes from the same template. A fishing blog and could buy incremental series of graphics for ice fishing, fly fishing or bass fishing, or a seasonal treatment to a single outdoor painted scene.</li>
</ul>
<p>I would suggest that the designers be nice, and implement a basic styles.css with the GPL code. Give the user a rough guideline based on sizes of the placeholders for where the graphics would go. Include a link in the comments at the top – which show up in the WordPress theme page – where they can / should download the graphics if they want the full effect of the premium design.</p>
<h2>What are the problems?</h2>
<ul>
<li><strong>A challenge for premium theme galleries?</strong><br />
The dozens of free WordPress theme galleries would not require any change, but any <a href="http://hackwordpress.com/best-premium-wordpress-themes-gallery/">premium theme galleries</a> would. One might argue that since they already have a different download process with credit card collection &#8211; it&#8217;s not like there is a high degree of learned behaviour to overcome so this isn&#8217;t that much of a problem.</li>
<li><strong>Asking users to do more in order to implement a design</strong><br />
The majority of blog owners seem comfortable with the process of downloading to PC, unzipping into the wp-content/themes/ directory, uploading to server and activating, so adding a second download/unzip/upload is another non-issue of sorts I suspect. If this idea takes hold and all premium theme developers begin to adopt this process, eventually users learn that is the expected set of actions required to install a premium theme.</li>
<li><strong>A thief is a thief is a thief!</strong><br />
Not much you can do about someone who has no moral issue with theft. Yet this con becomes a pro by the fact that you now have a legal recourse to sue Mr. Thiefy McStealerton as your original artistic works are not subject to the GPL but to the license you chose to make them available for purchase under.</li>
</ul>
<p>I could only come up with one other option, which was to suggest that designers host the css / graphic files on their own servers and restrict who has access to them. Obviously this puts an external dependancy on blog performance which many would not like, but would give a more significant level of control as the styles.css file and images would be on your server. Perhaps this concept would work for WordPress.com users and the marketplace concept which Automattic has been hinted is coming in the near future.</p>
<p>In the 2 years since I originally wrote that article, the premium theme <em>industry</em> developed around a number of thriving businesses. Today, most of the theme developers who sell their wares do so entirely under the GPL. The symptoms causing the questions to be raised may have changed, but the important ones still remain:</p>
<ol>
<li>Can (or will) developers distribute their work under multiple licenses which would respect the source code base license?</li>
<li>What do you do if someone does not respect the license that your product  is distributed under?</li>
<li>How will this on-going conversation affect the open-source community surrounding WordPress?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/gpl-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solving a custom field query quandry</title>
		<link>http://idealienstudios.com/blog/wordpress/custom-field-query-quandry/</link>
		<comments>http://idealienstudios.com/blog/wordpress/custom-field-query-quandry/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 01:30:14 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=678</guid>
		<description><![CDATA[I found a solution to a complex display challenge: How to display a set of posts based on multiple custom field values? This post demonstrates get_post_meta_multiple, a function you could include in your theme to allow you to filter based on an infinite number of custom field key / value pairs.]]></description>
			<content:encoded><![CDATA[<h3>How to filter for multiple custom field key / values</h3>
<p><div id="attachment_665" class="wp-caption alignright" style="width: 194px"><img class="size-medium wp-image-665" title="Custom Fields w/ More Fields" src="http://idealienstudios.com/wp-content/uploads/blog_09july_rideshare-184x300.jpg" alt="Rideshare Custom Fields captured via More Fields" width="184" height="300" /><p class="wp-caption-text">Rideshare Custom Fields captured via More Fields</p></div>
<p>As I mentioned at the end of my last post on the Power of Custom Fields, I recently started working on a prototype site that required rideshare board functionality. Storing the details lends itself well to custom fields, especially when <a href="http://wordpress.org/extend/plugins/more-fields/">More Fields</a> is used for data capture as you can see from the inset image. However, I struggled to find a solution within WordPress to solve a display challenge: How to display a set of posts based on multiple custom field values? In my case, how to loop through rideshares base on event and ride-givers or ride-wanters.</p>
<p>I explored looping through each post in my rideshare category to match the rideshare event to an array value and then using get_post_meta within to see if results belonged to the ride-giver or ride-wanter. While this might have worked, it certainly wouldn&#8217;t be an elegant &#8211; or Idealien solution. Dan Butcher did provide a functional solution in the <a href="http://wordpress.org/support/topic/161154">WordPress Support Forums</a> for a similar challenge, but it is not a solution a novice / intermediate WordPress developer would be comfortable customizing, nor would it scale well. Barry @ <a href="http://clearskys.net/">clearskys.net</a> informed me that,</p>
<blockquote><p>Whilst the JOINS work, and will work quite well with a few meta-data criteria passed in, I&#8217;ve had problems (particularly on shared hosting) in the past when creating an SQL query to search based on a series of tags which used a similar method.</p></blockquote>
<h3>Introducing get_post_meta_multiple</h3>
<p>This function I created, with sql optomization support from Barry @ <a href="http://clearskys.net/">clearskys.net</a>:</p>
<ul>
<li>accepts a variable length array of custom field key/value pairs</li>
<li>returns a list of post IDs which you can loop through</li>
<li>Could be implemented into your site in one of 3 ways: Added to a functions.php file as a part of your theme, included in a plugin related to enhanced custom field functionality or <a href="http://codex.wordpress.org/Submitting_Bugs">report a (feature request) bug</a> for a more evolved version of it be included in a future release of the core of WordPress.</li>
</ul>
<p>The demonstration code below has been prepared for the most common scenario as part of a functions.php file in a theme.</p>
<h3>The Demonstration</h3>
<p><img src="http://idealienstudios.com/wp-content/uploads/blog_09july_rideshare2.jpg" alt="Custom Field Table" title="Custom Field Table" width="500" height="138" class="alignnone size-full wp-image-687" /><br />
A series of tables with columns for number of seats available, departure / return dates plus contact / additional info. I have kept the code below intentionally short so the example doesn&#8217;t overwhelm. I have posted a <a href="http://pastebin.com/m4fafcb59">more complete version</a> on pastebin that has the markup to match the image above.</p>
<h3>The function</h3>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> get_post_meta_multiple<span style="color: #009900;">&#40;</span><span style="color: #000088;">$metaDataList</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$querystr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT p.* FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span> AS p WHERE p.ID IN ( &quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$querystr</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;SELECT post_id FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;postmeta</span> WHERE &quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$innerqry</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$metaDataList</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$innerqry</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prepare</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;(meta_key = <span style="color: #009933; font-weight: bold;">%s</span> AND meta_value = <span style="color: #009933; font-weight: bold;">%s</span>)&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000088;">$querystr</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; OR &quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$innerqry</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$querystr</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; GROUP BY post_id &quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$querystr</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;HAVING count(*) = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$metaDataList</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$querystr</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;) AND p.post_status = 'publish' &quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$metaResults</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_results</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$querystr</span><span style="color: #339933;">,</span> OBJECT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>					
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$metaResults</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Example Usage</h3>
<p>Place this inside your category.php or whatever template file you are using to display the results from.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #666666; font-style: italic;">//Create your array of custom field key / values to filter to</span>
	<span style="color: #000088;">$metaDataList</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
	<span style="color: #0000ff;">'rideshare_event'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Ottawa Blues Fest'</span><span style="color: #339933;">,</span>
	<span style="color: #0000ff;">'rideshare_type'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Driver'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #000088;">$resultList</span> <span style="color: #339933;">=</span> get_post_meta_multiple<span style="color: #009900;">&#40;</span><span style="color: #000088;">$metaDataList</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$resultList</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>
	<span style="color: #666666; font-style: italic;">//Loop through each result post to display appropriate contents</span>
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$resultList</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$post</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>
		setup_postdata<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Define your custom field key</span>
		<span style="color: #000088;">$key</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;rideshare_spaces&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Display value of custom field		</span>
		<span style="color: #b1b100;">echo</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   	<span style="color: #b1b100;">endforeach</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">else</span> <span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;p&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'No rides are currently available for this event.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/p&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h3>The future of the function?</h3>
<p>Once I have finished the prototype site that started this concept, I will attempt to package up the pieces in a more manageable method to share for wider use. In the interim, feel free to use and share in whatever ways are most convenience for you. Much like WordPress as a whole, I think this idea can continue to evolve in some great ways that will make it easier for designers, developers and clients to build / use sites based on it. Please link back to this post as you do so that I can keep tabs on how this idea evolves.</p>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/custom-field-query-quandry/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>The Power of Custom Fields</title>
		<link>http://idealienstudios.com/blog/wordpress/power-of-custom-fields/</link>
		<comments>http://idealienstudios.com/blog/wordpress/power-of-custom-fields/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 01:29:34 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=652</guid>
		<description><![CDATA[Custom Fields are the way of enabling authors to store meta-data against an individual post / page in Wordpress. If you are doing more than just basic data storage / display with custom fields in Wordpress, the list of links in this post will be of great interest to you.]]></description>
			<content:encoded><![CDATA[<p>Custom Fields are the way of enabling authors to store meta-data against an individual post / page in WordPress. The Codex describes some <a href="http://codex.wordpress.org/Using_Custom_Fields">basic uses for this meta data</a> such as displaying your current mood, weather, or listening habits, etc. Compared to other parts of the posting process, custom fields have received very little active development. I&#8217;ve been using them since WP 2.3 and can&#8217;t recall much aside from UI improvements that kept it consistent with the rest of the updates in 2.5 / 2.7. However, many people have begun to explore significant ways to enhance the CMS capabilities of WordPress through the functionality that custom fields do offer.</p>
<h3>Learn to love get_post_meta</h3>
<p>The <a href="http://codex.wordpress.org/Function_Reference/get_post_meta">get_post_meta</a> function is a function you will come to know and love when working with custom fields in WordPress. It is used within the loop to present the value based on the name of the custom field.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$key</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;rideshare_name&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h3>Beyond the basics</h3>
<p>If you are doing more than just basic data storage / display with custom fields, the following links / examples will be of interest to you:</p>
<ul>
<li><a href="http://webdesignernotebook.com/wordpress/wordpress-how-to-display-multiple-values-of-a-custom-field-key/">Web Designer Notebook</a> covers how to display multiple values for the same custom field name. This might be useful to display a list of ingredients for a recipe site or the parts needed for a set of DIY instructions.</li>
<li><a href="http://www.tutorial9.net/web-tutorials/add-thumbnails-to-wordpress-with-custom-fields/">Tutorial9</a> has a great tutorial on the many different ways to use custom fields for storing images to represent a post. After uploading the photo, you store the filename of a full-size or thumbnail photo in a custom field and use get_post_meta to extract / display in the appropriate theme file locations.</li>
<li><a href="http://www.cagintranet.com/archive/wordpress-tip-3-awesome-custom-field-tricks/">Cagintranet</a> has 3 custom field tricks that operate per post: custom read more tags, thumbnails of related posts and post-specific css overrides.</li>
<li><a href="http://www.livexp.net/wordpress/get-wordpress-custom-fields-outside-the-loop.html">LiveXP</a> shows how to get custom fields outside the loop. If creating a theme options page is beyond your skill, you can create a private page and store / retrieve the meta values from custom fields attached to that page wherever you need to.</li>
<li>Two Words: <a href="http://wordpress.org/extend/plugins/more-fields/">More Fields</a>. This plugin enables you to create custom write panels with custom field data types (radio buttons, drop-down, textbox, wysiwyg, etc). My most recent screencast gives a good overview of using More Fields to design a <a href="http://idealienstudios.com/blog/wordpress/template-retail-locations/">store location list</a> using the plugin.</li>
<li><em>Sidetrack Suggestion</em>: I can easily see (and hope that) the type of functionality More Fields has explored gets built into the core as a part of the post-types being considered for 3.0. With the drag-drop interface of the widgets management area applied to the design of write panels, this would be a fantastic feature of a future version of WordPress.</li>
<li><a href="http://justintadlock.com/tags/custom-fields">Justin Tadlock</a> has written immensely on the power of custom fields. If you want a crash course in custom fields, his site is a great place to start.</li>
<li><a href="http://www.smashingmagazine.com/2009/06/10/10-useful-wordpress-loop-hacks/">Smashing Magazine</a> shows how to get posts with a specific custom field and specific value as one of their 10 useful WordPress Loop hacks. This is invaluable when capturing data that you want to filter for in query loops.</li>
</ul>
<p>What actually inspired me to write this post was my recent efforts to build an elegant solution to a query quandry I was having related to custom fields &#8211; <a href="http://idealienstudios.com/blog/wordpress/custom-field-query-quandry/">How to filter / query for multiple custom field key / values</a>? The solution is one that could be of interest to theme / framework designers, plugin developers or possibly even the base concept for implementation into the core of advanced custom field functions WordPress.</p>
<p>If you have any other great custom field tutorials, please share them in the comments of this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/power-of-custom-fields/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Template &#8211; Retail Locations</title>
		<link>http://idealienstudios.com/blog/wordpress/template-retail-locations/</link>
		<comments>http://idealienstudios.com/blog/wordpress/template-retail-locations/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 13:36:06 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[ICE]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=647</guid>
		<description><![CDATA[Learn how to capture and display custom fields in a template using <a title="More Fields" href="http://wordpress.org/extend/plugins/more-fields/">More Fields</a>, a plugin that "enables you to define post types, which are custom Write/Edit pages that contains a pre-defined set of boxes"]]></description>
			<content:encoded><![CDATA[<div id="attachment_648" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-648" title="Retail Locations" src="http://idealienstudios.com/wp-content/uploads/projects_ice_09july9_retail-300x200.jpg" alt="Capture and display custom data types" width="300" height="200" /><p class="wp-caption-text">Capture and display custom data types using ICE and More Fields</p></div>
<p>Building on the concept of category templates which I started with the <a title="FAQ template tutorial" href="http://idealienstudios.com/projects/ice/template-demo-faq/">FAQ template tutorial</a> last week, this tutorial will cover how to capture and display custom fields in a template. What&#8217;s more, I&#8217;ll go through the step-by-step process of how to implement this using <a title="More Fields" href="http://wordpress.org/extend/plugins/more-fields/">More Fields</a> which is a plugin that &#8220;enables you to define post types, which are custom Write/Edit pages that contains a pre-defined set of boxes&#8221; that store their data behind the scenes in custom fields. The concepts from this tutorial will be of interest for anyone who:</p>
<ul>
<li>Has multiple categories of blog content with unique data to capture / present. Thumbnail per post, photo of the day or other customized items.</li>
<li>Uses WordPress as a CMS for unique page data types (event calendar, classified ads, business partners, etc)</li>
<li>Finds the selection of custom fields from a drop-down to not be the best user interface experience for capturing structured data.</li>
</ul>
<p><object width="590" height="346"><param name="movie" value="http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/flvplayer.swf"></param><param name="quality" value="high"></param><param name="bgcolor" value="#FFFFFF"></param><param name="flashVars" value="thumb=http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/FirstFrame.jpg&#038;containerwidth=590&#038;containerheight=346&#038;content=http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/ICEMoreFields.mp4"></param><param name="allowFullScreen" value="true"></param><param name="scale" value="showall"></param><param name="allowScriptAccess" value="always"></param><param name="base" value="http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/"></param>  <embed src="http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/flvplayer.swf" quality="high" bgcolor="#FFFFFF" width="590" height="346" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/FirstFrame.jpg&#038;containerwidth=590&#038;containerheight=346&#038;content=http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/ICEMoreFields.mp4" allowFullScreen="true" base="http://content.screencast.com/users/Idealien/folders/ICE/media/98b832dc-fc7e-4d98-8ac7-d60e39ccfb18/" scale="showall"></embed></object></p>
<p>Direct Video Link:<a href="http://www.screencast.com/t/2dcpYsSlk">http://www.screencast.com/t/2dcpYsSlk</a></p>
<h2>Example Code</h2>
<p>The only real code in this template that is unique is the retrieval of data from a <a href="http://codex.wordpress.org/Using_Custom_Fields">custom field</a> using the <a href="http://codex.wordpress.org/Function_Reference/get_post_meta">get_post_meta</a> function.</p>
<p><strong>A single custom field retrieval</strong><br />
Place this example within the loop of an existing category / post template.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$locationPhone</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'locationPhone'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationPhone</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;div class=&quot;locationInfo&quot;&gt;
		&lt;h4&gt;Phone Number&lt;/h4&gt;
		<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span>  <span style="color: #000088;">$locationPhone</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;/div&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><strong>Full retail location fields</strong><br />
This example is the full loop for use within a category.php file to display the contents of custom fields named: location</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> the_post<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
	&lt;h2&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> the_title<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h2&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> the_content<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$locationAddress</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'locationAddress'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationAddress</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;div class=&quot;locationInfo&quot;&gt;
			&lt;h4&gt;Address&lt;/h4&gt;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$locationMapURL</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'locationMapURL'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationMapURL</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">echo</span>  <span style="color: #0000ff;">&quot;&lt;a href='&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$locationMapURL</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;'&gt;&quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span>  <span style="color: #000088;">$locationAddress</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationMapURL</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/a&gt;&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;/div&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$locationPhone</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'locationPhone'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationPhone</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;div class=&quot;locationInfo&quot;&gt;
			&lt;h4&gt;Phone Number&lt;/h4&gt;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span>  <span style="color: #000088;">$locationPhone</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;/div&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
	&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$locationHours</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'locationHours'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationHours</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;div class=&quot;locationInfo&quot;&gt;
			&lt;h4&gt;Business Hours&lt;/h4&gt;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span>  <span style="color: #000088;">$locationHours</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;/div&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$locationWebsite</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'locationWebsite'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$locationWebsite</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;div class=&quot;locationInfo&quot;&gt;
			&lt;h4&gt;Website&lt;/h4&gt;
			<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span>  <span style="color: #0000ff;">&quot;&lt;a href='&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$locationWebsite</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;'&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$locationWebsite</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/a&gt;&quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
		&lt;/div&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
	&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endwhile</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">else</span> <span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
	&lt;p&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Sorry, no posts matched your criteria.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/p&gt;
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/template-retail-locations/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress Developer Pub Night</title>
		<link>http://idealienstudios.com/blog/wordpress/1st-wp-developer-pub-night/</link>
		<comments>http://idealienstudios.com/blog/wordpress/1st-wp-developer-pub-night/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 14:53:43 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=642</guid>
		<description><![CDATA[Tuesday July 7th, 2009 will be the first <a href="http://ottawadevelopers.wordpress.com/2009/07/03/pub-night-july-7th-2009/">Ottawa WordPress Developers Pub Night</a>. Location and time are subject to interest from the community. Current theory is a start time of 8pm at Shoeless Joe’s at 3049 Carling Ave which has cheap wing night on Tues and very nice booths.

The two best ways to let them know you're interested in attending are either post a comment on their blog or follow and tweet to them on Twitter - <a href="http://www.twitter.com/wdgo">@wdgo</a>. I know there are more than a few people in Ottawa who use Wordpress for great things including myself. I look forward to meeting them for a few pints to talk about what we would all like to give / get from a community developer group for our platform of choice.]]></description>
			<content:encoded><![CDATA[<p>Courtesy of the <a href="http://ottawadevelopers.wordpress.com">Ottawa WordPress Developers Group</a>:</p>
<blockquote><p>Tuesday July 7th, 2009 will be the first <a href="http://ottawadevelopers.wordpress.com/2009/07/03/pub-night-july-7th-2009/">Ottawa WordPress Developers Pub Night</a>. Location and time are subject to interest from the community. Current theory is a start time of 8pm at Shoeless Joe’s at 3049 Carling Ave which has cheap wing night on Tues and very nice booths.</p></blockquote>
<p>The two best ways to let them know you&#8217;re interested in attending are either post a comment on their blog or follow and tweet to them on Twitter &#8211; <a href="http://www.twitter.com/wdgo">@wdgo</a>. I know there are more than a few people in Ottawa who use WordPress for great things including myself. I look forward to meeting them for a few pints to talk about what we would all like to give / get from a community developer group for our platform of choice.</p>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/1st-wp-developer-pub-night/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What&#8217;s on WordPress.tv?</title>
		<link>http://idealienstudios.com/blog/wordpress/whats-on-wordpresstv/</link>
		<comments>http://idealienstudios.com/blog/wordpress/whats-on-wordpresstv/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 16:35:14 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=211</guid>
		<description><![CDATA[Automattic has launched their own "visual resource for all things WordPress". I explore what channels I'd like to see on Wordpress.tv.]]></description>
			<content:encoded><![CDATA[<p>Automattic has launched their own <span style="text-decoration: line-through;">Youtube </span>&#8220;visual resource for all things WordPress&#8221;. The initial load of content features tutorials and support oriented videos, including a high quality production video of my <a title="Wordpress: Beyond A Blog" href="http://wordpress.tv/2009/01/14/wordcamp-toronto-2008-jamie-oastler-on-pushing-wordpress-beyond-blogging/">WordPress: Beyond a Blog</a> presentation from Wordcamp 2008. You can also download the slides for it from the <a title="Idealien Studios Presentations" href="http://idealienstudios.com/presentations/">presentations </a>section of Idealien Studios as the lighting in the venue made it hard to see the screen on film.</p>
<p>In the introduction of WordPress.tv, they suggested that &#8220;now you can shape what comes next&#8221; by offering suggestions of what we would like to see on the site. The following list are a few of my suggestions:<span id="more-211"></span></p>
<h3>Channels dedicated to release notes / details</h3>
<p>A series of channels dedicated to covering the significant fixes / upgrades that occur in each release of WordPress. One could focus on the changes from a user perspective, although those have generally been well-covered by the blog-o-sphere in print. Documentation is usually the last thing to happen on projects (and gets short-changed as a result) it has the biggest impact on the ability for others to use / enhance the system.</p>
<p>I would like to see a series of videos dedicated to giving developers who use WordPress but aren&#8217;t involved in committing code to the core, a more in-depth understanding of what has happened behind the scenes to make the changes happen. A few examples from my own experience:</p>
<ul>
<li>The 2.7 release overhauled how admin menus are loaded which had the potential to affect how every single plugin was integrated. A video on the new different options would be been incredibly useful.</li>
<li>The same goes for creating menus using the new table-less standards which were noticeably short on documentation at launch.</li>
<li>See my previous <a title="Idealien Twitter" href="http://twitter.com/Idealien/status/1096065976">twitter rant</a> about the lack of details on Administrative Hooks that were added / removed. Putting //TODO into public facing documentation is not cool.</li>
</ul>
<h3>Insight into Automattic</h3>
<p>From conversations with Jane and Matt during my most recent Wordcamp, it sounds like the folks at Automattic have some lively discussions about the approach to implementing new / enhanced features. Perhaps record one weekly meeting to give developers a chance to see this process in action. This could be expanded to be a web-based conference call for those who have access / interest in contributing code to the core and the results posted online. You might consider this a request to open the source of the development process <img src='http://idealienstudios.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Strongbad Matt</h3>
<p><img class="size-full wp-image-213 alignright" title="Strongbad Matt" src="http://idealienstudios.com/wp-content/uploads/blog_wptv_strongbad1.jpg" alt="" width="280" height="181" />For those few souls who haven&#8217;t discovered Strongbad, you could take the boring <a href="http://en.wikipedia.org/wiki/Strong_Bad">Wikipedia approach</a> to learning about this episodic web cartoon or enjoy a half-hour of humour at Homestarrunner.com (personal faves are <a title="Strongbad Email - Virus" href="http://www.homestarrunner.com/sbemail119.html">virus </a>and <a title="Strongbad Email - Techno" href="http://www.homestarrunner.com/sbemail45.html">techno</a>). Each email answered results in a random series of adventures. Given his travel schedule, this could be a great way to see some of the more entertaining behind the scenes of the <em>defacto public face of WordPress</em>.</p>
<p>If you have more suggestions, either add them in the comments here or submit via the <a title="Contact WordPress.tv" href="http://wordpress.tv/contact/">WordPress.tv contact form</a>.</p>
<p><a href="http://idealienstudios.com/wp-content/uploads/blog_wptv_strongbad1.jpg"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/whats-on-wordpresstv/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress: Commited to open source</title>
		<link>http://idealienstudios.com/blog/wordpress/commited-to-open-source/</link>
		<comments>http://idealienstudios.com/blog/wordpress/commited-to-open-source/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 00:01:37 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=204</guid>
		<description><![CDATA[Do you believe in open source because it has lower overhead or because it is the right thing to do? Where is the balance between capitalistic goals and social obligations?]]></description>
			<content:encoded><![CDATA[<p><em>This post is the second in a series looking at the business of theme design using WordPress based on a discussion that Automattic lead <a href="http://ma.tt/">Matt Mullenweg</a> gave on a recent episode of <a href="http://www.talkshoe.com/talkshoe/web/talkCast.jsp?masterId=34224&amp;cmd=tc">WordPress Weekly</a> surrounding the topic. I would recommend reading the first article, <a href="http://idealienstudios.com/blog/wordpress/themes/premium-or-proprietary/">Premium or Proprietary?</a> to gain more context to the conversation.</em></p>
<p>I first heard about the WordPress theme repository submission guideline changes through a post on the topic at <a href="http://xfep.com/wordpress/wordpress-gpl-and-theme-mess/">XFEP.com</a> in which David Peralty pontificates that:</p>
<blockquote>
<div>Matt blames theme creators for not thinking creatively when it comes to building a business around theme development, but if he keeps cutting off their arms when they try to find ways to build a business, eventually, they will give up and move on to something that gives them a better return on investment regarding their time.</div>
</blockquote>
<p>As I summarized in my <a href="http://idealienstudios.com/blog/wordpress/themes/premium-or-proprietary/">last post</a>, the actions Matt has taken only affect the WordPress.org site &#8211; one destination amongst the vastness of the Internet. The actions are based on their open source roots and approach to the GPL which it is licensed under. Giving away free themes that are primarily created to be an upsell engagement is completely fine, but it won&#8217;t be something that gets promoted on WordPress.org. In the same way that they won&#8217;t support those businesses / business models which prevent you from redistributing or using their product on multiple sites.</p>
<blockquote><p>WordPress is something that is going to be around for decades – 5, 10, 20 years from now. So the decisions that we make now are going to influence which direction it goes. You can look to other open source projects to how this happens. What is going to keep WordPress from becoming a post-nuke, or even like a Joomla? Where you go to it and it seems like most of the stuff is paid and there aren’t that many free resources. Ultimately this is going to hurt the viability of the underlying platform. I think it’s really a commitment to what got us to where we are today…..I think that would ultimately kill the project. We need to be true to what got us to this point in order to stay around and stay relevant.<span id="more-204"></span></p></blockquote>
<h2>The business of open source</h2>
<p>So really, theme developers need only ask themselves whether they believe in open source and wish to support and benefit from it or work with a closed source / proprietary operation. Matt touched on this during the WordPress Weekly discussion in context of proprietary themes with Joomla, &#8220;Joomla has said anything goes and it seems to be the situation that premium themes are really crowding out the free resources. Which kind of makes sense if you align the economic incentives where you&#8217;re actually disincentivizing anyone to make open source stuff, eventually what&#8217;s going to happen is over-time the community will be more and more commercial.&#8221;</p>
<p>Over the long-term proprietary business models that seek to create demand by exclusivity are doomed to failure when competing against the shared resource model of open source. If you look at the largest and most influential software companies of the world you see integration with open source on some level. Early adopters like Unix and IBM gave heaps of foundation code to Linux and Eclipse respectively. Other companies have seen this shift and are adapting their existing business models to the new reality.  Adobe has released parts or all of their development frameworks to the community, although I don&#8217;t see them doing this for Photoshop to Gimp any time soon. Even Microsoft is slowly shifting towards a software-as-a-service  business model which can contribute and benefit from open source. They all realize that with the development technologies available to the world today, anyone can build a competitive product that offers 80 &#8211; 90% of the functionality. Each in their own way have wisely chosen to be a part of the solution rather than a competitor.</p>
<h2>Why do you believe in open source?</h2>
<p>David also made a bold statement that &#8220;Theme developers and plugin developers only believe in open source when they can make a business from it.&#8221; while true, is a highly flawed argument. I have made a successful business using open source products but my prices are based on the services I provide, not the products I use. Any overhead of product licenses incurred would be passed directly on to the customer. I believe in open source because it is the right thing to do:</p>
<ul>
<li>The majority of websites developed by Idealien Studios are built using open source software such as WordPress, PHP and mySQL. In each of these cases I can justify how a particular open-source tool is as good or better than a proprietary alternative.</li>
<li>I am fully knowledgeable / capable of working with other closed source platforms. Yet in the absense of a direct requirement by a client to use a closed source technologies, my preference is open source.</li>
<li>I believe in open source for the same reasons that I believe in the value of a public education system. Sharing knowledge, information and opportunity with anyone who wants it is the right thing to do.</li>
<li>As much as I build websites for people, I strive to build tools and technologies that enable my clients to be self-sufficient. This probably has something to do with my upbringing with two parents for teachers and a desire interact with people who can get more from working with me than just the end product. After all, life is not about the destination but the journey.</li>
</ul>
<h2>Why is WordPress wonderful?</h2>
<p>I think WordPress has built a perfect balance between capitalistic goals and social obligations. The .com site is an implementation of the open source tools that the .org provides for free to the world. There are other tools starting to come to market (<a title="DimDim" href="http://www.dimdim.com/">DimDim</a>, <a title="Screencast.com" href="http://www.screencast.com/">Screencast.com</a> / <a title="Jing" href="http://www.jingproject.com/">Jing</a>) emulating this model.</p>
<p>WordPress has shown &#8211; both in the past with the plugin repository and now again with this new theme repository &#8211; what their stance is on open source and that they are willing to reward those who share their vision by prominant placement on WP.org which can result in a significant amount of traffic. The best analogy that Matt made during the conversation on WordPress Weekly was to compare this situation to ones that Google encounters with people getting bent out of shape about changes their algorithms (in response to the very same people trying to &#8220;game&#8221; the system). Neither Google nor WordPress is stopping you from doing anything you want with your own site or sites you build or maintain for clients. Both of them are saying that if you want to be supported by them or get a share of the significant amount of eyeballs that can come from their respective sites, you&#8217;ll have to agree to play by their rules.</p>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/commited-to-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Premium or Proprietary Themes?</title>
		<link>http://idealienstudios.com/blog/wordpress/premium-or-proprietary/</link>
		<comments>http://idealienstudios.com/blog/wordpress/premium-or-proprietary/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 21:55:38 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://idealienstudios.com/?p=182</guid>
		<description><![CDATA[Premium implies being inherrently better than the alternatives. Proprietary is an accurate representation of the licensing restrictions. Which one is better or right?]]></description>
			<content:encoded><![CDATA[<p>There has been a flurry of discussion lately within the WordPress community as 200+ themes were removed from the <a title="Wordpress Themes Directory" href="http://wordpress.org/extend/themes/">WordPress Themes Directory</a>. Had Matt Mullenweg and the other parties involved in this action done a better job of disclosing the details of how / why this was being done in advance, I doubt as much controversy would have been stirred up. The bulk of the issues relate to the fact that WordPress is a <a title="GPL" href="http://www.gnu.org/copyleft/gpl.html">General Public License</a> (GPL) software and many people have conflicting interpretations / points of view about how one can or cannot make a viable business within that intellectual property landscape.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="173" height="60" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" class="alignright"><param name="id" value="LastFramePlayer" /><param name="align" value="top" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#EEF9C1" /><param name="wmode" value="transparent" /><param name="src" value="http://www.talkshoe.com/resources/talkshoe/images/swf/lastEpisodePlayer.swf?fileUrl=http://recordings.talkshoe.com/TC-34224/TS-173505.mp3" /><embed id="LastFramePlayer" type="application/x-shockwave-flash" width="173" height="60" src="http://www.talkshoe.com/resources/talkshoe/images/swf/lastEpisodePlayer.swf?fileUrl=http://recordings.talkshoe.com/TC-34224/TS-173505.mp3" wmode="transparent" bgcolor="#EEF9C1" quality="high" allowfullscreen="false" allowscriptaccess="always" align="top" class="alignright"></embed></object>In order to shed some light on the details involved in the situation, Matt spent over two hours yesterday on a special edition of <a title="Wordpress Weekly" href="http://www.talkshoe.com/talkshoe/web/talkCast.jsp?masterId=34224&amp;cmd=tc">WordPress Weekly</a> to answer any and all questions put forth by the community. If you have the time to listen to it the entire conversation it is worthwhile (accessible in the embedded audio player to the right). A good deal of the discussion could be applied to any open-soure project.</p>
<p>I started to transcribe a few of the questions / responses that I felt were noteworthy and ended up with 4+ pages of notes. Rather than create a Neal Stephenson-esque post, I&#8217;m going to break it down into several pieces over posts in the days ahead.<span id="more-182"></span></p>
<h2>Do you get what you pay for?</h2>
<p>The question was asked, &#8220;Have premium themes furthered the development of themes as a whole?&#8221; and Matt made note of the fact that premium implies it is inherrently better than the alternatives. This is not necessarily the case, especially over the long-term. When you begin to look at the restrictions that are written into most of these purchase agreements, they restrict what you can / cannot do with the theme you purchased. His preference would be to use the term <em>proprietary</em> themes as it is a more accurate representation of the non-GPL licensing restrictions. The GPL always has been about protecting the freedoms of end users, not preventing developers from making a profit. Matt quoted the four fundamental guidelines in context of this conversation:</p>
<ol>
<li>The Freedom to run the program for any purpose.</li>
<li>The freedom to study how the program works and adapt it to your needs.<br />
Access to the source code is a pre-condition for this.</li>
<li>Freedom to redistribute copies so you can help your neighbour.</li>
<li>Freedom to improve the program, release your modified versions in general to the public.</li>
</ol>
<p><img class="size-medium alignleft wp-image-189" title="Kubrick Screenshot" src="http://idealienstudios.com/wp-content/uploads/blogwptheme_kubrick-150x150.jpg" />The third and fourth elements are particularily damaging given the themes are derivitive works from WordPress. The litmus test for this is to ask whether something will run without the original work and  a theme would certainly not display the content from a database without all of the WordPress functions. Matt drew on the contrasting examples from a developer perspective of the &#8220;<a href="http://www.soothbrush.com/wordpress-magazine-themes/">premium magazine themes</a>&#8221; versus Kubrick which is the default theme for WordPress installations.</p>
<blockquote><div>If I want to build on top of a cool magazine theme is, I have to basically start from scratch and in fact be very careful not to be too close to what I&#8217;m trying to emulate. Compare that to some of the free themes that have rocked the WordPress world in their time. Including the one we all know and love now, Kubrick. Instantly on top of Kubrick there are a bunch of things that people just start copying and pasting the code and tweak it and make it better. You have this really fast innovation.</p>
<p>I don&#8217;t know if any of you guys remember the very first Kubrick versus what we eventually put into WordPress; it changed significantly. What happend was an open source community developed around it and started tweaking the design, the code, everything like that. I think that is sort of a  good example, and there have been many others since then,  of where you really get the benefits of open source. Both in the quality, the users and the developers benefit because the developers get people helping him out making it easier and better. The users get this rapid innovation and a lot of themes based around the things they like.</p></div>
</blockquote>
<p>What I believe has been missed in the current controversy surrounding theme removal from the WordPress.org site is that these actions were all taken with the same overall guideline in order to stay true to the root concept / philosophy of open-source that WordPress came from. Everyone is free to do what they want with the software, including creating a fork version of their own if they truly disagree that the approach Automattic has taken the platform. Just the same way as they would be able to compete with WordPress.com by launching their own WordPress MU installation. All Matt has suggested is that, &#8220;Ultimately it&#8217;s about freedom. Not talking about whether it is illegal or not to do these things. All I&#8217;m talking about is WordPress.org, the site we run and host, do we want this stuff in there and that&#8217;s all I&#8217;ll really speak of authoritatively.&#8221;</p>
<p>In the coming days I intend to take this discussion towards more extended concepts surrounding WordPress including:</p>
<ul>
<li>How a theme designer can structure their files to fit the theme gallery approval requirements.</li>
<li>What business models based around WordPress Matt believes are viable</li>
<li>How much community involvement exists with the development process of WordPress.org</li>
<li>Matt Mullenweg&#8217;s true conspiracy theory which I am in complete support of!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://idealienstudios.com/blog/wordpress/premium-or-proprietary/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

