<?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>Thoughts From Eric &#187; WordPress</title>
	<atom:link href="http://meyerweb.com/eric/thoughts/category/tech/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://meyerweb.com/eric/thoughts</link>
	<description>Things that Eric A. Meyer, CSS expert, writes about on his personal Web site; it&#039;s largely Web standards and Web technology, but also various bits of culture, politics, personal observations, and other miscellaneous stuff</description>
	<lastBuildDate>Wed, 08 May 2013 19:05:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Correcting Corrupted Characters</title>
		<link>http://meyerweb.com/eric/thoughts/2009/11/19/correcting-corrupted-characters/</link>
		<comments>http://meyerweb.com/eric/thoughts/2009/11/19/correcting-corrupted-characters/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 14:12:10 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/?p=1214</guid>
		<description><![CDATA[At some point, for some reason, all my UTF-8 characters in WordPress got mangled into ISO-8859-1 equivalents.  I need help figuring out a way to change them all back.]]></description>
				<content:encoded><![CDATA[<p>
At some point, for some reason I cannot quite fathom, a WordPress or PHP or mySQL or some other upgrade took all of my WordPress database&#8217;s UTF-8 and translated it to (I believe) ISO-8859-1 and then dumped the result back right back into the database.  So <a href="http://meyerweb.com/eric/thoughts/2009/01/22/using-http-headers-to-serve-styles/#comment-438043">&#8220;Emil Björklund&#8221; became &#8220;Emil Bj&Atilde;&para;rklund&#8221;</a>.  <del datetime="2009-11-19T22:00:09+00:00">(If those looked the same to you, then I see &#8220;B&Atilde;&para;rklund&#8221; for the second one, and you should tell me which browser and OS you&#8217;re using in the comments</del>.)  This happened all throughout the WordPress database, including to commonly-used characters like &#8216;smart&#8217; quotes, both single and double; em and en dashes; ellipses; and so on.  It also apparently happened in all the DB fields, so not only were posts and comments affected, but commenters&#8217; names as well (for example).
</p>
<p>
And I&#8217;m pretty sure this isn&#8217;t just a case of the correct characters lurking in the DB and being downsampled on their way to me, as I have WordPress configured to use UTF-8, the site&#8217;s <code>head</code> contains a <code>meta</code> that declares UTF-8, and a peek at the HTTP response headers shows that I&#8217;m serving UTF-8.  Of course, I&#8217;m not really expert at this, so it&#8217;s possible that I&#8217;ve misunderstood or misinterpreted, well, just about anything.  To be honest, I find it deeply objectionable that this kind of stuff is still a problem here on the eve of 2010, and in general, enduring the effluvia of erroneous encoding makes my temples throb in a distinctly unhealthy fashion.
</p>
<p>
Anyway.  Moving on.
</p>
<p>
I found <a href="http://wordpress.org/extend/plugins/search-and-replace/">a search-and-replace plugin</a>&#8212;ironically enough, one written by a person whose name contains a character that would currently be corrupted in my database&#8212;that lets me fix the errors I know about, one at a time.  But it&#8217;s a sure bet there are going to be tons of these things littered all over the place and I&#8217;m not likely to find them all, let alone be able to fix them all by hand, one find-and-replace at a time.
</p>
<p>
What I need is a WordPress plugin or something that will find the erroneous character strings in various fields and turn them back into good old UTF-8.  Failing that, I need a good table that shows the ISO-8859-1 equivalents of as many UTF-8 characters as possible, or else a way to generate that table for myself.  With that table in hand, I at least have a chance of writing a plugin to go through and undo the mess.  I might even have it monitor the DB to see if it happens again, and give me a big &#8220;Clean up!&#8221; button if it does.
</p>
<p>
So: anyone got some pointers they could share, information that might help, even code that might make the whole thing go away?
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2009/11/19/correcting-corrupted-characters/feed/</wfw:commentRss>
		<slash:comments>72</slash:comments>
		</item>
		<item>
		<title>MW Latest Tweet 1.1b2</title>
		<link>http://meyerweb.com/eric/thoughts/2008/12/08/mw-latest-tweet-11b2/</link>
		<comments>http://meyerweb.com/eric/thoughts/2008/12/08/mw-latest-tweet-11b2/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 18:59:38 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/?p=967</guid>
		<description><![CDATA[Now available: <a href="http://meyerweb.com/eric/tools/wordpress/mw_latest_tweet.html">MW Latest Tweet</a> 1.1b2, now with debug-mode toggle links and improved auto-linking code.]]></description>
				<content:encoded><![CDATA[<p>
Now available: <a href="http://meyerweb.com/eric/tools/wordpress/mw_latest_tweet.html">MW Latest Tweet</a> 1.1b2.  The only real difference between this version and the previous is better auto-link routines, thanks largely to a PHP4-ified version of <a href="http://josephscott.org/">Joseph Scott</a>&#8216;s <a href="http://josephscott.org/archives/2008/11/makeitlink-detecting-urls-in-text-and-making-them-links/">recently released MakeItLink PHP class</a>.  I tightened up some related code as well, thanks to my newfound understanding of just what the heck a &#8220;callback function&#8221; actually does, and how it can be useful.  And anonymous functions, too!
</p>
<p>
Also, there is an &#8220;enter debug mode&#8221; link at the bottom of the administrative panel for the plugin.  It&#8217;s <em>very</em> cleverly matched with an &#8220;exit debug mode&#8221; link when you&#8217;re in debug mode.  These links do just what they sound like they should do.  Debug mode itself, introduced in the previous beta, is unchanged (except maybe cosmetically).
</p>
<p>
In case anyone&#8217;s interested in seeing how I use the text-replacement strings on  meyerweb, here&#8217;s what I have in that <code>textarea</code>, formatted slightly for readability:
</p>

<pre><code>
&lt;div class="panel"&gt;
&lt;h4&gt;Recently Tweeted&lt;/h4&gt;
&lt;p class="more"&gt;
&lt;a href="http://twitter.com/%%USER_SCREEN_NAME%%"&gt;see more&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
%%TEXT%% &lt;small&gt;&#8211;tweeted %%CREATED_AT%%&lt;/small&gt;
&lt;/p&gt;
&lt;/div&gt;
</code></pre>

<p>
There were some reports of incompatibility between this plugin and early WordPress 2.7 betas.  Word is it&#8217;s working fine with the latest beta.  I probably won&#8217;t fix any incompatibilities until 2.7 final ships, but if anyone spots something they absolutely know will be a problem in 2.7 final, let me know.  Thanks!
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2008/12/08/mw-latest-tweet-11b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MW Latest Tweet 1.1b1</title>
		<link>http://meyerweb.com/eric/thoughts/2008/09/04/mw-latest-tweet-11b1/</link>
		<comments>http://meyerweb.com/eric/thoughts/2008/09/04/mw-latest-tweet-11b1/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 15:02:58 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/?p=934</guid>
		<description><![CDATA[There's a new beta of <a href="http://meyerweb.com/eric/tools/wordpress/mw_latest_tweet.html">MW Latest Tweet</a> available.  It does four new things.  Four and a half if you count the new options setting as a half.]]></description>
				<content:encoded><![CDATA[<p>
There&#8217;s a new beta of <a href="http://meyerweb.com/eric/tools/wordpress/mw_latest_tweet.html">MW Latest Tweet</a> available.  It does four new things.  Four and a half if you count the new options setting as a half.
</p>

<ol>
<li><p>All the files are in the <tt>mw_latest_tweet</tt> directory now, instead of having the plugin PHP outside of that directory like 1.0 did.  Yeah, I know, that should&#8217;ve been the case all along.  Sorry!  Learning on the job here.</p>
<p>If you&#8217;re upgrading from 1.0, you should probably delete the 1.0 file and directory outright before uploading the 1.1b1 directory.  Alternatively, you should be able to upload 1.1b1, deactivate 1.0, activate 1.1b1, and then delete just the 1.0 PHP file.  I haven&#8217;t tried that, so I don&#8217;t know if it will actually work, but it seems like it should.</p></li>
<li><p>URLs within a tweet are turned into hyperlinks for easy clickin&#8217;.  To go with this new feature, there&#8217;s a new option on the settings page to either shorten displayed URLs, like twitter.com does, or to not shorten them.  The default is to shorten, which means any URL 29 or more characters long gets shortened to 27 characters and gains a trailing ellipsis.  Again, like Twitter does it&#8212;although I used an ellipsis entity and not three periods.</p>
<p>Note that if you upgrade from 1.0 to 1.1b1, this setting may default to &#8220;No&#8221; instead of &#8220;Yes&#8221;.  I&#8217;m not sure why, but it&#8217;s a pretty low-priority item right now.</p></li>
<li><p>On a related note, @names are autolinked as well.  I&#8217;m using the pattern <code>[A-Za-z0-9_]</code> since that&#8217;s what Twitter says are valid characters for a username even though if you type in a <a href="http://www.typography.com/ask/showBlog.php?blogID=122">grawlix</a> on the signup page it will tell you, in nice bold green letters, that it&#8217;s available.</p></li>
<li><p>If you want to see everything the plugin has cached, append <tt>&#038;debug</tt> to the end of the plugin&#8217;s setting page URL and hit return.  You&#8217;ll get the settings page with a dump of the cached data at the end.  This is clumsy and will be much less so before 1.1 final.  I&#8217;m thinking click a link, enter debug mode.  Probably won&#8217;t go all AJAXy, though you never know.</p></li>
</ol>

<p>
So that&#8217;s the state of things.  Let me know if anything breaks.
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2008/09/04/mw-latest-tweet-11b1/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Subverting WordPress</title>
		<link>http://meyerweb.com/eric/thoughts/2008/09/03/subverting-wordpress/</link>
		<comments>http://meyerweb.com/eric/thoughts/2008/09/03/subverting-wordpress/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 00:48:44 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/?p=931</guid>
		<description><![CDATA[I need a little help with WordPress and subversion, if someone could spare the cycles to assist a newb.  (Which would be me.)]]></description>
				<content:encoded><![CDATA[<p>
I&#8217;m going to get back to posting here in just a bit with word of conference appearances (some overseas), plugin updates, and a small elegy, but first I need a little help with WordPress and subversion, if someone could spare the cycles to assist a newb.  (Which would be me.)
</p>
<p>
So I have meyerweb&#8217;s WordPress install all subversion-managed.  The only problem is that there are three core files I&#8217;ve had to hack (reasons upon request) and that makes updating really icky.  I fire off&#8230;
</p>
<pre>
svn sw http://svn.automattic.com/wordpress/tags/2.6.1/ .
</pre>
<p>
&#8230;(where <tt>2.6.1</tt> is replaced with whatever the latest version is) and it updates everything.  For my custom-altered files, though, I get diff files and a <tt>.mine</tt> file that has my old copy and then a copy that&#8217;s littered with diff markers, which cause PHP error-crashes, which takes down the site.  At least until I go in and copy the <tt>.mine</tt> files over the diffed-up files.
</p>
<p>
So: how do I do some kind of local checkin of the altered files so that I don&#8217;t attempt to post them back to the WordPress codebase (these are very specialized hacks) but future WordPress updates don&#8217;t break my site?  For extra ideal points, it would be great if those files were updated with my changes merged into the files.  If it helps, the files thus affected are <tt>/wp-blog-header.php</tt>, <tt>/wp-includes/classes.php</tt>, and <tt>/wp-admin/edit-form-advanced.php</tt>.  Thanks for any help!
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2008/09/03/subverting-wordpress/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Excerpts Exacted; Shielding the Admin</title>
		<link>http://meyerweb.com/eric/thoughts/2008/06/12/excerpts-exacted-shielding-the-admin/</link>
		<comments>http://meyerweb.com/eric/thoughts/2008/06/12/excerpts-exacted-shielding-the-admin/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 13:43:51 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/?p=911</guid>
		<description><![CDATA[The excerpt-exacting plugin I requested has been created and released!  Also, a request for help with a plugin I've written but would like very much to improve.]]></description>
				<content:encoded><![CDATA[<p>
In response to <a href="http://meyerweb.com/eric/thoughts/2008/06/10/wanted-excerpt-exacter/">my request</a>, the indomitable <a href="http://hamstu.com/">Hamish Macpherson</a> has created <a href="http://hamstu.com/uploads/NeverForgetcerpt.zip">NeverForgetcerpt</a>, a plugin for WordPress 2.5+ that will warn you if you&#8217;re about to publish a post that lacks an excerpt.  I&#8217;m already using it on meyerweb and it&#8217;s working like a charm.  He&#8217;s also expressed interest in the idea of a plugin that does that and also warns you if you forgot to add tags or categories, so stay tuned.  Meantime, all hail Hamish!
</p>
<p>
I have another plugin request, but in this case I&#8217;m looking for help in modifying something I&#8217;ve already done.  Or half-done, maybe.
</p>
<p>
I don&#8217;t know about you, but I get a <strong>lot</strong> of comment spam.  As I type this sentence, <a href="http://akismet.com/">Akismet</a> has stopped 837,806 spam attempts in total.  A false positive makes it past Akismet and my other defenses to land in the moderation queue about once every four days, on average.
</p>
<p>
Some of those false positives are really, really, <em>really</em> easy to spot, and they get marked as spam in order to help improve the recognition algorithms.  Others are hard to evaluate just by looking at the comment.  Many are trackbacks from sites in langauges I can&#8217;t read, and others that I can read look legit enough.  In such cases, I usually go visit the author&#8217;s URL to see if it looks spammy or not.
</p>
<p>
Now, the way I used to do this was to right-click on the blog link, copy the URL of the target, open a new browser tab, and paste the URL into the address bar.  Why?  To prevent my WP admin URL from landing in the referer logs of a potentially unscrupulous site owner.  But sometimes I forget to do all that, and just click.  I figured, well, why not stop fighting the tendency to just click and write a plugin that routes all outbound links through a redirect service?
</p>
<p>
So I did.  You can <a href="http://meyerweb.com/eric/tools/wordpress/mw_url_obscurify.php.zip">grab it for yourself</a> if you want, but if you do, understand that it&#8217;s pretty clunky right now.  Which is the part I&#8217;d like help fixing.
</p>
<p>
The heart of the plugin is simplicity itself:
</p>

<pre>
if (is_admin_page()) {
	add_filter('get_comment_author_url','_mw_obscurify',5);
}

function _mw_obscurify($url) {
	if ($url) return 'http://google.com/url?q=' . $url;
}
</pre>

<p>
There&#8217;s a little more to it than that (specifically, the routine <code>is_admin_page()</code>, which I got from someone else&#8217;s plugin and wish now I could remember whose it was) but that&#8217;s the core.  So any time the URL of a comment author is fetched, it&#8217;s prepended to turn it into a Google redirect.
</p>
<p>
That&#8217;s true for both <code>href</code> values and displayed URLs, though, which is the clunky part.  The end result is that on comments from the aforementioned mighty Hamish, for example, I get the following markup on the &#8220;Comments&#8221; page:
</p>

<pre>
&lt;a href="http://google.com/url?q=http://hamstu.com"&gt;

http://google.com/url?q=http://hamstu.com&lt;/a&gt;

</pre>

<p>
What I&#8217;d very much prefer is:
</p>

<pre>
&lt;a href="http://google.com/url?q=http://hamstu.com"&gt;

http://hamstu.com&lt;/a&gt;

</pre>

<p>
Or even:
</p>

<pre>
&lt;a href="http://google.com/url?q=http://hamstu.com"&gt;
hamstu.com&lt;/a&gt;
</pre>

<p>
So what I&#8217;d like to know is if there&#8217;s any way to make that happen short of rewriting and replacing <code>get_comment_author_url</code>, which I&#8217;d prefer not to do since it could change in future versions of WordPress and I&#8217;m not particularly interested in turning a basic plugin into a continuing maintenance headache.  I mean, I will if absolutely necessary, but I&#8217;d like to find a better way if there is one.  Thus the request for help.
</p>
<p>
Also, are there better redirect strategies than using Google the way I have?  It&#8217;s very slightly annoying that I have to click through the Google redirect page, and though I absolutely understand why they do that, I&#8217;d love to find an automatic redirect that wouldn&#8217;t expose my referer to the target site.  Anyone know of one, or have a related sharp idea?
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2008/06/12/excerpts-exacted-shielding-the-admin/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Wanted: Excerpt Exacter</title>
		<link>http://meyerweb.com/eric/thoughts/2008/06/10/wanted-excerpt-exacter/</link>
		<comments>http://meyerweb.com/eric/thoughts/2008/06/10/wanted-excerpt-exacter/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 02:23:01 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/?p=910</guid>
		<description><![CDATA[I keep forgetting to write excerpts for my posts, so I'm looking for someone to write a WordPress plugin that watches my back.]]></description>
				<content:encoded><![CDATA[<p>
So after I once again published <a href="http://meyerweb.com/eric/thoughts/2008/06/10/caught-in-the-camera-eye/">a post</a> without filling in the excerpt, thus forcing me to go back to fill it in later, I <a href="http://twitter.com/meyerweb/statuses/831561584">tweeted</a> in a fit of pique:
</p>

<blockquote cite="http://twitter.com/meyerweb/statuses/831561584">
<p>
I need a WordPress plugin that won&#8217;t let me publish a post until I&#8217;ve filled in the excerpt field. Anyone got one?
</p>
</blockquote>

<p>
To which I got a whole lot of responses saying, in effect, &#8220;Oooo!  Good idea!  I need that too!  Let me know when you find one!&#8221;  Some of them came from people running fairly high-profile blogs.  The need clearly exists.  A couple of responses were of the &#8220;I could do that!&#8221; variety, so I thought I&#8217;d post here so as to describe how I think it ought to work from the user&#8217;s perspective, and then we can hash things out in comments and someone can code it up and make everyone happy.
</p>
<p>
So really what I want is, when I push the &#8220;Publish&#8221; button in WordPress, the plugin checks to see if there&#8217;s an excerpt.  If not, one of two things happens:
</p>

<ol>
<li><p>The plugin throws up a warning dialog telling me that I&#8217;m about to post without an excerpt (<em>again</em>).  If I say &#8220;Okay&#8221;, it goes ahead with publishing.  If I say &#8220;Cancel&#8221;, it returns me right back to where I was, which is the &#8220;Write Post&#8221; page, with all the data intact and unaltered.</p></li>
<li><p>The plugin returns me to the &#8220;Write Post&#8221; page with all data intact and unaltered, and puts an error box at the top of the page telling me I forgot to write an excerpt (<em>again</em>) and that it won&#8217;t let me publish until I fix the problem.</p></li>
</ol>

<p>
One or the other.  I think I like #1 a little better, but I&#8217;d be good either way.  I&#8217;m open to other approaches as well, but I don&#8217;t think the plugin should rely on JavaScript, as that means leaving out people who don&#8217;t enable JavaScript or post from JS-incapable devices.
</p>
<p>
I would do this myself, but I&#8217;m a little wary of the &#8220;return to the page with all data intact and unaltered&#8221; bit, which I would imagine is pretty easy to mess up.  Thus I&#8217;m putting it up here as a semi-Lazyweb post so that someone else, someone with more experience with WordPress and plugin authoring, can do it right and quickly.
</p>
<p>
Okay, who&#8217;s on it?
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2008/06/10/wanted-excerpt-exacter/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>WordPress Adminimize and Latest Tweet Plugins</title>
		<link>http://meyerweb.com/eric/thoughts/2008/05/27/wordpress-adminimize-and-latest-tweet-plugins/</link>
		<comments>http://meyerweb.com/eric/thoughts/2008/05/27/wordpress-adminimize-and-latest-tweet-plugins/#comments</comments>
		<pubDate>Tue, 27 May 2008 18:37:20 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/?p=904</guid>
		<description><![CDATA[Just because the world hasn't suffered enough bad PHP coding, I released two WordPress plugins today.  One pares down some of the admin UI, and the other is a Twitter plugin.]]></description>
				<content:encoded><![CDATA[<p>
Just because the world hasn&#8217;t suffered enough bad PHP coding, I released two WordPress plugins today.  One pares down some of the admin UI, and the other is a Twitter plugin.  Because the world doesn&#8217;t have enough of <em>those</em>, either.  You can find links to them on my <a href="http://meyerweb.com/eric/tools/wordpress/">WordPress Plugins and Hacks</a> (but I repeat myself) page, or if you can go straight to their respective pages, which I&#8217;ll link here in just a second.
</p>
<p>
Okay, second&#8217;s up!
</p>

<dl>

<dt><a href="http://meyerweb.com/eric/tools/wordpress/mw_adminimize.html">MW Adminimize</a> (currently v0.5)</dt>
<dd>
<p>
This plugin pares down the page-topping links interface that shows up on every WordPress administration page.  I got tired of seeing my blog name in Big Huge Letters all the time, and I kept forgetting that the &#8220;Dashboard&#8221; link was hidden up in that black bar.  So I fiddled with some arrays and wrote some CSS, and got something that chews up less screen real estate while also being easier for me to use.  Maybe you&#8217;ll feel the same, in which case, enjoy the plugin.
</p>
<p>
In addition to that, I pared down some of the elements of the &#8220;Write Post&#8221; page so that they took up a bit less space, and compressed the stuff around the post title&#8217;s input field.  Those styles are marginally less stable and may cause weirdness for you.  If so, sorry.  Let me know what goes south and I&#8217;ll try to get it fixed in a future version.
</p>
<p>
Oh, and I also included a CSS rule that makes the background shading of moderated comments more obvious, though not in my usual eye-scarring fashion.  It&#8217;s just a little darker and notably redder.  That doesn&#8217;t have much of anything to do with minimizing the admin UI, but I thought it was a huge improvement.  I might take it out in a future version if the crowd shouts otherwise.
</p>
</dd>

<dt><a href="http://meyerweb.com/eric/tools/wordpress/mw_latest_tweet.html">MW Latest Tweet</a> (currently v1.0)</dt>
<dd>
<p>
This one does what you&#8217;d probably guess: shows the latest tweet.  Why not just use something like <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a>?  Actually, <a href="http://twitter.com/meyerweb/statuses/817596203">I tweeted about that</a>.  A further survey of the options available turned up nothing that was quite what I wanted.  So of course I started hacking away.
</p>
<p>
The basic mechanism is that any time a page that calls this plugin is loaded, it either returns the last-cached tweet or asks Twitter for the latest tweets so it can cache the latest of them.  If Twitter fails to respond (I know, what are the odds?), you still get the cached tweet.  This is similar to <a href="http://www.sleepydisco.co.uk/plugins/simpletwitter/">SimpleTwitter</a>, from which I took much inspiration, but is more advanced in a number of ways.  Among the options I wanted to have and thus created was having &#8220;human time&#8221; intervals as an option, and also the ability to filter out @replies (because I personally wanted to display my latest broadcast tweet, not my latest reply).  While I was at it, I decided I&#8217;d throw in the ability to define your own XHTML output, so that if the plugin failed there wouldn&#8217;t be partial or mangled markup shoved into your pages.  Also, since I cache the whole of the latest tweet, you have all kinds of stuff you can output should you so desire.  It&#8217;s all documented on <a href="http://meyerweb.com/eric/tools/wordpress/mw_latest_tweet.html">the plugin&#8217;s page</a>.
</p>
<p>
This is <em>not</em> a widget, because I&#8217;ve never written one and didn&#8217;t have time to learn (due to all the time I was burning just trying to write the plugin).  You have to edit your template/web page PHP in order to call it.  That&#8217;s just the kind of <acronym title="Do It Yourself">DIY</acronym> guy I fly.  Er, I am.
</p>
<p>
Also, I&#8217;m a wee tiny bit proud of how I styled the <code>label</code>s on the plugin&#8217;s Settings page.  I&#8217;ll probably write that up in a separate post.
</p>
</dd>

</dl>

<p>
That&#8217;s about it.  If anything goes wrong or is unclear, please do let me know in the comments.  Share and enjoy!
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2008/05/27/wordpress-adminimize-and-latest-tweet-plugins/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Wanted: Akismet Warning Plugin</title>
		<link>http://meyerweb.com/eric/thoughts/2007/02/04/wanted-akismet-warning-plugin/</link>
		<comments>http://meyerweb.com/eric/thoughts/2007/02/04/wanted-akismet-warning-plugin/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 01:20:42 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2007/02/04/wanted-akismet-warning-plugin/</guid>
		<description><![CDATA[In search of a WP 2.x plugin that notifies a commenter when their comment has been condemned to the <a href="http://akismet.com/">Akismet</a> queue.]]></description>
				<content:encoded><![CDATA[<p>
Okay, with my WordPress install mostly stabilized (I even fixed the archive paging!), I have a <a href="http://www.lazyweb.org/">LazyWeb</a> request for all you WP hackers.  What I want is very simple:  a WP 2.x plugin that notifies a commenter when their comment has been condemned to the <a href="http://akismet.com/">Akismet</a> queue.  I&#8217;ve had a few legitimate comments suffer that fate, and I imagine there have been more I never saw, so it&#8217;s something I&#8217;d really like to have (and something I think other people would also find useful).
</p>
<p>
At the most basic level, all I really want is for the plugin to <code>die()</code> with a message telling the commenter that their comment has been Akismetted and that they should contact the site administrator about it if they&#8217;re legitimate.  If instead of dying it gave that message upon returning them to the post on which they commented, the way &#8220;Your message is awaiting moderation&#8221; works, that would be extra-cool.  Either way, it obviously only fires if the comment has been marked <code>spam</code>.
</p>
<p>
I&#8217;m guessing this is a pretty simple plugin to write.  I did attempt to write it myself, but was spectacularly unsuccessful in the attempt.  The really frustrating part is that I think I got close to making it work, but, in the end, failed badly.  Then I asked for plugin help on IRC, but nobody noticed.  So I&#8217;m throwing the request out to the audience here to see what y&#8217;all can do.  Thanks to anyone who can help!
</p>
<p>
<strong>Update 5 Feb 07:</strong> <a href="http://markjaquith.com/">Mark Jaquith</a> has come through with <a href="http://txfx.net/code/wordpress/antispam-collateral-condolences/">Antispam Collateral Condolences</a>, a plugin that does exactly what I requested.  It can put up the warning either as a JavaScript alert box, or a message embedded in the page upon returning them to the post on which they commented.  Totally, completely awesome.  You rock, Mark!
</p>]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2007/02/04/wanted-akismet-warning-plugin/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Fixing My WordPress Install</title>
		<link>http://meyerweb.com/eric/thoughts/2007/02/01/fixing-my-wordpress-install/</link>
		<comments>http://meyerweb.com/eric/thoughts/2007/02/01/fixing-my-wordpress-install/#comments</comments>
		<pubDate>Thu, 01 Feb 2007 16:57:59 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2007/02/01/795/</guid>
		<description><![CDATA[Or, how and why I hacked WordPress core files to get my site working again.]]></description>
				<content:encoded><![CDATA[<p>
Okay, so my &#8220;Whole Magilla&#8221; <a href="http://meyerweb.com/feeds/">feeds</a>&#8212;both full-content and summary&#8212;are working again, and the <a href="http://meyerweb.com/eric/thoughts/">main archive page</a> actually shows content.  The problem in both cases, as I mentioned in <a href="http://meyerweb.com/eric/thoughts/2007/01/29/wp-21-breakage/">my previous post</a>, was that WordPress&#8217; code was throwing 404 responses.  In the case of the archive page, it would literally put up a 404 page generated by WordPress, instead of list the most recent posts.  For the Magilla feeds, the RSS files were being served up, but with HTTP 404 headers.  In feed readers that respected HTTP headers, like Firefox or NetNewsWire (and probably most others), that meant the feeds were broken.  Other feeds, such as the tech-only feed, were unbroken, but of course the most popular feeds are the Magilla feeds.
</p>
<p>
In the end, <a href="http://alexking.org/blog/2006/03/13/changes-in-wp-20">a post from Alex King</a> showed me the way to a &#8220;fix&#8221;.  I put that word in quotes because this is really more of a hack.  No, actually, it&#8217;s just gross, but it works.  In order to get WP to stop throwing inappropriate 404s, I commented out lines 35 through 135 of <tt>classes.php</tt> in the WordPress core.  Here&#8217;s the beginning and end of the block I commented out:
</p>
<pre>if (! empty($rewrite)) {
   // If we match a rewrite rule, this will be cleared.
   $error = '404';

[...a ton of redacted lines...]

      $this->did_permalink = false;
   }
}
</pre>
<p>
There you go: with one hundred lines of code commented out, my feeds and archive page work again.  This is <em>not</em> a good idea, but it&#8217;s all I could figure out to do.  Obviously, having modified a core file, I&#8217;m taking a chance that this won&#8217;t cause other problems.  So far I haven&#8217;t seen any, but you never know.  I&#8217;m also making upgrades much harder on myself, given that the new core file won&#8217;t have my modifications.
</p>
<p>
Similarly, I commented out the <tt>mod_rewrite.c</tt> block WP added to the end of my <tt>.htaccess</tt> file, so that I can use my own rewrites and not invoke WP&#8217;s rewriting.  With every upgrade, I&#8217;ll have to check that file to make sure the block didn&#8217;t get added back.
</p>
<p>
I&#8217;m mostly posting this as a reference for anyone who might run into similar problems with their WP 2.x installation.  It&#8217;s my hope that a future version of WP will offer some kind of hook or option that will let me easily disable WP&#8217;s rewriting and error handling code, since I already have a web server that&#8217;s configured to do those things for me.  I don&#8217;t mind if it&#8217;s a hook that I can address via a plugin as opposed to an option in the preferences, but I&#8217;d like to have it.  It would make WP a little more attractive to power users as well, since they&#8217;d know that they could do their own rewriting and error handling without having to fight with WP&#8217;s internals.
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2007/02/01/fixing-my-wordpress-install/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>WP 2.1 Breakage</title>
		<link>http://meyerweb.com/eric/thoughts/2007/01/29/wp-21-breakage/</link>
		<comments>http://meyerweb.com/eric/thoughts/2007/01/29/wp-21-breakage/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 06:50:30 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2007/01/29/wp-21-breakage/</guid>
		<description><![CDATA[So I upgraded to WordPress 2.1, and it immediately broke stuff.  Yay!  Help?]]></description>
				<content:encoded><![CDATA[<p>
So I upgraded to WordPress 2.1, and it immediately broke stuff.  For example, check out the <a href="http://feedvalidator.org/check?url=http://meyerweb.com/eric/thoughts/rss2/summary">RSS feed validator&#8217;s results</a> for <a href="http://meyerweb.com/eric/thoughts/rss2/summary">the summary version of my all-posts feed</a> (<a href="http://meyerweb.com/eric/thoughts/rss2/full">full-content feed</a> validation <a href="http://feedvalidator.org/check?url=http://meyerweb.com/eric/thoughts/rss2/full">results</a>; same problem).  I think it&#8217;s just <em>so cool</em> how the software manages to get the sever to return a 404 for a file that&#8217;s clearly being served.
</p>
<p>
Of course, I only got to that point after commenting out the <code>IfModule mod_rewrite.c</code> stuff WP apparently tacked onto the end of my <tt>.htaccess</tt> file.  Before that, the above-referenced feed URLs just brought up the home page of the site while preserving the feed URL in the address bar.  <em>Keen.</em>
</p>
<p>
Exactly the same progression of trouble has applied to the Distractions feed, too.  At first the server (or WP) was filling in the home page, and now <a href="http://feedvalidator.org/check?url=http://meyerweb.com/eric/thoughts/recent-links/rss2">it returns the feed along with a 404 response</a>.
</p>
<p>
I&#8217;ve also had the same problems with <a href="http://meyerweb.com/eric/thoughts/">the main page of the post archive</a>&#8212;at first, it redirected to the home page.  Now it just returns a 404, although unlike the feeds, it doesn&#8217;t also create a full page to go with the 404.  At least, I don&#8217;t think it does.  I can&#8217;t see it, anyway.  A shame, too, that it does its own thing rather than use the 404 page I already defined in the <tt>.htaccess</tt> file.
</p>
<p>
Anyone have any guesses at all as to what&#8217;s going wrong, and how I can get WP to stop throwing around inappropriate 404s?  I assume this has something to do with my <tt>.htaccess</tt> file&#8217;s Rewrite rules&#8212;which worked just fine in WP 1.5.2, by the way&#8212;and the new error handling routines.  Or maybe it&#8217;s just the new error routines.
</p>
<p>
Oh, and while we&#8217;re at it, what&#8217;s the story on the &#8220;new tabbed editor&#8221; that&#8217;s supposed to let you &#8220;switch between WYSIWYG and code editing instantly while writing a post&#8221; that was mentioned in <a href="http://wordpress.org/development/2007/01/ella-21/">the WP 2.1 announcement</a>?  Because I&#8217;ll be switched if I can find it.
</p>
<p>
Ah, the joys of upgrading&#8230;
</p>
<p>
<strong>Addendum:</strong> anyone know of a quick and simple way to just disable WordPress&#8217; internal rewrite code, so I can go back to using my <tt>.htaccess</tt> file?  That might solve the problem just as well as trying to hack my way around the problem with WP, and a lot more simply.
</p>]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2007/01/29/wp-21-breakage/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Gatekeeper 1.5 rc5</title>
		<link>http://meyerweb.com/eric/thoughts/2006/03/01/gatekeeper-15-rc5/</link>
		<comments>http://meyerweb.com/eric/thoughts/2006/03/01/gatekeeper-15-rc5/#comments</comments>
		<pubDate>Wed, 01 Mar 2006 17:25:13 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2006/03/01/gatekeeper-15-rc5/</guid>
		<description><![CDATA[It only took most of a year for this to happen, but WP-Gatekeeper 1.5 RC5 is now available.  The only change is that it will now auto-add the challenge to any standard WordPress 1.5 install from the moment you activate the plugin.  Before now, this auto-insertion wasn&#8217;t working on any WordPress install that had gzipping [...]]]></description>
				<content:encoded><![CDATA[<p>
It only took most of a year for this to happen, but <a href="http://meyerweb.com/eric/tools/wordpress/wp-gatekeeper.html">WP-Gatekeeper</a> 1.5 RC5 is now available.  The only change is that it will now auto-add the challenge to any standard <a href="http://wordpress.org/">WordPress</a> 1.5 install from the moment you activate the plugin.  Before now, this auto-insertion wasn&#8217;t working on any WordPress install that had gzipping turned on, as many do.  A heap of thanks to <a href="http://dunck.us/anabasis/">Jeremy Dunck</a>, who first <a href="http://dunck.us/anabasis/archives/2005/11/05/details-on-wp-gatekeeper-15-rc4s-auto-injection-bug/">identified the problem</a>; and <a href="http://andy.wordpress.com/">Andy Skelton</a>, who showed me how to solve it.
</p>
<p>
For those who joined the party in the long silence since RC4, Gatekeeper is a WordPress plugin that lets you manage a series of challenge/response pairs.  The default challenge is &#8220;What color is an orange?&#8221; (correct response: &#8220;orange&#8221;), though you should definitely disable that one and add your own.  This helps stymie spambots, though of course it is easily defeated by a manual spammer&#8212;and they do exist&#8212;and it can do nothing to stop trackback spam.  I actually stopped using Gatekeeper on meyerweb when I installed <a href="http://akismet.com/">Akismet</a>, which may be good enough for most people.  For those who can&#8217;t or won&#8217;t run Akismet, though, Gatekeeper is a decent alternative.
</p>
<p>
Gatekeeper is technically a <a href="http://en.wikipedia.org/wiki/Captcha"><abbr title="Completely Automated Public Turing Test to Tell Computers and Humans Apart">CAPTCHA</abbr></a>, but it is a fully accessible CAPTCHA, as it uses no images.  It&#8217;s also highly configurable, allowing you to add as many challenges as you like and then rotating between them randomly.  I know of a few sites that are quite happy with Gatekeeper, and recently caught wind of a <a href="http://brehaut.net/blog/2005/12/22/django-gatekeeper-01/">Django implementation of the same concept</a>.
</p>
<p>
So it&#8217;s there and ready for use by those who are interested.  If I haven&#8217;t heard about any bugs within the next month or so, I&#8217;ll strip off the RC designation and go with 1.5 final.  And about time, too.
</p>
<p>
Note to WordPress 2.0.x users: I have no idea if WP-Gatekeeper 1.5 will work in WP2.  It may.  Then again, it may not.  I&#8217;d be interested to know either way.
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2006/03/01/gatekeeper-15-rc5/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Akismet</title>
		<link>http://meyerweb.com/eric/thoughts/2005/10/27/akismet/</link>
		<comments>http://meyerweb.com/eric/thoughts/2005/10/27/akismet/#comments</comments>
		<pubDate>Thu, 27 Oct 2005 04:21:28 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/10/27/akismet/</guid>
		<description><![CDATA[Thoughts on the new Akismet anti-spam plugin for WordPress.]]></description>
				<content:encoded><![CDATA[<p>
<a href="http://photomatt.net/" rel="friend colleague met">Matt Mullenweg</a> <a href="http://photomatt.net/2005/10/25/akismet-stops-spam/" title="Akismet Stops Spam">announced</a> <a href="http://akismet.com/" title="Stop Comment Spam and Trackback Spam &laquo; Akismet">Akismet</a> yesterday.  It&#8217;s a comment-spam defense system for <a href="http://wordpress.org/" title="WordPress &rsaquo; Free Blog Tool and Weblog Platform">WordPress</a>, and I&#8217;ve been using it for a few weeks now.  (This is why <a href="http://meyerweb.com/eric/tools/wordpress/wp-gatekeeper.html">Gatekeeper</a> disappeared from the site near the beginning of the month.)  It isn&#8217;t perfect, but it&#8217;s darned close, and it&#8217;s been getting better as time has progressed.  That&#8217;s one of the promised features: the longer it&#8217;s used and the more people who use it, the better it gets.
</p>
<p>
I don&#8217;t pretend to understand all the details of Akismet&#8217;s workings, although I have a fairly good idea of how it works.  I have some concerns, mostly in that it seems like spammers could poison the well by injecting tons of false &#8220;not spam&#8221; data into the service in order to get their messages through.  I also worry about attacks on the service itself.
</p>
<p>
Furthermore, I have to say it&#8217;s a bit frustrating that you have to have a <a href="http://wordpress.com/" title="wordpress.com">wordpress.com</a> API key, which means you have to have a wordpress.com account, which means it&#8217;s not a one-stop plug-and-play solution.  (Especially since getting an account is, currently, an invitation-only sort of thing.)  On the other hand, having to have an account probably confers some control advantages&#8212;if an account is found to be consistently marking things as &#8220;not spam&#8221; when everyone else is marking them spam, it can be kicked out of the service.
</p>
<p>
Some have raised privacy concerns because every comment submitted to your site gets analyzed by the Akismet service.  This doesn&#8217;t bother me, but it might some.
</p>
<p>
Overall, I&#8217;ve been pretty happy with Akismet.  It has let through less spam than Gatekeeper did in the weeks before I disabled it and all my other anti-spam measures to test out Akismet.  You&#8217;d think a Gatekeeper setup wouldn&#8217;t let anything through, but you&#8217;d be wrong; I assume there was a hole in my PHP.  Akismet may not be the end-all solution&#8212;after all, if it becomes effective enough, the spammers will have major incentives to defeat it, and will most likely find ways to do so&#8212;but it seems to be working very well for now.
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2005/10/27/akismet/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Comment Turbulence</title>
		<link>http://meyerweb.com/eric/thoughts/2005/07/30/comment-turbulence/</link>
		<comments>http://meyerweb.com/eric/thoughts/2005/07/30/comment-turbulence/#comments</comments>
		<pubDate>Sat, 30 Jul 2005 19:57:38 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/07/30/comment-turbulence/</guid>
		<description><![CDATA[Comments weren't working very well, but they should be better now.  I think.]]></description>
				<content:encoded><![CDATA[<p>
Some of you may have tried to comment recently and been hit with a &#8220;comments are closed for the time being&#8221; error.  That was Gatekeeper, actually, and it was being tripped even by valid responses to the Gatekeeper challenge.  The weird thing is that some people were able to comment, whereas others were not.  I have no idea why this was happening.
</p>
<p>
The point of this being to say that I&#8217;ve updated Gatekeeper to return a more helpful error message, and also believe some changes I made should make gatekeeper less random.  If I&#8217;m wrong and you get an error, please use the e-mail link in the error message to send the error to me.  If I&#8217;m right and you get no error, then no worries.
</p>
<p>
If I get a lot of error reports, I&#8217;ll hobble or disable Gatekeeper, but I hope it doesn&#8217;t come to that.  We&#8217;ll see.  In the meantime, my sincere apologies to anyone who got bitten by this bug, and I hope things will be better from here on out.
</p>]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2005/07/30/comment-turbulence/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Gatekeeper 1.5 rc4</title>
		<link>http://meyerweb.com/eric/thoughts/2005/07/11/gatekeeper-15-rc4/</link>
		<comments>http://meyerweb.com/eric/thoughts/2005/07/11/gatekeeper-15-rc4/#comments</comments>
		<pubDate>Mon, 11 Jul 2005 12:33:20 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/07/11/gatekeeper-15-rc4/</guid>
		<description><![CDATA[A revision of Gatekeeper.  Now it lets through pingsbacks and trackbacks.  Really!]]></description>
				<content:encoded><![CDATA[<p>
Now out the door: <a href="http://meyerweb.com/eric/tools/wordpress/wp-gatekeeper.html">Gatekeeper</a> 1.5 RC4.  It really does (so far as I can tell) allow pingbacks and trackbacks, as this post&#8217;s comments show.  So if you tried to ping or track back to a post here in the last three months, and you <em>really</em> wanted it to show up here, you might want to try again.  If you&#8217;re running Gatekeeper and want tracks and pings to work, you should definitely upgrade to RC4.
</p>
<p>
The auto-addition of the challenge to forms that don&#8217;t contain the <code>pose_challenge</code> call is still broken.  &#8216;Jim&#8217; <a href="http://sonicchicken.net/blog/wordpress/2005/06/30/j-blue-theme-not-calling-gatekeeper_pose_challenge-automagically/">has more information and some examples of forms that fail to get an auto-added comment</a> if you&#8217;d like to take a crack at solving that particular puzzle.
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2005/07/11/gatekeeper-15-rc4/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Gatekeeper 1.5 rc3</title>
		<link>http://meyerweb.com/eric/thoughts/2005/06/14/gatekeeper-15-rc3/</link>
		<comments>http://meyerweb.com/eric/thoughts/2005/06/14/gatekeeper-15-rc3/#comments</comments>
		<pubDate>Tue, 14 Jun 2005 18:47:32 +0000</pubDate>
		<dc:creator>Eric Meyer</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/06/14/gatekeeper-15-rc3/</guid>
		<description><![CDATA[An update to WP-Gatekeeper, the anti-spam plugin for WordPress 1.5.]]></description>
				<content:encoded><![CDATA[<p>
It&#8217;s update day!  I just pushed<a href="http://meyerweb.com/eric/tools/wordpress/wp-gatekeeper.html"> WP-Gatekeeper</a> 1.5rc3 into the public eye.  The major change in this version is that Gatekeeper no longer prevents trackbacks (or pingbacks) from ever reaching your site.  See, before, it was effectively destroying all those without notice or appeal.  Now it just lets them through, whatever their content.
</p>
<p>
What this means is that Gatekeeper is, as it always was meant to be, a way to prevent comment-form spambots from succeeding.  Trackbots will now get through unless you take other steps, like disabling trackbacks or running another spam filter or something.  I&#8217;d actually like to see WordPress split tracks/pings apart from comments, and let you set their &#8220;always moderated&#8221; flags separately.  Thus you could set things up so all tracks and pings are moderated, but comment-form comments are not.  That would work great for me.  Maybe not so well for others, though.
</p>
<p>
Unfortunately, rc3 still has that problem where it doesn&#8217;t always automatically add a challenge to your comment forms, though you can still get the challenge by manually adding <code>gatekeeper_pose_challenge</code> to the comment forms in your theme.  My grep-fu (or maybe it&#8217;s my PHP-fu; or, hell, <em>both</em>) is weak; I can&#8217;t figure out why the routine fails.  Anyway, head on over to <a href="http://meyerweb.com/eric/tools/wordpress/wp-gatekeeper.html">the Gatekeeper page</a> if you&#8217;re interested, and especially if you can figure out why the auto-challenge routine is failing.  Thanks.
</p>
]]></content:encoded>
			<wfw:commentRss>http://meyerweb.com/eric/thoughts/2005/06/14/gatekeeper-15-rc3/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->