<?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>Austin Matzko&#039;s Blog &#187; WordPress</title>
	<atom:link href="http://austinmatzko.com/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://austinmatzko.com</link>
	<description>A blog about philosophy, Christianity, web development and whatever else I feel like writing about.</description>
	<lastBuildDate>Wed, 16 Mar 2011 17:14:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2-RC4-18391</generator>
		<item>
		<title>New Plugin: WordPress Appearance Date</title>
		<link>http://austinmatzko.com/2010/05/19/plugin-wps-appearance-date/</link>
		<comments>http://austinmatzko.com/2010/05/19/plugin-wps-appearance-date/#comments</comments>
		<pubDate>Thu, 20 May 2010 02:55:57 +0000</pubDate>
		<dc:creator>filosofo</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wp-appearance-date]]></category>

		<guid isPermaLink="false">http://austinmatzko.com/?p=660</guid>
		<description><![CDATA[I created this plugin because I needed a way to show posts earlier than their scheduled publish date. The client wanted posts to be scheduled for March, with everything that entails: March dates, appearing the March archives, etc., except appearing a week earlier. WP Appearance Date lets you set arbitrary dates for your posts to [...]]]></description>
			<content:encoded><![CDATA[<p>I created this plugin because I needed a way to show posts earlier than their scheduled publish date.  The client wanted posts to be scheduled for March, with everything that entails: March dates, appearing the March archives, etc., except appearing a week earlier.</p>
<p><a href="http://austinmatzko.com/wordpress-plugins/wp-appearance-date/">WP Appearance Date</a> lets you set arbitrary dates for your posts to appear, whether early or late.</p>
]]></content:encoded>
			<wfw:commentRss>http://austinmatzko.com/2010/05/19/plugin-wps-appearance-date/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>New Plugin: WP Delayed Email</title>
		<link>http://austinmatzko.com/2010/05/14/new-plugin-wp-delayed-email/</link>
		<comments>http://austinmatzko.com/2010/05/14/new-plugin-wp-delayed-email/#comments</comments>
		<pubDate>Fri, 14 May 2010 16:03:30 +0000</pubDate>
		<dc:creator>filosofo</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wp-delayed-mail]]></category>
		<category><![CDATA[wp_mail]]></category>

		<guid isPermaLink="false">http://austinmatzko.com/?p=647</guid>
		<description><![CDATA[I needed a way to send an email in the future, so I came up with WP Delayed Email. Activate the plugin, and you can call wp_delayed_mail() just like you would wp_mail(), except that you pass a timestamp argument for the time you want the email to be sent.]]></description>
			<content:encoded><![CDATA[<p>I needed a way to send an email in the future, so I came up with <a href="/wordpress-plugins/wp-delayed-mail/">WP Delayed Email</a>.  Activate the plugin, and you can call <code>wp_delayed_mail()</code> just like you would <code>wp_mail()</code>, except that you pass a timestamp argument for the time you want the email to be sent.</p>
]]></content:encoded>
			<wfw:commentRss>http://austinmatzko.com/2010/05/14/new-plugin-wp-delayed-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New WordPress Plugin: Custom Image Sizes</title>
		<link>http://austinmatzko.com/2010/03/11/plugin-creates-wordpress-thumbnails-on-demand/</link>
		<comments>http://austinmatzko.com/2010/03/11/plugin-creates-wordpress-thumbnails-on-demand/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 04:29:22 +0000</pubDate>
		<dc:creator>filosofo</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://ilfilosofo.com/?p=593</guid>
		<description><![CDATA[I make a lot of WordPress themes, and frequently clients want to associate a particular size of image with a post. You can do this easily with WordPress by using add_image_size() to define an image and then by calling wp_get_attachment_image() later to print the markup for that image. So for example, if I have an [...]]]></description>
			<content:encoded><![CDATA[<p>I make a lot of WordPress themes, and frequently clients want to associate a particular size of image with a post.  You can do this easily with WordPress by using <code>add_image_size()</code> to define an image and then by calling <code>wp_get_attachment_image()</code> later to print the markup for that image.</p>
<p>So for example, if I have an attachment image of ID number 123, I might do something like the following:</p>
<pre>

add_image_size( 'my-custom-size', 220, 180, true );
...
echo wp_get_attachment_image( 123, 'my-custom-size' );
</pre>
<p>Here, <code>add_image_size()</code> defines the custom thumbnail (in this example the arguments tell <code>add_image_size()</code> to make it 220 pixels wide, 180 high, and cropped), and </p>
<pre>echo wp_get_attachment_image()</pre>
<p>prints the markup of the image itself, <code>&lt;img&gt;</code> element and everything.</p>
<h3>The Problem</h3>
<p>This works great; WordPress even creates thumbnails in this size from now on.  The problem is that it doesn&#8217;t apply to pre-existing thumbnails.  And if people change their minds about what sizes they want their thumbnails to be (clients sometimes change their minds) you&#8217;re stuck with existing thumbnails of the wrong size.</p>
<p>In addition, if you call <code>wp_get_attachment_image( 123, 'my-custom-size' );</code> and that size doesn&#8217;t exist, WordPress just scales down the larger-sized original image, which might cause some performance issues.</p>
<h3>Solution: Custom Image Sizes</h3>
<p>My solution is the <a href="/blog/wordpress-plugins/filosofo-custom-image-sizes/">Custom Image Sizes plugin</a>.  You activate it, and if you call <code>wp_get_attachment_image()</code> and related functions for an attachment that doesn&#8217;t have that size, WordPress will create it on demand.</p>
<p>As a bonus, if you pass a width and height of the desired image to <code>wp_get_attachment_image()</code> (and related functions), you can create any size image.  So for example I could create a thumbnail 50 pixels wide by 40 high of attachment 123 with the following code, where <code>'50x40'<code> is <code>'[width]x[height]'</code>:</p>
<pre>

echo wp_get_attachment_image( 123, '50x40' );
</pre>
<h3>Download</h3>
<p>You can <a href="/blog/wordpress-plugins/filosofo-custom-image-sizes/">download the Custom Image Sizes plugin here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://austinmatzko.com/2010/03/11/plugin-creates-wordpress-thumbnails-on-demand/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>5 Things of Interest to Developers in the New WordPress 2.8</title>
		<link>http://pressedwords.com/stuff-new-in-wp-2-8-for-coders/</link>
		<comments>http://pressedwords.com/stuff-new-in-wp-2-8-for-coders/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 07:53:44 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/stuff-new-in-wp-2-8-for-coders/</guid>
		<description><![CDATA[With each major WordPress release, public changes like the new widgets administrative interface usually get all the glory. Here are some new features in WordPress 2.8 that most users won&#8217;t even know exist but you will probably care about, if you&#8217;re a WordPress developer. Widgets API The new widgets API lets you create widgets by [...]]]></description>
			<content:encoded><![CDATA[<p>With each major WordPress release, public changes like the new widgets administrative interface usually get all the glory.  Here are some new features in <a href="http://wordpress.org/development/2009/06/wordpress-28/">WordPress 2.8</a> that most users won&#8217;t even know exist but you will probably care about, if you&#8217;re a WordPress developer.</p>
<ul>
<li><strong>Widgets API</strong>  The <a href="http://codex.wordpress.org/WordPress_Widgets_Api">new widgets API</a> lets you create widgets by extending the <code>WP_Widget</code> class.  If making a multi-widget with the old system was like trying to piece together your kid&#8217;s bicycle on Christmas Eve, the new API rolls out the bike for you, tires inflated and topped with a bow.
</li>
<li><strong>SimplePie RSS</strong>  WordPress has been using the MagpieRSS class to parse RSS feeds.  Trouble is, Magpie development ground to a halt about four years ago, meaning when contemporary feeds flummoxed Magpie, flustered developers <a href="http://core.trac.wordpress.org/ticket/2864">fumed, futilely</a>.  In 2.8, WordPress now reads RSS with <a href="http://simplepie.org/">SimplePie</a>, an active project with a robust API.
</li>
<li><strong>New Escape Functions</strong>  A new set of functions consistently named and <a href="http://en.wikipedia.org/wiki/DRY">DRY</a>-er now make your strings sparkly clean and cuddly safe.
<ul>
<li><code>esc_sql()</code>: A wrapper for the <code>$wpdb-&gt;escape()</code> method.</li>
<li><code>esc_url()</code>: Clean up an untrustworthy URL for printing.</li>
<li><code>esc_url_raw()</code>: Clean up an untrustworthy URL for storing in the database.</li>
<li><code>esc_js()</code>: Make text suitable for printing as a JavaScript string.</li>
<li><code>esc_html()</code>: Convert characters that have special meaning in HTML (such as <code>&gt;</code> and <code>&lt;</code>) into their equivalent character entities.</li>
<li><code>esc_attr()</code>: Prepare text so that it&#8217;s safe to be used in an HTML element attribute.</li>
<li><code>esc_attr__()</code>, <code>esc_attr_e()</code>, and <code>esc_attr_x()</code>: Make a translatable string safe for printing as an HTML element attribute.  E.g.,<br />
<div class="filosofo-highlight-light php" style="font-family: monospace;"><br />
<span style="color: #66cc66;">&lt;</span>a href<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> title<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&lt;?php esc_attr_e('Translate me'); ?&gt;&quot;</span><span style="color: #66cc66;">&gt;</span><br />
&nbsp;</div>
</li>
<li><code>esc_html__()</code> and <code>esc_html_e()</code>: Like the last two, but for escaping HTML characters in general.</li>
</ul>
</li>
<li><strong><code>get_the_author_meta()</code></strong> User data is spread out between two database tables and has been accessed&#8212;until now&#8212;by a number of methods.  <a href="http://codex.wordpress.org/Template_Tags/the_author_meta"><code>get_the_author_meta()</code></a> retrieves user data with one easy-to-remember function.
</li>
<li><strong><code>the_post</code> Action Hook</strong> Called in <code>setup_postdata()</code>, the <code>the_post</code> action hook is one of those things that seems so obvious and so useful that you can&#8217;t believe it hasn&#8217;t existed until now.  At a crucial moment it passes the current global <code>$post</code> variable by reference: during <a href="http://codex.wordpress.org/The_Loop">the Loop</a> right after global variables are set but before they&#8217;re used in the template.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/stuff-new-in-wp-2-8-for-coders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paged Comments and the SEO Problem: A Solution</title>
		<link>http://pressedwords.com/solving-wordpress-seo-paged-comments-problem/</link>
		<comments>http://pressedwords.com/solving-wordpress-seo-paged-comments-problem/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 00:26:03 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/solving-wordpress-seo-paged-comments-problem/</guid>
		<description><![CDATA[The paged comments feature new in WordPress 2.7 is handy for reducing page size, but it introduces the search engine optimization (SEO) problem of putting the same content on different permalinks, as some have pointed out. That&#8217;s because the complete post would appear at all of these permalinks: http://example.com/my-post-permalink/ http://example.com/my-post-permalink/comment-page-1/ http://example.com/my-post-permalink/comment-page-2/ My solution in this [...]]]></description>
			<content:encoded><![CDATA[<p>The paged comments feature new in WordPress 2.7 is handy for reducing page size, but it introduces the search engine optimization (SEO) problem of putting the same content on different permalinks, as <a href="http://comox.textdrive.com/pipermail/wp-hackers/2008-December/023189.html">some have pointed out</a>. That&#8217;s because the complete post would appear at all of these permalinks:</p>
<p><code>http://example.com/my-post-permalink/</code><br />
<code>http://example.com/my-post-permalink/comment-page-1/</code><br />
<code>http://example.com/my-post-permalink/comment-page-2/</code></p>
<p>My solution in this short plugin is to have all but the main permalink show an excerpt of the post, with a link back to the permalink page.</p>
<div class="filosofo-highlight-light php" style="font-family: monospace;"><br />
<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<br />
<span style="color: #808080; font-style: italic;">/*<br />
&nbsp;Plugin Name: SEO for Paged Comments<br />
&nbsp;Version: 1.0<br />
&nbsp;Description: Reduce SEO problems when using WordPress's paged comments.<br />
&nbsp;Plugin URI: http://pressedwords.com/solving-wordpress-seo-paged-comments-problem/<br />
&nbsp;Author: Austin Matzko<br />
&nbsp;Author URI: http://www.pressedwords.com<br />
&nbsp;*/</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> seo_paged_comments_content_filter<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000">$t</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #ff0000">$cpage</span> <span style="color: #66cc66;">=</span> <span style="color: #000066;">intval</span><span style="color: #66cc66;">&#40;</span>get_query_var<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'cpage'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">!</span> <span style="color: #000066;">empty</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$cpage</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;remove_filter<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'the_content'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'seo_paged_comments_content_filter'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span style="color: #ff0000">$t</span> <span style="color: #66cc66;">=</span> get_the_excerpt<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span style="color: #ff0000">$t</span> <span style="color: #66cc66;">.=</span> <span style="color: #000066;">sprintf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&lt;p&gt;&lt;a href=&quot;%1$s&quot;&gt;%2$s&lt;/a&gt;&lt;/p&gt;'</span><span style="color: #66cc66;">,</span> get_permalink<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> get_the_title<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">return</span> <span style="color: #ff0000">$t</span><span style="color: #66cc66;">;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
add_filter<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'the_content'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'seo_paged_comments_content_filter'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
<br />
&nbsp;</div>
<p><strong>Download:</strong><br />
<a href='http://pressedwords.com/blog/uploads/2008/12/paged-comments-seo.zip'>paged-comments-seo.zip</a><br />
<a href='http://pressedwords.com/blog/uploads/2008/12/paged-comments-seo.tar.gz'>paged-comments-seo.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/solving-wordpress-seo-paged-comments-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Themes and Vagueness</title>
		<link>http://pressedwords.com/wordpress-themes-and-vagueness/</link>
		<comments>http://pressedwords.com/wordpress-themes-and-vagueness/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 18:05:35 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/wordpress-themes-and-vagueness/</guid>
		<description><![CDATA[Recently there&#8217;s been a kerfuffle in the WordPress blogosphere over the fact that WordPress.org suddenly removed 200 themes from the Extend repository, in order to make all themes comply with this apparently new stipulation: Themes for sites that support &#8220;premium&#8221; (non-GPL or compatible) themes will not be approved. Alister Cameron has written a post that&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Recently there&#8217;s been a kerfuffle in the WordPress blogosphere <a href="http://spectacu.la/wordpressorg-pull-200-gpl-themes/">over</a> <a href="http://justintadlock.com/archives/2008/12/11/automattic-putting-the-boot-to-premium-theme-developers">the</a> <a href="http://www.jeffro2pt0.com/why-were-200-wordpress-themes-removed">fact</a> that WordPress.org suddenly removed 200 themes from the Extend repository, in order to make all themes comply with <a href="http://wordpress.org/extend/themes/about/">this apparently new stipulation</a>:</p>
<blockquote><p>Themes for sites that support &#8220;premium&#8221; (non-GPL or compatible) themes will not be approved. </p>
</blockquote>
<p>Alister Cameron has written <a href="http://www.alistercameron.com/2008/12/14/matt-mullenweg-wordpress-gpl/">a post that&#8217;s excellent in describing the issue</a> (Matt Mullenweg, head of WordPress.org and the one who removed the themes, <a href="http://www.alistercameron.com/2008/12/14/matt-mullenweg-wordpress-gpl/#comment-19881">seems to like Cameron&#8217;s post too</a>). Here Cameron gets to the heart of the matter:</p>
<blockquote><p>If your theme was pulled and yet it was GPL licensed, there are only two options. Either it was a mistake (email Matt), or you were linking from it to a site that sold other themes that do contravene the GPL. If the latter is the case then you are in the awkward place of making the argument that Matt was wrong to defend the spirit of the GPL, beyond just the letter of it. </p>
</blockquote>
<p>Perhaps unintentionally Cameron highlights the problem with WordPress.org&#8217;s actions: the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL</a> does not really have a spirit.  The GPL is a license&#8212;a license that makes possible wonderful things, but still just a legal document.  When you start trying to defend spirits, you stray from interpretation of a legal document into divination.</p>
<p>What that really means is making judgment calls based on vague or ineffable criteria.  WordPress.org can do that because it pays the bills.  Legally and perhaps ethically it&#8217;s justified in excluding themes that overuse the color blue, if the corporation wants.  But in practice, excluding good GPL&#8217;d themes because their authors have sites that &#8220;support&#8221; non-GPL&#8217;d stuff will foster ill-will.  It will seem just as arbitrary as excluding a too-blue theme because the criteria are just as vague, and that arbitrariness will always seem like capriciousness to those on the receiving end of the stick.</p>
<p>In other words, it&#8217;s unclear what constitutes &#8220;support.&#8221;  According to comments on the posts to which I linked above, &#8220;support&#8221; meant just an ad for a premium theme developer.  What about blog posts that promote or otherwise offer aid to premium theme developers&#8212;does that taint a site with &#8220;support&#8221;?  No one should have to parse answers to questions like that.</p>
<p>We don&#8217;t need more vagueness.  One of the main reasons we have more or less precise legal documents and legal systems for their interpretation is that we want to establish confidence in the stability of the system.  We won&#8217;t invest serious time, money, or other resources when we don&#8217;t have confidence about whether our work will be contravened by a subjective judgment call.  Subjective judgment calls are fine for our own lives or the businesses that are under our purview.  But when it comes to a community, when it means possibly hurting others, there should be greater transparency and specificity regarding the criteria.</p>
<p>So WordPress.org should remove that clause forbidding sites that &#8220;support&#8221; non-GPL&#8217;d stuff, not because as an independent, non-profit organization it doesn&#8217;t have the right to do so (it does).  WordPress.org should remove that clause because it harms the WordPress community by introducing unnecessary arbitrariness. </p>
<p>Besides, good GPL&#8217;d themes&#8212;no matter who creates theme&#8212;are a benefit to the community.  We the community get a free theme, and since we&#8217;re adults we&#8217;re capable of deciding whether the theme author&#8217;s site is one that we think worthy of our attention.</p>
<p>There is a good amount of talent in the WordPress themes business.  If the Extend repository becomes hostile to theme authors of quality themes, then the talent will go somewhere else.  That hurts non-technical WordPress users, who benefit from a central repository that they know is free from spammy links and back-door code, and home to top-notch themes. </p>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/wordpress-themes-and-vagueness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monthly Archives Idea</title>
		<link>http://pressedwords.com/tabular-wordpress-archives/</link>
		<comments>http://pressedwords.com/tabular-wordpress-archives/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 04:05:22 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/tabular-wordpress-archives/</guid>
		<description><![CDATA[Charles Stricklin, WordPress Podcast guru, had an interesting idea for arranging monthly WordPress archives, which is basically to make an archives page like this.]]></description>
			<content:encoded><![CDATA[<p>Charles Stricklin, WordPress Podcast guru, <a href="http://charlesstricklin.com/2008/11/12/crafting-a-different-archives-template/">had an interesting idea for arranging monthly WordPress archives</a>, which is basically to make an archives page like this:</p>
<table>
<tbody>
<tr>
<th>2005</th>
<td><a></td>
<td><a href="http://www.example.com/2005/02/">Feb</a></td>
<td><a></td>
<td><a href="http://www.example.com/2005/04/">Apr</a></td>
<td><a></td>
<td><a href="http://www.example.com/2005/06/">Jun</a></td>
<td><a href="http://www.example.com/2005/07/">Jul</a></td>
<td><a href="http://www.example.com/2005/08/">Aug</a></td>
<td><a href="http://www.example.com/2005/09/">Sep</a></td>
<td><a href="http://www.example.com/2005/10/">Oct</a></td>
<td><a href="http://www.example.com/2005/11/">Nov</a></td>
<td><a href="http://www.example.com/2005/12/">Dec</a></td>
</tr>
<tr>
<th>2006</th>
<td><a href="http://www.example.com/2006/01/">Jan</a></td>
<td><a href="http://www.example.com/2006/02/">Feb</a></td>
<td><a href="http://www.example.com/2006/03/">Mar</a></td>
<td><a href="http://www.example.com/2006/04/">Apr</a></td>
<td><a href="http://www.example.com/2006/05/">May</a></td>
<td><a href="http://www.example.com/2006/06/">Jun</a></td>
<td><a href="http://www.example.com/2006/07/">Jul</a></td>
<td><a href="http://www.example.com/2006/08/">Aug</a></td>
<td><a href="http://www.example.com/2006/09/">Sep</a></td>
<td><a href="http://www.example.com/2006/10/">Oct</a></td>
<td><a href="http://www.example.com/2006/11/">Nov</a></td>
<td><a></td>
</tr>
<tr>
<th>2007</th>
<td><a href="http://www.example.com/2007/01/">Jan</a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a></td>
</tr>
<tr>
<th>2008</th>
<td><a href="http://www.example.com/2008/01/">Jan</a></td>
<td><a></td>
<td><a></td>
<td><a href="http://www.example.com/2008/04/">Apr</a></td>
<td><a></td>
<td><a href="http://www.example.com/2008/06/">Jun</a></td>
<td><a></td>
<td><a></td>
<td><a></td>
<td><a href="http://www.example.com/2008/10/">Oct</a></td>
<td><a></td>
<td><a></td>
</tr>
</tbody>
</table>
<p>Here&#8217;s how to do it just using the WordPress API (instead of direct database queries):</p>
<div class="filosofo-highlight-light php" style="font-family: monospace;"><br />
<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">!</span> <span style="color: #ff0000">$calendar</span> <span style="color: #66cc66;">=</span> wp_cache_get<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;year_month_archive&amp;#39;, &amp;#39;archive&amp;#39;) ) {</span><br />
     <span style="color: #ff0000">$calendar</span> <span style="color: #66cc66;">=</span> <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
     <span style="color: #ff0000">$year</span> <span style="color: #66cc66;">=</span> <span style="color: #000066;">date</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;Y&amp;#39;);</span><br />
     <span style="color: #ff0000">$mo_qry</span> <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WP_Query<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
     <span style="color: #ff0000">$yr_qry</span> <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WP_Query<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
     <span style="color: #b1b100;">do</span> <span style="color: #66cc66;">&#123;</span><br />
          <span style="color: #ff0000">$yr_qry</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;year&amp;#39; =&gt; $year, &amp;#39;showposts&amp;#39; =&gt; 1));</span><br />
          <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$yr_qry</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">have_posts</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
               <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$m</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">;</span> <span style="color: #ff0000">$m</span> <span style="color: #66cc66;">&lt;=</span> <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">;</span> <span style="color: #ff0000">$m</span><span style="color: #66cc66;">++</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
                    <span style="color: #ff0000">$mo_qry</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;year&amp;#39; =&gt; $year, &amp;#39;monthnum&amp;#39; =&gt; $m, &amp;#39;showposts&amp;#39; =&gt; 1));</span><br />
                    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$mo_qry</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">have_posts</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
                         <span style="color: #ff0000">$calendar</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000">$year</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000">$m</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">date</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;M&amp;#39;, mktime(1,1,1, $m, 1, $year)), get_month_link($year, $m));</span><br />
                    <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span><br />
                         <span style="color: #ff0000">$calendar</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000">$year</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000">$m</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #000066;">array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;&amp;#39;,&amp;#39;&amp;#39;);</span><br />
                    <span style="color: #66cc66;">&#125;</span><br />
               <span style="color: #66cc66;">&#125;</span><br />
          <span style="color: #66cc66;">&#125;</span><br />
          <span style="color: #ff0000">$year</span> <span style="color: #66cc66;">=</span> <span style="color: #000066;">intval</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000">$year</span> <span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
     <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$yr_qry</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">have_posts</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
     <span style="color: #000066;">ksort</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000">$calendar</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
     wp_cache_set<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span><span style="color: #808080; font-style: italic;">#39;year_month_archive&amp;#39;, $calendar, &amp;#39;archive&amp;#39;);</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
<span style="color: #66cc66;">&lt;</span>table<span style="color: #66cc66;">&gt;</span><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">foreach</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$calendar</span> <span style="color: #b1b100;">as</span> <span style="color: #ff0000">$year</span> <span style="color: #66cc66;">=&gt;</span> <span style="color: #ff0000">$m</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
     <span style="color: #66cc66;">&lt;</span>tr<span style="color: #66cc66;">&gt;&lt;</span>th<span style="color: #66cc66;">&gt;&lt;</span>?php <span style="color: #000066;">echo</span> <span style="color: #ff0000">$year</span><span style="color: #66cc66;">;</span> ?<span style="color: #66cc66;">&gt;&lt;/</span>th<span style="color: #66cc66;">&gt;</span><br />
     <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">foreach</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000">$m</span> <span style="color: #b1b100;">as</span> <span style="color: #ff0000">$data</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
          <span style="color: #66cc66;">&lt;</span>td<span style="color: #66cc66;">&gt;&lt;</span>a href<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&lt;?php echo $data[1]; ?&gt;&quot;</span><span style="color: #66cc66;">&gt;&lt;</span>?php <span style="color: #000066;">echo</span> <span style="color: #ff0000">$data</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">;</span> ?<span style="color: #66cc66;">&gt;&lt;/</span>a<span style="color: #66cc66;">&gt;&lt;/</span>td<span style="color: #66cc66;">&gt;</span>     <br />
     <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endforeach</span><span style="color: #66cc66;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
     <span style="color: #66cc66;">&lt;/</span>tr<span style="color: #66cc66;">&gt;</span><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endforeach</span><span style="color: #66cc66;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
<span style="color: #66cc66;">&lt;/</span>table<span style="color: #66cc66;">&gt;</span><br />
<br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/tabular-wordpress-archives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Halloween</title>
		<link>http://pressedwords.com/happy-halloween/</link>
		<comments>http://pressedwords.com/happy-halloween/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 01:38:56 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/happy-halloween/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://pressedwords.com/blog/uploads/2008/10/wp-pumpkin2.jpg" alt="WordPress Pumpkin" width="500" height="398" class="size-full wp-image-115" /></p>
<p><img src="http://pressedwords.com/blog/uploads/2008/10/wp-pumpkin1.jpg" alt="WordPress Pumpkin" width="500" height="648" class="size-full wp-image-116" /></p>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/happy-halloween/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does Google Discourage the use of WordPress Permalinks?</title>
		<link>http://pressedwords.com/google-not-attacking-wordpress-permalinks-per-se/</link>
		<comments>http://pressedwords.com/google-not-attacking-wordpress-permalinks-per-se/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 15:06:09 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/google-not-attacking-wordpress-permalinks-per-se/</guid>
		<description><![CDATA[A recent blog entry by Google&#8217;s Search Quality Team members Juliane Stiller and Kaspar Szymanski somewhat confusingly gives the impression that Google does not like WordPress-style permalinks. Does that mean I should avoid rewriting dynamic URLs at all? That&#8217;s our recommendation, unless your rewrites are limited to removing unnecessary parameters, or you are very diligent [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html">recent blog entry by Google&#8217;s Search Quality Team members Juliane Stiller and Kaspar Szymanski</a> somewhat confusingly gives the impression that Google does not like WordPress-style permalinks.  </p>
<blockquote><p><strong>Does that mean I should avoid rewriting dynamic URLs at all?</strong><br />
That&#8217;s our recommendation, unless your rewrites are limited to removing unnecessary parameters, or you are very diligent in removing all parameters that could cause problems. If you transform your dynamic URL to make it look static you should be aware that we might not be able to interpret the information correctly in all cases.</p>
</blockquote>
<p>A number of bloggers, including <a href="http://wordpressphilippines.org/blog/google-says-dont-use-pretty-permalinks/">Sophia Lucero at WordPress Philippines</a>, draw the conclusion that WordPress permalinks are harmful to PageRank.  However, the specific concerns mentioned by Stiller and Szymanski suggest they are not actually criticizing the standard use of WordPress permalinks.</p>
<p>Instead, the authors&#8217; overriding concern seems to be static URLs that &#8220;could cause [Google] to crawl the same piece of content needlessly via many different URLs,&#8221; and the examples they give are mainly of search queries.  </p>
<p>That&#8217;s not at all like a WordPress permalink for a blog post. A WordPress post has a one-to-one relationship with its permalink, meaning that only that content will be found at that permalink and that post will not appear at any other permalink.  Or at least that&#8217;s the way things should be on a WordPress blog: for a while <abbr title="search engine optimization">SEO</abbr> experts have recommended that the <em>complete</em> content for each blog post appear only at an individual post&#8217;s permalink.  In practice that means making sure that category archives, monthly archives, and the like should show only <em>excerpts</em> of a post, not the complete text.  Most modern WordPress themes do this, but some, especially older themes, do not.</p>
<p>The Google article gives a number of bad examples of &#8220;dynamic&#8221; URLs written as &#8220;static&#8221; URLs, including this one:<br />
<code>www.example.com/article/bin/answer.foo/en/3/98971298178906/URL</code><br />
The problem with this, say the authors, is that when crawling that link it is &#8220;difficult for us to understand that URL and 98971298178906 have nothing to do with the actual content which is returned via this URL.&#8221; (Here &#8220;98971298178906&#8243; is a session id).  The authors don&#8217;t even recommend simplifying the URL to something like <code>www.example.com/article/bin/answer.foo/en/3</code>:</p>
<blockquote><p>Although we are able to process this URL correctly, we would still discourage you from using this rewrite as it is hard to maintain and needs to be updated as soon as a new parameter is added to the original dynamic URL</p>
</blockquote>
<p>Again, the concern seems to be that the bad &#8220;permalink&#8221; example does not have a one-to-one relationship with the content.  &#8220;98971298178906&#8243; is particular to the site visitor, not the site&#8217;s content, and even &#8220;answer.foo/en/3&#8243; could change when that answer is no longer the third one.</p>
<p>So the main lesson a WordPress blogger should take from this is the old lesson of SEO: avoid duplicate content.  WordPress permalinks that are one-to-one with their content and have relevant keywords are good for SEO.  They combine the benefits of static URLs mentioned by the authors, such as higher click-through rate, without the deficits.</p>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/google-not-attacking-wordpress-permalinks-per-se/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who&#8217;s Using WordPress 5 Years Later</title>
		<link>http://pressedwords.com/percentage-using-wordpress-five-year-anniversary/</link>
		<comments>http://pressedwords.com/percentage-using-wordpress-five-year-anniversary/#comments</comments>
		<pubDate>Tue, 27 May 2008 15:35:23 +0000</pubDate>
		<dc:creator>Austin Matzko</dc:creator>
				<category><![CDATA[Pressed Words]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://pressedwords.com/percentage-using-wordpress-five-year-anniversary/</guid>
		<description><![CDATA[In honor of WordPress&#8217;s fifth birthday, I&#8217;ve surveyed about 6000 blogs to see how many are running WordPress. This is the same group that I queried back in January, when I created a spider that harvested the blogs from all of Technorati&#8217;s main blogging categories. CMS Count Percentage WordPress 2178 34.3 Unknown 1523 23.98 Blogger [...]]]></description>
			<content:encoded><![CDATA[<p>In honor of <a href="http://wordpress.org/development/2008/05/birthday-party/">WordPress&#8217;s fifth birthday</a>, I&#8217;ve surveyed about 6000 blogs to see how many are running WordPress.  This is the same group that I queried back in <a href="http://pressedwords.com/how-many-bloggers-use-each-version-of-wordpress/">January</a>, when I created a spider that harvested the blogs from all of Technorati&#8217;s main blogging categories. </p>
<p><img src="http://pressedwords.com/blog/uploads/2008/05/may2008cmspiechart.png" alt="" width="500" height="319" class="alignnone size-full wp-image-81" /></p>
<table>
<tr>
<th>CMS</th>
<th>Count</th>
<th>Percentage</th>
</tr>
<tr>
<td>WordPress</td>
<td>2178</td>
<td>34.3</td>
</tr>
<tr>
<td>Unknown</td>
<td>1523</td>
<td>23.98</td>
</tr>
<tr>
<td>Blogger</td>
<td>1207</td>
<td>19.01</td>
</tr>
<tr>
<td>Typepad</td>
<td>340</td>
<td>5.35</td>
</tr>
<tr>
<td>Movable Type</td>
<td>338</td>
<td>5.32</td>
</tr>
<tr>
<td>WordPress.com</td>
<td>136</td>
<td>2.14</td>
</tr>
</table>
<p>As you can see, WordPress dominates the known blogging platform world.  From the numbers below, it looks as though most active WordPress users are keeping updated.  </p>
<p><img src="http://pressedwords.com/blog/uploads/2008/05/may2008minorversions.png" alt="" width="500" height="184" class="alignnone size-full wp-image-79" /></p>
<p><img src="http://pressedwords.com/blog/uploads/2008/05/may2008majorversions.png" alt="" width="478" height="317" class="alignnone size-full wp-image-80" /></p>
]]></content:encoded>
			<wfw:commentRss>http://pressedwords.com/percentage-using-wordpress-five-year-anniversary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

