<?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>Business Mindhacks &#187; Wordpress Hack</title>
	<atom:link href="http://businessmindhacks.com/post/tag/wordpress-hack/feed" rel="self" type="application/rss+xml" />
	<link>http://businessmindhacks.com</link>
	<description>Thinking about your business on another level.</description>
	<lastBuildDate>Mon, 02 Apr 2012 18:42:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>10 Reasons To &#8220;Roll Your Own&#8221; TinyURL Using Wordpress</title>
		<link>http://businessmindhacks.com/post/10-reasons-to-roll-your-own-tinyurl-using-wordpress</link>
		<comments>http://businessmindhacks.com/post/10-reasons-to-roll-your-own-tinyurl-using-wordpress#comments</comments>
		<pubDate>Fri, 06 Mar 2009 17:37:55 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mindhacks]]></category>
		<category><![CDATA[is.gd]]></category>
		<category><![CDATA[Joel Comm]]></category>
		<category><![CDATA[Press This]]></category>
		<category><![CDATA[Press This Bookmarklet]]></category>
		<category><![CDATA[PressThis]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[redirect engine]]></category>
		<category><![CDATA[REUS]]></category>
		<category><![CDATA[Tinyurl]]></category>
		<category><![CDATA[tr.im]]></category>
		<category><![CDATA[TweetBurner]]></category>
		<category><![CDATA[TwitPwr]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[URL shortener]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Hack]]></category>
		<category><![CDATA[Wordpress stats]]></category>
		<category><![CDATA[Wordpress Theme]]></category>
		<category><![CDATA[Wp-Shortstats]]></category>

		<guid isPermaLink="false">http://businessmindhacks.com/post/10-reasons-to-roll-your-own-tinyurl-using-wordpress</guid>
		<description><![CDATA[My experiment with the Wordpress-Theme-based Redirect Engine/URL shortener (REUS) has kept me rather busy for almost a month now, but additional valuable insights were gained in the process. And even though this solution is initially a bit more labor intensive (taking only about 35 minutes or so to set up), creating a &#8220;Roll Your Own&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><img class="leftimg" src="/p/wordpress_med.gif" alt="" />My experiment with <a href="/post/building-your-own-tinyurl-in-less-than-1-hour-using-wordpress" target="_blank">the Wordpress-Theme-based Redirect Engine/URL shortener (REUS)</a> has kept me rather busy for almost a month now, but additional valuable insights were gained in the process. And even though this solution is initially a bit more labor intensive (taking only about 35 minutes or so to set up), creating a &#8220;Roll Your Own&#8221; Tinyurl-like service using a separate tweaked Wordpress install can immediately begin to pay dividends in a variety of ways:</p>
<p>1) <strong>I found a stats plugin to use that works well</strong> with the REUS install after a few custom tweaks. Some minor modifications to the database calls and the reporting page to allow for more tracking on recent links, and the WP-Shortstats plugin has been performing flawlessly. I have included it with custom changes in the new REUS .zip package (link at end of this post).</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/reus_shortstats.gif" alt="" width="482" height="177" /></p>
<p style="text-align: left;">Best thing is, <strong>the stats data belongs to YOU, no one can hold it hostage</strong> (unlike e.g. Budurl.com, which wants to only allow you to download your stats with a paid account). Also note that many 3rd party services&#8217; stats solutions tend to lack good comparative screens, overviews, or ordering by e.g. &#8220;all-time highest clicks&#8221;, and so forth:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/reus_alltime.gif" alt="" width="493" height="157" /></p>
<p style="text-align: left;">With REUS you can watch your clicks roll in in near real-time as shown here (you&#8217;ll have to hit refresh in the &#8220;Admin &gt; Dashboard &gt; Shortstats&#8221; screen to update). No fancy graphics like world maps, etc., but the information you really need to assess the success of your links:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/reus_timeline.gif" alt="" width="319" height="224" /></p>
<p>2) <strong>Using your own short domain looks custom and gets attention. </strong>As you can tell from the above screenshot, people get curious about your custom/novel shorterner URL, and navigate to the &#8220;/&#8221; root quite often on first use. To make this useful/profitable for you, one key manual update that needs to be made to the &#8220;/wordpress/wp-content/themes/redirect_engine/index.php&#8221; file is to set up redirection of &#8220;/&#8221; to your blog or other page of your choice.</p>
<p>So in my example an inquisitive user would type in &#8220;http://3on.us/&#8221;, which for my set-up redirects them to the original REUS post on my blog.</p>
<p>3) You can <strong>create links that you completely determine the URL appearance of</strong>, both as to the domain (which will seem pretty custom vs. the publicly available services), as well as to the link extension, which can now be at least semi-sensible:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/reus_recent.gif" alt="" width="315" height="172" /></p>
<p>Keep in mind that <strong>a non-sense link is harder to process for the brain, and &#8220;a confused mind always says No!&#8221; </strong>as they say. So people are less likely to click. Meaningful URLs do have higher click-through rates from what I can tell so far, and marketing savants such as StomperNet&#8217;s Brad Fallon seem to agree (and guys like him test everything!).</p>
<p>Here is another bit of proof. This screen cap is a stat taken from celebrity Internet marketer Joel Comm&#8217;s TwitPwr.com URL shortening service:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/twitpwr_stats.gif" alt="" width="493" height="89" /></p>
<p>What it shows is that the total average click-through for all TwitPwr.com links is just under 8 (about 160k / 20k), and his list of user includes some pretty illustrious company with largish follower counts. As my own stats screenshot from above shows, my REUS links have been pulling well above that on an average of about 1,000 followers over the last 4 weeks:</p>
<p><strong>147 links have been clicked 3438 times on Twitter and a few other sources, for an average of just under 24 clicks per link.</strong> Not bad (and yes, I did subtract out the &#8220;/&#8221; root inquiries and robots.txt hits; and robots.txt disallows all further search engine bot access).</p>
<p>Granted there are many variables that come into play that make a simple 1-to-1 comparison difficult, including the fact that Twitter users may be slightly more reluctant to click on TwitPwr.com links due to the slightly, shall we say, &#8220;promotional&#8221; nature of that service. But the numbers are still pretty convincing, especially given the follower advantage for many TwitPwr users.</p>
<p>4) <strong>URLs can be shortened further on the fly</strong> due to&#8230;</p>
<p><span id="more-184"></span></p>
<p>&#8230;Wordpress&#8217; post slug tolerance, e.g. &#8220;3on.us/roll-tinyurl&#8221; will still work as &#8220;3on.us/roll-t&#8221; in case you had to save even more space to fit into 140 characters on Twitter. By the way, if a duplicate match should arise due to lobbing off too much from a link extension, Wordpress/REUS will default to the earliest URL/post found:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/reus_cutlinkpre.gif" alt="" width="538" height="129" /></p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/reus_cutlinklength.gif" alt="" width="534" height="80" /></p>
<p>5) Just about <strong>all of the other URL shortener Bookmarklets disallow for creating custom extensions, even if the main service does!</strong> To get this feature, you will have to manually copy/paste the URL to be shortened into their home page, etc. Try it out yourself with e.g. <a rel="nofollow" href="http://tr.im/download" target="_blank">tr.im, their bookmarklet</a> does not appear to allow for customizing the link the way that the tr.im Web interface does, and it cannot be edited after the initial save.</p>
<p>Whereas the REUS Wordpress-based solution leverages Wordpress&#8217; own &#8220;Press This&#8221; bookmarklet to make custom extensions without copy/paste possible (as described in the original post and the new install instructions).</p>
<p>6) <strong>By owning your own Tinyurl service, you know that your links/stats won&#8217;t one day go out of business</strong> (in this economy, you never know&#8230;), just as long as YOU are still in business. And you can back up all of your links and stats, and could even run them locally from your own computer, just in case you were forced to give up your main hosting account and could no longer afford the $10/year for the add-on domain used for your REUS install (let&#8217;s just assume right now that that will NEVER happen&#8230;).</p>
<p>7) To recap some of the benefits already described in the original post, with REUS you can<strong> create links as short or even shorter than the shortest http://is.gd etc. link,</strong> because you could choose to have the link extension only be one character, e.g. &#8220;http://3on.us/x&#8221; (limited supply of those of course).</p>
<p>Some of the services already waste an extra 2 characters or more in the domain name, e.g. &#8220;budurl.com&#8221;, &#8220;twurl.nl&#8221;, &#8220;twitpwr.com&#8221;, etc. With REUS, if you get yourself a 3 character .us domain to install on, you will have up to 16 charaters for the link extension and still be within Twitter&#8217;s 30 character link length limit.</p>
<p>I&#8217;ve also found that I was able to quickly commit to memory some of my most-used links with shorter/memorable names, so that I could easily type them in manually in certain situations, for example in some blog comments.</p>
<p>8) If you are using <strong>marketing related link tracker services such as aWeber.com or 1shoppingcart.com, you can in principle use your new REUS to replace those as well.</strong> For that type of use you would also not be constrained by the extension length as much (e.g. in Email), and could use even more descriptive link extensions, e.g. &#8220;http://3on.us/grab-your-free-copy-here&#8221;.</p>
<p>9) <strong>You are free of the various idiosyncracies of other 3rd party shortener services.</strong> For example, both Tinyurl and is.gd truncate your &#8220;#[anchor name/id]&#8221; on-page-anchor entensions (not sure why), like those used to direct straight to a specific comment on a blog post page.</p>
<p>10) I have <strong>built a character counter into the custom &#8220;press-this.php&#8221; file</strong> (called by the &#8220;Press-This&#8221; bookmarklet), that comes with the REUS distribution. This makes it faster to create exactly the right link length (after I found myself doing a lot of counting initially) that will still display without Twitter abbreviating your link with an &#8220;&#8230;&#8221; ellipsis. As already mentioned, in the case of my example domain &#8220;3on.us&#8221;, I have exactly 16 characters left to stay within Twitters 30 character limit.</p>
<p>All while typically having the link extension prepopulated with candidate terms and phrases from the post/page Title (if present in the Title tag) that can easily be edited down to the desired length.</p>
<p>&#8212;-</p>
<p>So, 10 good reasons to get your own REUS install. It&#8217;s completely free, no strings attached. If you use Twitter and care about the links you post there, you really might want to give it a whirl.</p>
<p>Here is the link for the updated REUS distribution:</p>
<p><a rel="nofollow" href="http://businessmindhacks.com/v/redirect_engine.zip" target="_blank">http://businessmindhacks.com/v/redirect_engine.zip</a></p>
<p>Here is the <a rel="nofollow" href="/post/building-your-own-tinyurl-in-less-than-1-hour-using-wordpress" target="_blank">link to the original REUS post again</a>, as well as a link to an <a rel="nofollow" href="/install-your-own-tinyurl" target="_blank">&#8220;install instructions only, no rationales&#8221; version.</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://businessmindhacks.com/post/10-reasons-to-roll-your-own-tinyurl-using-wordpress/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Building Your Own TinyURL In Less Than 1 Hour Using Wordpress</title>
		<link>http://businessmindhacks.com/post/building-your-own-tinyurl-in-less-than-1-hour-using-wordpress</link>
		<comments>http://businessmindhacks.com/post/building-your-own-tinyurl-in-less-than-1-hour-using-wordpress#comments</comments>
		<pubDate>Tue, 27 Jan 2009 00:09:44 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mindhacks]]></category>
		<category><![CDATA[Press This]]></category>
		<category><![CDATA[Press This Bookmarklet]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[redirect engine]]></category>
		<category><![CDATA[REUS]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[URL shortener]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Hack]]></category>
		<category><![CDATA[Wordpress stats]]></category>
		<category><![CDATA[Wordpress Theme]]></category>

		<guid isPermaLink="false">http://businessmindhacks.com/post/building-your-own-tinyurl-in-less-than-1-hour-using-wordpress</guid>
		<description><![CDATA[2nd UPDATE: Since this post came out, I have written a follow-up post digging deeper into my subsequent findings and explaining 10 Reasons To “Roll Your Own” TinyURL Using Wordpress, and have also created an &#8220;install instructions only, no rationales&#8221; version for your convenience.
&#8212;
OK, haven&#8217;t posted in a little while, in part because I had [...]]]></description>
			<content:encoded><![CDATA[<p><img class="leftimg" src="/p/wordpress_med.gif" alt="" /><strong>2nd UPDATE:</strong> Since this post came out, I have written a follow-up post digging deeper into my subsequent findings and explaining <a href="/post/10-reasons-to-roll-your-own-tinyurl-using-wordpress">10 Reasons To “Roll Your Own” TinyURL Using Wordpress</a>, and have also created an <a rel="nofollow" href="/install-your-own-tinyurl" target="_blank">&#8220;install instructions only, no rationales&#8221; version</a> for your convenience.</p>
<p>&#8212;</p>
<p>OK, haven&#8217;t posted in a little while, in part because I had been working on some pretty cool techy stuff. Here is the first result from it:</p>
<p>Have you been <strong>using URL shortening/redirection services like TinyURL, is.gd, etc. in order to send lengthy links to friends in a shorter format</strong>, or to fit them into the space-constricted posting fields on micro-blogging services such as Twitter?</p>
<p>If you have, and you&#8217;re a marketer, you have probably been wishing that you could track the number of clicks on those links you post to Twitter, or improve the appearance of the link text, etc.</p>
<p>While there are <strong>some services available that allow you to do some of that, such as Tweetburner.com which creates a trackable &#8220;http://twurl.nl/&#8230;&#8221; style link, they almost all have one drawback or another</strong>, e.g. they 1) don&#8217;t allow for custom link text (Tweetburner), 2) sometimes truncate your original link&#8217;s # anchors if present (is.gd), 3) don&#8217;t allow for tracking, 4) want your Twitter credentials to allow for tracking, and <strong>5) they all end up kind of owning your data.</strong></p>
<p>So I figured, if there was <strong>a fast/cheap solution to set the same thing up for yourself, so that you control all of the variables, that would be a good thing, no?</strong> You will see in a moment how it can be accomplished using a basic Wordpress 2.7 blogging software installation. Now you&#8217;ll likely still use other services to auto-shorten links as well, but when you want to make it count, and want your shortened link on your terms, I bet you&#8217;ll like what I have cooked up for you.</p>
<h2>The Instructions</h2>
<p>Let&#8217;s take it step-by-step. Note that I won&#8217;t get too in depth with basic technical explanations, I&#8217;ll assume that you are familiar with FTP and have already done a standard Wordpress install before. If you&#8217;re new to Wordpress, I&#8217;d recommend hiring someone to do these steps for you, they should bill you for at most 1 hour as you will see.</p>
<p>I am posting the expected time to complete with each step:</p>
<p>1) You will need to <strong>buy a .us domain to install as an add-on domain with one of your existing hosting accounts.</strong> I used a <a rel="nofollow" href="http://Bluehost.com" target="_blank">http://Bluehost.com</a> account for this, they have reasonable prices and service, but use any hosting/domain provider you would like. Note that it&#8217;s not worth getting a separate hosting account just for this engine, and an add-on domain should only cost about $8-10 per year.</p>
<p>Search for short, 3-4 character .us domains, as you&#8217;ll obviously want to save space. I found that there are still plenty of 3 character semi- to non-sensical domain names available with one or two numerals in the name, e.g. I picked 3on.us for my test case.</p>
<p>Once purchased, &#8230;</p>
<p><span id="more-182"></span></p>
<p>&#8230; install the domain in your hosting account&#8217;s domain manager as an &#8220;Add-on domain&#8221;, which should also create a new directory under your public_html directory, in my case I simply chose &#8220;3on&#8221;. This is what the process looked like in a CPanel hosting account:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_addondomain.gif" alt="" width="501" height="336" /></p>
<p>&#8212; Time: 10 minutes (depending on how long you search around for a domain you like :).</p>
<p>2) Now simply <strong>download a copy of Wordpress (WP) 2.7, and install it on the newly created directory,</strong> so that the directory structure will read &#8220;/public_html/3on/wordpress/&#8230;&#8221; (structure shown below is how it should look in your FTP client program, obviously with your own directory name)</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_directories.gif" alt="" width="300" height="220" /></p>
<p>Go through a normal WP 2.7 install including setting up the database and editing wp-config.php, if you&#8217;re using Fantastico to automate this, just make sure that the install directory is the new one you want.</p>
<p>Either way, <strong>make sure you select option &#8220;no search engines&#8221; during the install,</strong> as this will avoid your stats getting falsified by frequent search engine hits on your redirect/link shortening engine. The &#8220;Settings &gt; Privacy&#8221; panel should later look as shown below, verify and if necessary adjust after the installation:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_privacy_settings.gif" alt="" width="481" height="133" /></p>
<p>&#8212; Time: 10 minutes.</p>
<p>3) Upon install, <strong>log into the WP admin panel, and edit &#8220;Settings &gt; General&#8221;</strong> as shown in the screenshot below (obviously with your own domain name).</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_general_settings.gif" alt="" width="566" height="98" /></p>
<p>You&#8217;ll also need to do one more manual step to copy the &#8220;/wordpress/index.php&#8221; into the new domain&#8217;s root directory, i.e. &#8220;/3on/index.php&#8221; and change the path inside the file as described in the <span class="setting-description">link right next to &#8220;Blog Address URL&#8221;</span>:</p>
<blockquote>
<p><span class="setting-description">Enter the address here if you want your blog homepage <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">to be different from the directory</a> you installed WordPress.</span></p>
</blockquote>
<p>The point being that you need your blog to respond at the domain level without any further path, i.e. &#8220;http://3on.us/&#8221; and NOT &#8220;http://3on.us/blog/&#8221;, etc. which would obviously be counterproductive to our link shortening agenda.</p>
<p>&#8212; Time: 2 minutes.</p>
<p>3) Now that Wordpress is installed, <strong>go to &#8220;Settings &gt; Permalinks&#8221;, and select &#8220;Custom Structure&#8221;, placing &#8220;/%postname%&#8221; into the field by that option.</strong> This will append your redirect &#8220;post&#8221; names directly to the domain, e.g. &#8220;http://3on.us/testlink&#8221; &#8212; Time: 1 minute.</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_permalink_settings.gif" alt="" width="463" height="106" /></p>
<p>&#8212; Time: 1 minute.</p>
<p>4) We&#8217;re now coming to the heart of the matter the modifications needed to have your Wordpress install act as a redirect engine. <strong>I&#8217;ve packaged the necessary files as a Wordpress Theme</strong>, download them here:</p>
<p><a rel="nofollow" href="http://businessmindhacks.com/v/redirect_engine.zip" target="_blank">http://businessmindhacks.com/v/redirect_engine.zip</a></p>
<p>Then <strong>extract the .zip file, and FTP upload the &#8220;redirect_engine&#8221; folder into your &#8220;/wordpress/wp-content/themes/&#8221; directory as you would any other theme.</strong> Activate the theme by going to &#8220;Appearance &gt; Themes&#8221;, then selecting &#8220;Wordpress REUS&#8221; by clicking on the theme&#8217;s screenshot or link, and finally clicking &#8220;Activate Wordpress REUS&#8221; in the upper right hand corner.</p>
<p>If you are interested in the code that makes the redirection work, look at the &#8220;single.php&#8221; file. It&#8217;s really quite simple. Also note that &#8220;page.php&#8221; contains the same code, so you can in principle use pages to create redirect links as well. However, you won&#8217;t be able to use the &#8220;Press This&#8221; bookmarklet we&#8217;re about to discuss to do so, as it defaults to &#8220;Post&#8221;. Use the &#8220;Pages &gt; Add&#8221; menu instead if you&#8217;re so inclined (e.g. to keep certain links separate from your everyday links).</p>
<p>&#8212; Time: 5 minutes.</p>
<p>5) Now that the redirection is in place, we just want to make it a bit more convenient. This is where leveraging Wordpress&#8217; &#8220;Press This&#8221; bookmarklet feature comes into play:</p>
<p>First, <strong>go to the &#8220;Tools &gt; Tools&#8221; menu, and there locate the &#8220;Press This&#8221; bookmarklet link</strong> as shown. Then drag &amp; drop it onto your Bookmarks Toolbar (in FireFox, which is the only browser I&#8217;ve tested this in, but IE should work similarly).</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_bookmarklet_link.gif" alt="" width="523" height="165" /></p>
<p>&#8212; Time: 1 minute.</p>
<p>6) You are now <strong>ready to test the new bookmarklet.</strong> Simply go to any web page you would like to shorten the URL for, and then click on the bookmarklet button in your Bookmarks Toolbar (obviously that Toolbar needs to be visible):</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_pressthis_bookmarklet.gif" alt="" width="480" height="94" /></p>
<p>You will see a popup as follows (and may have to give your new wordpress site permission to open pop-ups, you&#8217;ll want to do this):</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_pressthis_popup.gif" alt="" width="500" height="241" /></p>
<p>Note that you will have to be logged into your Wordpress install as &#8220;admin&#8221;, else you&#8217;ll be asked to log in first. <strong>Change the &#8220;post&#8221; title at the top to your desired link name,</strong> like in the following example (the post&#8217;s &#8220;slug&#8221;, which is the actual term for the link extension in Wordpress, is created automatically; note that any uppercase letters will be converted to lowercase and any spaces turned into a hyphen (-):</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_pressthis_linkname.gif" alt="" width="477" height="198" /></p>
<p style="text-align: left;">Then press the &#8220;Publish&#8221; button in the right bottom corner of the pop-up. Done! Your shortened redirect link has been created.</p>
<p style="text-align: left;">Note that the custom code for &#8220;single.php&#8221; arranges it so that the URL will automatically be parsed out of the &#8220;post&#8221; content (the live link shown above), while the link text (e.g. &#8220;Twitter Raising Money&#8230;&#8221; ) will be used as a post title/description in case you choose to pass this shortened URL on to Twitter. <strong>You can change this descriptive text in the form shown above, just make sure that you don&#8217;t accidentally delete the entire link</strong> (and thereby the underlying URL).</p>
<p style="text-align: left;">You will see the following output:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_tweetthis.gif" alt="" width="480" height="153" /></p>
<p style="text-align: left;">Now the &#8220;TwitterThis!&#8221; option won&#8217;t be visible to you yet until you do one more custom change to Wordpress I&#8217;ll describe in a moment, but <strong>you will already be able to copy &amp; paste the newly created short link by right-clicking on &#8220;View Post&#8221;</strong> and selecting &#8220;Copy Link Location&#8221; (&#8220;Copy Shortcut&#8221; in IE):</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_copylink.gif" alt="" width="484" height="240" /></p>
<p style="text-align: left;">You will also be able to see you newly created &#8220;post&#8221; that is the basis of your short link in the &#8220;Posts &gt; Edit&#8221; screen, where you can do the same copy &amp; paste maneuver as above from the &#8220;View&#8221; option that appears as you hover over the individual post row in the table:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_posts.gif" alt="" width="483" height="363" /></p>
<p style="text-align: left;">Or click the &#8220;View&#8221; link to test that your redirect actually works.</p>
<p style="text-align: left;">Note that you can also rename the bookmarklet itself in your browser&#8217;s Bookmark Toolbar by right-clicking, selecting &#8220;Properties&#8221;, and changing the &#8220;Name&#8221; to your desired option, e.g. &#8220;MyShortLink&#8221; in case you&#8217;re using the &#8220;Press This&#8221; bookmarklet for other Wordpress blog installations or yours.</p>
<p style="text-align: left;">OK, this was the long version of testing, let&#8217;s say it takes you a few minutes the first time. Once you have done it several times, this should take you only about 30 seconds anymore.</p>
<p style="text-align: left;">&#8212; Time: 3 minutes.</p>
<p style="text-align: left;">7) Now comes <strong>the last step to enable the &#8220;TwitterThis!&#8221; option on the &#8220;Press This&#8221; result pop-up</strong> as was shown above. Locate the file &#8220;press-this.php&#8221; in the directory &#8220;/wordpress/wp-admin&#8221; and rename it to &#8220;press-this.php.old&#8221; or similar. Now go to the REUS theme directory &#8220;/wordpress/wp-content/themes/redirect_engine&#8221; and find the &#8220;press-this.php&#8221; file there. Then copy that file into the &#8220;/wordpress/wp-admin&#8221; directory.</p>
<p style="text-align: left;">Done. I tried to find a more elegant solution for this step, but there didn&#8217;t seem to be any as far as adding the extra bit of code through the Wordpress action model, etc. If you know of a way that this could have been done in a more automated way, please contact me. Thanks.</p>
<p style="text-align: left;">Alright, here is what you will see when you click on &#8220;TwitterThis!&#8221; in the &#8220;Press This&#8221; pop-up (assuming that you are already logged into Twitter, else it will prompt you to log in before passing you on):</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_twitterstatus.gif" alt="" width="498" height="237" /></p>
<p style="text-align: left;">Basically, the status field will show the link text which will typically be the linked post&#8217;s title for most blogs, as well as your brand-new shortened link with the readable extension. Here is what the Twitter status (the &#8220;tweet&#8221;) will look like after you hit &#8220;update&#8221;:</p>
<p style="text-align: center;"><img src="http://businessmindhacks.com/wordpress/wp-content/uploads/image/wpeng/wp_tweetfinal.gif" alt="" width="601" height="100" /></p>
<p style="text-align: left;">As you can see, Twitter did NOT alter the link itself in any way, this will be the case as long as you keep it at a total of 30 characters or less, else it may be adjusted with an ellipsis (&#8220;&#8230;&#8221;) or turned into a Tinyurl.com style link by Twitter.</p>
<p style="text-align: left;">In my example, we have 7 characters for &#8220;http://&#8221;, 7 for the &#8220;3on.us/&#8221; domain name plus forward slash, <strong>leaving 16 characters for the link extension</strong> (the post name as described above). &#8220;twittervaluation&#8221; is exactly 16 characters as it happens, so we know it works. When I tested &#8220;twitter-valuation&#8221; (17 characters) the link had a bit cut off at the end by Twitter with the &#8220;&#8230;&#8221; ellipsis when the actual tweet was displayed.</p>
<p style="text-align: left;">&#8212; Time: 3 minutes.</p>
<h2>So what did we gain?</h2>
<p>First, by my count, <strong>the whole thing should have only taken about 35 minutes or so.</strong> If you are not as handy with Wordpress installs, FTP, etc. and want to hire someone to do this whole bit for you, my guess is that they&#8217;d have a hard time justifying more than 1 hour of billed time.</p>
<p>Second, you now have a completely flexible redirection engine / URL shortening (REUS, kind of sappy, I know) device, that</p>
<p>1) Can <strong>create links 2 characters shorter than even the shortest http://is.gd link,</strong> because you could choose to have the link extension only be one character, e.g. &#8220;http://3on.us/x&#8221; (obviously you&#8217;ll have only a limited supply of those&#8230;). Note also that is.gd does truncate your &#8220;#&#8221; on page anchor entensions, like those used to direct straight to a specific comment on a blog post page. Score another one for REUS&#8230;</p>
<p>2) Can <strong>create links that you completely determine the URL appearance of</strong>, both as to the domain (which will seem pretty custom vs. the publicly available services), as well as to the link extension, which can now be at least be semi-sensible.</p>
<p>If you are used to using the link tracker services of aWeber.com or 1shoppingcart.com, or have seen those in list emails sent to you, you can in principle use your new REUS to replace those as well. For that use you would also not be constrained by the extension length as much, and could use even more descriptive link text, e.g. &#8220;http://3on.us/grab-your-free-copy-here&#8221;.</p>
<p>3) I am working on a stats solution using an already available &#8220;Wordpress Stats&#8221; plugin as we speak, I will update you as soon as I&#8217;ve verified everything. Once that is in place, you will have stats for your REUS. In the meantime, you can use the Stats tools available from your hosting account, such as &#8220;Webalizer&#8221; or &#8220;Awstats&#8221; in CPanel, just turn them on for the new domain and you should be able to view your click-throughs. <strong>Either way, the data belongs to YOU.</strong></p>
<p>I would hope you agree: Not too bad&#8230;</p>
<p>The &#8220;theme&#8221; is being submitted to Wordpress.org later today, I will keep you posted when it officially becomes available from their site.</p>
<p><strong>UPDATE: OK, seems like this is a little over the Wordpress.org Theme Team&#8217;s heads</strong>, they didn&#8217;t know what to make of the REUS &#8220;theme&#8221; and rejected it (so far) on the grounds that &#8220;This is way too much work to setup a theme.&#8221; Even though the only truly exceptional step is the replacement of the &#8220;press-this.php&#8221; with our custom version. Oh well, no big deal, it is small enough (about 30KB zipped) to easily host from my own hosting account. Here is the link again:</p>
<p><a rel="nofollow" href="http://businessmindhacks.com/v/redirect_engine.zip" target="_blank">http://businessmindhacks.com/v/redirect_engine.zip</a></p>
<p>In happier news, <strong>I found a stats plugin to use that works relatively well out of the box</strong> to get some statistics going for your REUS install. It&#8217;s appropriately <a rel="nofollow" href="http://wordpress.org/extend/plugins/wp-shortstat2/" target="_blank">named &#8220;WP-ShortStats&#8221; and can be downloaded here</a>. I will talk to the creators and see if they&#8217;d like to make a small modification to the reporting page (&#8220;Dashboard &gt; ShortStat&#8221;) to allow for more tracking on each link, i.e. showing all of the referrers. Or else I&#8217;ll make some custom adjustments myself when I find the time. I&#8217;ll keep you posted.</p>
<p>Related to what I wrote near the beginning, it turns out that &#8220;Budurl.com&#8221; kind of holds your click-through stats hostage, you can only download them with a paid account. One more reason to use REUS&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://businessmindhacks.com/post/building-your-own-tinyurl-in-less-than-1-hour-using-wordpress/feed</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Wordpress 2.5.x Design Issues: Why I am staying with my 2.3.3 &#8220;Renegade&#8221;</title>
		<link>http://businessmindhacks.com/post/wordpress-25x-design-issues-why-i-am-staying-with-my-233-renegade</link>
		<comments>http://businessmindhacks.com/post/wordpress-25x-design-issues-why-i-am-staying-with-my-233-renegade#comments</comments>
		<pubDate>Sun, 29 Jun 2008 00:52:07 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mindhacks]]></category>
		<category><![CDATA[FCKEditor]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress design]]></category>
		<category><![CDATA[Wordpress Hack]]></category>
		<category><![CDATA[WYSIWIG]]></category>

		<guid isPermaLink="false">http://businessmindhacks.com/post/wordpress-25x-design-issues-why-i-am-staying-with-my-233-renegade</guid>
		<description><![CDATA[I had put off writing this post for a while, partly because I wanted to take the time and really give Wordpress 2.5 a whirl before bashing it.
For several months now I have watched the discussion on the Wordpress.org support forums &#8211; especially about the much maligned admin back-end changes, run a security &#34;back-porting&#34; experiment [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" class="leftimg" src="/p/wordpress_med.gif" />I had put off writing this post for a while, partly because I wanted to take the time and really give Wordpress 2.5 a whirl before bashing it.</p>
<p>For several months now I have watched the discussion on the Wordpress.org support forums &#8211; especially about the much maligned admin back-end changes, <a href="/post/wordpress-233-security-retro-fit" target="_blank">run a security &quot;back-porting&quot; experiment</a> to keep my heavily customized version of 2.3.3 viable, and put 2.5.x through its paces to see what it does and doesn&#8217;t do.</p>
<p>All along, I&#8217;ve been taking copious screen-caps to help build my case. And at least for me, the verdict is in: Wordpress 2.5.x has been largely a mistake. Here&#8217;s why:</p>
<ol>
<li>The layout and design <strong>changes to the admin backend have done preciously little to solve the problem of wasted vertical screen &quot;real-estate&quot;</strong>, even though a supposedly top-notch design firm was hired in the redesign. Not sure what they were thinking, but even though the menus were made a little more sane, I still find no real consistency in what was done.</li>
<li><strong>Several things that actually worked well for people (and especially power-users) were taken away for no apparent reason</strong>, with sometimes additional complications being caused. Yes, I&#8217;m talking about the &quot;Widgets&quot; screen, as well as the needless moving around of the &quot;post controls&quot; away from the right hand of the write screen (wasting, surprise, surprise, even more vertical screen real-estate).</li>
<li>It doesn&#8217;t truly address several of <strong>the long-standing issues with the WYSIWIG editor</strong> and the &quot;wpautop&quot; function that is at the root of these (which also happens to make Wordpress slower than it needs to be). Sorry for the arcane tech reference, but it&#8217;s necessary to remind people that Wordpress overly messing with people&#8217;s HTML has gone on far too long. The current &quot;HTML&quot; view in the write screen is now a very strange hybrid.</li>
<li>And as I&#8217;ve argued in great detail in the posts on the security back-porting experiment, <strong>none of these rather extensive design changes needed to be rolled into the same update with the much needed security updates.</strong> They could have been kept separate, allowing users to continue using 2.3.3 for the time being. If Apache is able to do this, so should Wordpress&#8230; Stop using security fears as leverage to push your feature &quot;upgrades&quot;.</li>
<li>Just for fun, along the way one of the more testy threads on the Wordpress.org forum was <a href="http://wordpress.org/support/topic/164414/page/6?replies=163#post-751978" target="_blank" rel="nofollow">closed by Mr. Wordpress Matt Mullenweg himself</a>, even though there were <a href="http://wordpress.org/support/forum/4" target="_blank" rel="nofollow">MANY, MANY</a> complaining about issues with the 2.5 admin back-end design. <strong>Listen to your power-user base every once in a while</strong>, they are the one&#8217;s evangelizing your product for you (go read some Guy Kawasaki on this issue). They are the ones that might have to live through dozens of upgrades for clients, and their often painful aftermath.</li>
</ol>
<p>OK, so let&#8217;s get into the details. Here is what my own customized Write Screen looks like, using the FCKEditor plugin and changes to the admin stylesheets and /wp-admin/menu.php.</p>
<p><span id="more-131"></span></p>
<p>(click image to enlarge in a new tab)</p>
<p><a target="_blank" href="/wordpress/wp-content/uploads/image/wp/writescreen_custom.gif"><img height="306" width="500" align="middle" alt="" src="/wordpress/wp-content/uploads/image/wp/writescreen_custom.gif" /></a></p>
<p><strong>You can see for yourself that the vertical screen real-estate is handled with &quot;respect&quot;</strong>. On a standard 15&quot; laptop screen there is no scrolling necessary for me, even though the editor textarea is a good writing size.</p>
<p>It starts with moving the Blog Name and &quot;User Account&quot; info off to the right, saving tons of space at the top. Presumably as the author, we know what our blog is called&#8230; (open-to-all user registration is a security risk that should be turned off, unless you are e.g. trying to use Wordpress as some sort of membership site hack).</p>
<p>I do have my Firefox browser optimized not to waste too much at the top with toolbars either (it&#8217;s held to about 1&quot; including tabs by customizing/decluttering/combining the toolbars), and my Windows bar is actually dragged over to the right edge of the screen.</p>
<p>But even without this one would still have a good sized editor textarea, maybe the &quot;Tags&quot; text-field would no longer be visible as it is now. The toolbars for the FCKEditor are also condensed down to the most important items BTW.</p>
<p>The point is, <strong>I can start typing without scrolling, the key controls are all within reach</strong> on the right side or at the top, and the Wordpress menu options are still within reach without scrolling as well.</p>
<p>(Notice also that I moved the &quot;Publish&quot; button away from the &quot;Save&quot; buttons to avoid accidental publishing, after all with your ping list, you really can&#8217;t take that back very well. Also, I added a &quot;Duplicate&quot; function that is the equivalent of a &quot;Save As&quot;. Comes in handy if you write posts that belong to a series with mostly the same tags, or to break up over-long drafts into two or more posts. Also handy for duplicating pages where you e.g. want to split-test elements of your sales copy, etc. etc. &quot;Save &amp; Close&quot; reliably takes you back to the &quot;posts management&quot; screen.)</p>
<p><strong>I think since 15&quot; screens are the de facto standard in portable (enough) laptops, it&#8217;s really useful to build screens for decent display on those. </strong>Yes, some people have much larger desktop screens, but one shouldn&#8217;t assume that.</p>
<p>Another issue is that text becomes harder and harder to read the wider the column size (your eyes have to move/fixate more horizontally), so going wider with the editor textarea is not helpful. I have set mine to display in roughly the same width as my posts are displayed on the blog itself.</p>
<p>Now compare the Wordpress 2.5.x write screen, I have put some free-hand notes in there to highlight the issues:</p>
<p>(click image to enlarge in a new tab)</p>
<p><a target="_blank" href="/wordpress/wp-content/uploads/wp25_writescreen_notes.gif"><img height="381" width="500" align="middle" alt="" src="/wordpress/wp-content/uploads/wp25_writescreen_notes.gif" /></a></p>
<p>It&#8217;s really quite a sight. In fact, <strong>the first thing that pops into my head whenever I see the 2.5 write screen is how empty it is:</strong> There is almost nothing in the top half of the screen! Also noticeable is that part of the menu/sub-menu was arbitrarily moved off to the right (not visible in my screen cap).</p>
<p>Settings, Plugins, and Users are now separated from the rest, even though Themes and Widgets are still under &quot;Design&quot; on the left. If that is supposed to be intuitive, good luck. First off, <strong>changing Themes should be the rarest of operations, so if anything IT should be moved out of sight. </strong>Second, aren&#8217;t Plugins part of the design in a way? Widgets and Plugins may get changed quite a bit more often for some, so if anything they should be closer at hand.</p>
<p>I am including a few other screen-caps of my set-up, just to show what the menu and some of the screens COULD be like. <span style="background-color: Yellow;">Obviously everyone is likely to have slightly different priorities and preferences. Which is exactly my point: If Wordpress wants most of its users to be happy, it might be worth considering drag-drop customizable menus. </span></p>
<p>I did my changes in /wp-admin/menu.php manually to get greater sanity. Dropped a few of those items I never use, and otherwise rearranged and renamed things as much as was quickly possible.</p>
<p>Also notice that I rearranged the posts table to sort by status first and then by &quot;Modified&quot; so that my drafts would be at the top. It&#8217;s like a post to-do list and brainstorm. (Don&#8217;t ask me what hoops I had to jump through to get the list to sort by BOTH &quot;Status&quot; descending AND by &quot;Date Modified&quot; descending combined.)</p>
<p>(click image to enlarge in a new tab)</p>
<p><a href="/wordpress/wp-content/uploads/image/wp/post_mgmt.gif" target="_blank"><img height="223" width="500" align="middle" alt="" src="/wordpress/wp-content/uploads/image/wp/post_mgmt.gif" /></a></p>
<p>To show <strong>how the old Widget screen could have been updated only slightly to make it more usable</strong>, look at this next screen-shot. None of the much-criticized new Widget screen functionality needed to be invented, it works great like this:</p>
<p>Tightened up the font-sizes/margins/padding on everything a bit, moved the Widget &quot;tray&quot; to the top, and thereby created space for easily handling up to 5 sidebars &#8211; I use different ones for the index.php, single.php, and page.php views.</p>
<p>(click image to enlarge in a new tab)</p>
<p><a href="/wordpress/wp-content/uploads/image/wp/widget_mgmt_screen.gif" target="_blank"><img height="300" width="500" align="middle" alt="" src="/wordpress/wp-content/uploads/image/wp/widget_mgmt_screen.gif" /></a></p>
<p>There are a few other design issues with 2.5, such as the &quot;Manage Posts&quot; view that will now delete posts without a pop-up warning, and a few others. But so far most of the criticism has come in response to the write/edit screen and the new Widget management screen. And frankly, I believe for good reason.</p>
<p>Until they do something to blow me away with in terms of new functionality, I am sticking to my custom &quot;2.3.3 Renegade&quot; version&#8230; can you blame me?</p>
]]></content:encoded>
			<wfw:commentRss>http://businessmindhacks.com/post/wordpress-25x-design-issues-why-i-am-staying-with-my-233-renegade/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>An Update on the Wordpress 2.3.3 Security Retro-fit Adventure</title>
		<link>http://businessmindhacks.com/post/update-on-wordpress-233-security-retro-fit</link>
		<comments>http://businessmindhacks.com/post/update-on-wordpress-233-security-retro-fit#comments</comments>
		<pubDate>Sun, 11 May 2008 01:13:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mindhacks]]></category>
		<category><![CDATA[Automattic]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Hack]]></category>
		<category><![CDATA[Wordpress security]]></category>

		<guid isPermaLink="false">http://businessmindhacks.com/post/update-on-wordpress-233-security-retro-fit</guid>
		<description><![CDATA[Just wanted to update you on a few developments with the back-porting of Wordpress 2.5.x security improvements to version 2.3.3.
First, I want to emphasize that I did this largely to show that it was possible, and that Wordpress (Automattic) should consider rolling out such security fixes for older versions as patches rather than forcing &#34;upgrades&#34; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/p/wordpress_med.gif" class="leftimg" alt="" />Just wanted to update you on a few developments with the <a target="_blank" href="/post/wordpress-233-security-retro-fit">back-porting of Wordpress 2.5.x security improvements to version 2.3.3</a>.</p>
<p>First, I want to emphasize that I did this largely to show that it was possible, and that Wordpress (Automattic) should consider rolling out such security fixes for older versions as patches rather than forcing &quot;upgrades&quot; to entirely new iterations of Wordpress with many feature changes mixed in with such fixes.</p>
<p>First, I did move the &quot;Retro-fit&quot; to this production blog of mine that is running a customized version of 2.3.3, and things have been going fine, for the most part.</p>
<p>Here is a screen-shot of the &quot;no frills&quot; login screen that is now missing the formatting that changed with 2.5.1 (as mentioned in the prior post). Since I have the user registration turned off, this is a non-issue for me, I can easily deal with not having a &quot;pretty&quot; login screen.</p>
<p style="text-align: center;"><img alt="" style="border: 1px solid rgb(221, 221, 221); padding: 3px;" src="/p/wordpress_login.gif" /></p>
<p><span id="more-113"></span></p>
<p><strong>The only other thing that I found to not work was the AJAXed post/page/comment deletion sequence.</strong> There must be a part on the JavaScript of the sequence that blocks the &quot;delete&quot; action, returning</p>
<p style="margin-left: 40px;"><code>&quot;You don't have permission to do that.&quot;</code></p>
<p>OK, no problem. I tracked down the JavaScript function that throws the error in a few admin files that have delete links on their screens,</p>
<p style="margin-left: 40px;"><code>onclick='return deleteSomething(... );'</code></p>
<p>but the AJAX code that it calls is too labyrinthine to mess with, so I left it alone. Instead I replaced it with a simple</p>
<p style="margin-left: 40px;"><code>onClick='return(confirm(&quot;Really Delete?&quot;));'</code></p>
<p>which fixed it, but also turned off the AJAX effect of the red-then-disappearing post/page/comment. In case you&#8217;re &quot;married&quot; to that one, this wouldn&#8217;t be for you. Personally, I can easily live without it, since the only thing that might get deleted regularly are spammy comments.</p>
<p>The files that needed this change were</p>
<pre style="margin-left: 40px;">
/wp-admin/edit.php
/wp-admin/edit-post-rows.php
/wp-admin/edit-pages.php
/wp-admin/edit-comments.php
/wp-admin/includes/template.php
</pre>
<p>Now, again, I want you to <strong>keep in mind that I embarked on this adventure mostly to prove a point about the possibility of having targeted security patches for past versions supplied by Wordpress.org</strong> (even though I also did get a nice security upgrade for my highly customized 2.3.3 install out of it). Obviously if they were to supply it, it should be safer/more targeted, and a hick-up such as the delete function thing would be avoided as part of the patch.</p>
<p>Whoever their AJAX specialist is could have likely changed just 1 or 2 lines in the AJAX code itself and solved the problem for all files/screens calling it. I simply don&#8217;t have enough experience with AJAX or the overall application logic in this case to know what to change to work the improved user authentication security from 2.5.x into it.</p>
<p>Incidentally, I was playing with a 2.5.1 install to collect and make more specific my thoughts on what I feel are things wrong with 2.5.x. More on that in the next post. But what I did find is that <span style="background-color: Yellow;">2.5.x abandoned the delete confirmation pop-up entirely in the new admin interface, so that once you click the delete button at the top, if any posts/pages/comments have their checkbox checked, there is no going back!</span></p>
<p>Not what I consider a safe design. In all likelihood, you can add the above simple &quot;onClick&quot; JavaScript I devised to the button input element, though I haven&#8217;t tried it yet. I am simply unsure what their design goals were with this new admin interface. Now we have something against a pop-up preventing a possibly unwanted deletion?</p>
<p>Given that the post list might display well below the fold, it is in theory possible that someone accidentally checks one of these posts along with another desired check, then hits &#8216;Delete&#8217; with a post that wasn&#8217;t even &quot;in sight&quot; now being deleted. Not good.</p>
<h2>UPDATE:</h2>
<p>I found one more issue that was created by the back-porting, and this one was actually a bit more of a problem: The whole-sale updating of</p>
<p style="margin-left: 40px;"><code>/wp-includes/functions.php</code></p>
<p>to the 2.5.x version actually caused the blog&#8217;s feed to fail. Took me a few days to figure this out, actually found it while adding a feed button in my categories.php and search.php templates.</p>
<p>The do_feed() call in the funtions.php file in 2.5.x actually calls a whole new function</p>
<p style="margin-left: 40px;"><code>get_default_feed()</code></p>
<p>that wasn&#8217;t there in 2.3.3 and throws the error. I first tried to update all of the feed[...].php files in /wp-includes, but that just produced more errors. Instead, the solution was to replace the 6 feed related functions</p>
<p style="margin-left: 40px;"><code>do_feed_...()</code></p>
<p>in /wp-includes/functions.php with the 2.3.3 versions. Then things were back to normal.</p>
<p>By now you are probably getting the idea that <strong>this back-porting business is NOT for the casual user of Wordpress</strong>. It should be noted however that I could have been more careful in porting only those exact changes from 2.5 that had to do with the security fixes, rather than replacing whole files and hoping for the best.</p>
<p>As it turned out, it mostly worked out OK, except for the issues addressed above.</p>
<p>And of course, <span style="background-color: Yellow;">it still proves that it should be easy for Wordpress.org to make the security fixes ONLY available as a small patch file package, a &quot;Service Pack&quot; of sorts to keep the older versions running as far as security.</span></p>
<p>Notice that this is the option chosen by many Open Source projects such as the venerable Apache server that powers most of the world&#8217;s Web servers. They still support version 1.7 with critical security updates, even though they are up to version 2.2 by now.</p>
<p>Why? Because they understand that there can be significant pain associated with a forced upgrades due to security issues, especially for admins that are dealing with a large installed base.</p>
<p><strong>Maybe Wordpress/Automattic could choose to see this as well, and head in this direction. What&#8217;s considered reasonable at Apache.org might be worth considering for them too.</strong> We don&#8217;t necessarily always need the latest &quot;code poetry&quot;&#8230; but we do need critical security.</p>
<p>Food for thought.</p>
]]></content:encoded>
			<wfw:commentRss>http://businessmindhacks.com/post/update-on-wordpress-233-security-retro-fit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress 2.3.3 Security Retro-Fit</title>
		<link>http://businessmindhacks.com/post/wordpress-233-security-retro-fit</link>
		<comments>http://businessmindhacks.com/post/wordpress-233-security-retro-fit#comments</comments>
		<pubDate>Tue, 06 May 2008 22:04:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mindhacks]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Hack]]></category>
		<category><![CDATA[Wordpress security]]></category>

		<guid isPermaLink="false">http://businessmindhacks.com/post/wordpress-233-security-retro-fit</guid>
		<description><![CDATA[OK, the content of this post is so important that I won&#8217;t agonize too much over whether the writing is all that smooth or not.
You may have heard any number of things in recent weeks and months about the need to upgrade to Wordpress 2.5.x because of security issues with the older versions. In fact, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/p/wordpress_med.gif" class="leftimg" alt="" />OK, the content of this post is so important that I won&#8217;t agonize too much over whether the writing is all that smooth or not.</p>
<p>You may have heard any number of things in recent weeks and months about the need to upgrade to Wordpress 2.5.x because of security issues with the older versions. In fact, it can almost sound as if some people wanted to scare you into upgrading.</p>
<p>Now there have been for a long time issues with <strong>the fact that each Wordpress &quot;update&quot; tends to be far from a smooth/pain-free operation for many people</strong>, breaking relied-upon plugins, creating issues with your (possibly custom) themes, and requiring the re-edit of any personal hacks you may have had reason to place directly into the Wordpress core distribution because some things don&#8217;t work quite right in there, and pleas to fix them are often ignored.</p>
<p>In this case however, there have also been a large number of changes to the Wordpress admin back-end, the usefulness of some of which has been judged to be questionable, or that have caused actual problems (2.5 could delete your text widgets among other things). One look at the <a rel="nofollow" target="_blank" href="http://wordpress.org/support/forum/4">Wordpress support forum</a> tells the story. I am not going to get into all of the reasons right now why I am not upgrading to 2.5.x for the foreseeable future. That is for a different post.</p>
<p>Suffice it to say that many top bloggers with an understanding of the tech issues <a href="http://twitter.com/AndyBeard/statuses/797042651" target="_blank" rel="nofollow">have said they won&#8217;t upgrade for a while</a>.</p>
<p>What is important though is that <span style="background-color: Yellow;">the security fixes that came with 2.5 should in reality be made available as small, &quot;single file copy&quot; patches for anyone deciding to stay with the older version(s) for now.</span> I have said as much on the support forum in several places, most recently on a very active &quot;2.5 backend issues&quot; thread that actually <a rel="nofollow" target="_blank" href="http://wordpress.org/support/topic/164414/page/6#post-751978">got shut down my &quot;Mr. Wordpress&quot; Matt Mullenweg himself.</a></p>
<p>Since they currently seem rather unconcerned with making these fixes available without a wholesale upgrade, I decided to take it upon myself to do so.</p>
<p>Here are the results:</p>
<p><span id="more-102"></span></p>
<p>After studying <a rel="nofollow" target="_blank" href="http://trac.wordpress.org/query?milestone=2.5&amp;order=component&amp;desc=1">the ticket records for Wordpress 2.5</a> and 2.5.1 (the very rapid release of yet another &quot;update&quot; so close to the first one should tell you that 2.5 wasn&#8217;t quite as ready for prime-time as they might have wanted you to believe), it appears obvious that the biggest security issues come from WP user registration and the way it handles passwords.</p>
<p><span style="background-color: Yellow;">As for registration, I recommend for both 2.3.3 and even the later versions that you turn it OFF in your Admin panel</span> under &quot;Options &gt; General &gt; Anyone can register&quot; (uncheck the check-box). Unless you are using Wordpress as a sort of membership site, there is really no reason that I can see for yet another registration. Just require name and email in your comment form, those get auto-filled after the first comment for most themes and in most browsers.</p>
<p>If you have multiple WP authors, Admin can add those manually in a controlled way. Else, what are those users for? Since WP isn&#8217;t designed to be e.g. an auto-responder by default, those Email addresses from registration aren&#8217;t really all that useful to you. Better to use Feedburner or other means of opt-in.</p>
<p>By the way, even 2.5 still had an issue with their user roles security, potentially <a rel="nofollow" target="_blank" href="http://trac.wordpress.org/ticket/6662">allowing &quot;less than admin&quot; type users to add other users</a>. Ooops. (Aside: The role system in Wordpress is a bit labyrinthine because the application logic for it is spread all over the place in the code.)</p>
<p>So turning this off is a good idea (if possible for your purposes). So then the only major security issue that still needs fixing is the way that passwords (for Admin, etc.) are handled in Wordpress, both in the password database and as cookies in your browser once you are logged into your Wordpress back-end. If you are interested in the deeper technical issue of this, go <a rel="nofollow" target="_blank" href="http://trac.wordpress.org/ticket/5367">here</a> and <a rel="nofollow" target="_blank" href="http://trac.wordpress.org/ticket/2394">here</a> and enjoy&#8230;</p>
<p>From studying these, <strong>I simply extracted the files that were changed for 2.5, and then proceeded to copy those, one by one, into a 2.3.3 test install</strong>. To not keep you in suspense any longer, this security retro-fit for 2.3.3 works and here are the files to update:</p>
<p>(all files can just be overwritten with the 2.5 version, any totally new 2.5 files are marked)</p>
<pre style="margin-left: 40px;">
/wp-includes/class-phpass.php (new file)
/wp-includes/compat.php
/wp-includes/functions.php
/wp-includes/media.php (new file)
/wp-includes/pluggable.php
/wp-includes/registration.php
/wp-includes/shortcodes.php (new file)
/wp-includes/user.php
/wp-includes/wp-db.php
</pre>
<pre style="margin-left: 40px;">
/wp-admin/includes/misc.php
/wp-login.php
/wp-settings.php
</pre>
<p>The there are two files that you each have to add one line each to. In</p>
<pre style="margin-left: 40px;">
/wp-includes/deprecated.php
</pre>
<p>add the line</p>
<pre style="margin-left: 40px;">
function gzip_compression() { return false; }
</pre>
<p>at the top inside of the &#8216;&lt;?php&#8217; open tag. The reason we can&#8217;t just overwrite the whole file with the 2.5 version is that it actually would try to re-declare many more functions that were deprecated in 2.5 and placed into this file.</p>
<p>Last but not least, we need to place our own &quot;secret key&quot; generation phrase into your</p>
<pre style="margin-left: 40px;">
/wp-config.php</pre>
<p>with this line:</p>
<pre style="margin-left: 40px;">
define('SECRET_KEY', 'put your secret key phrase here');
</pre>
<p>Note that the comment above this new code reads:</p>
<pre style="margin-left: 40px;">
// Change SECRET_KEY to a unique phrase.&nbsp; You won't have to remember it later,
// so make it long and complicated.
</pre>
<p>So that&#8217;s what you want to do.</p>
<p>Again, so far I have found this to work after having put my 2.3.3 test-bed blog through the paces. I run about a dozen or so standard plugins in this installation, and there APPEAR to be no adverse effects from these changes. Security should have been enhanced, which was the goal in the first place.</p>
<p>So far the only adverse effect has been that the &quot;blue shield&quot; formatting of the login screen form has gone bye-bye, likely because 2.5 wants to use it&#8217;s changed CSS to format. But since we said to turn off the user registration (and thereby login) for all but Admins and maybe collaborating authors, this shouldn&#8217;t be a concern. I might post a visuals fix for this at some later point, but right now that&#8217;s way down my listy of priorities&#8230;</p>
<p>Here again is the predictable <strong>WARNING/DISCLAIMER to only attempt this in a test install of your own first (with all of your plugins in it), OR if done to a live install, to do it during off hours and with back-ups of your old 2.3.3 files at the ready</strong> in case there are any problems.</p>
<p>Hope this has been useful to you, and that you&#8217;ll sleep better at night. If these explanations seemed too complicated many paragraphs up, PLEASE DO NOT ATTEMPT this without someone technical helping you.</p>
<h2>UPDATE:</h2>
<p><span style="background-color: Yellow;">Before proceeding with any of this, read about some of the additional issues that came up in </span><a target="_blank" href="/post/update-on-wordpress-233-security-retro-fit"><span style="background-color: Yellow;">this follow up post</span></a><span style="background-color: Yellow;">.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://businessmindhacks.com/post/wordpress-233-security-retro-fit/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Two Line Avatar Hack for Wordpress Comments</title>
		<link>http://businessmindhacks.com/post/two-line-avatar-hack-for-wordpress-comments</link>
		<comments>http://businessmindhacks.com/post/two-line-avatar-hack-for-wordpress-comments#comments</comments>
		<pubDate>Sun, 27 Apr 2008 22:21:45 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Mindhacks]]></category>
		<category><![CDATA[Avatars]]></category>
		<category><![CDATA[coiserv]]></category>
		<category><![CDATA[Gravatar]]></category>
		<category><![CDATA[Mybloglog]]></category>
		<category><![CDATA[Tom Werner]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress comments]]></category>
		<category><![CDATA[Wordpress Hack]]></category>

		<guid isPermaLink="false">http://businessmindhacks.com/post/two-line-avatar-hack-for-wordpress</guid>
		<description><![CDATA[ Only 2 (!) simple lines of code to have avatar support for your Wordpress comments with gracefull fail-over from Gravatar.com to Mybloglog.com, all without plugins&#8230; just add to your comments.php in the comments loop wherever you would like to see the Avatars/commenter photos placed:
The code for gravatar image URL is taken from Tom Werner&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" class="leftimg" src="/p/wordpress_med.gif" /> Only 2 (!) simple lines of code to have <strong>avatar support for your Wordpress comments with gracefull fail-over from Gravatar.com to Mybloglog.com, all without plugins</strong>&#8230; just add to your comments.php in the comments loop wherever you would like to see the Avatars/commenter photos placed:</p>
<p>The code for gravatar image URL is taken from Tom Werner&#8217;s simple gravatar.php plugin, the failover to Mybloglog was my idea.</p>
<p><a href="/post/two-line-avatar-hack-for-wordpress#comments">Check it out in action here</a>.</p>
<p>Note that the commenter email address must be URL encoded twice, because the gravatar.com script otherwise strips out the @ symbol.</p>
<p>Plus this makes for minimal protection from email phishing bots. Better would be to have Mybloglog adopt Gravatar&#8217;s md5 encoding of the Email address.</p>
<p>If MyBlogLog also had the &quot;&amp;default=[url]&quot; failover support, <strong>this could be chained to support further avatar service providers.</strong> Since it doesn&#8217;t, the chain stops with their somewhat ugly and small default (the grey square with the question mark).</p>
<p>And this also represents one fly in the ointment: MyBlogLog could at least make the size of that default the same size as the avatars their &quot;coiserv.php&quot; script serves &#8211; 48 x 48 pixels. I am going to talk to someone at Yahoo about this who might be able to pass it on to the right people.</p>
<p><span style="background-color: Yellow;">To get the code, right-click and &quot;Select All&quot;, then copy and paste to your theme&#8217;s comments.php template where you want the Avatar to appear.</span></p>
<form>
    <textarea wrap="off" cols="60" rows="3">&lt;?php $mybloglog=&quot;http://pub.mybloglog.com/coiserv.php?href=mailto:&quot;.urlencode(get_comment_author_email());  ?&gt;   &lt;img class=&quot;avatar&quot; src=&quot;http://www.gravatar.com/avatar.php?gravatar_id=&lt;?php echo(md5(get_comment_author_email()));?&gt;&amp;rating=PG&amp;size=48&amp;default=&lt;?php echo(urlencode($mybloglog));?&gt;&quot;/&gt; </textarea><br />
</form>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://businessmindhacks.com/post/two-line-avatar-hack-for-wordpress-comments/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

