<?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/"
xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Yoast &#187; Webdesign &amp; development</title> <atom:link href="http://yoast.com/cat/webdesign/feed/" rel="self" type="application/rss+xml" /><link>http://yoast.com</link> <description>Tweaking Websites</description> <lastBuildDate>Wed, 08 Feb 2012 10:16:45 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.4-alpha-19827</generator> <image><title>Yoast</title> <url>http://yoast.com/wp-content/themes/yoast-v2/images/yoast-logo-rss.png</url><link>http://yoast.com</link> <width>144</width> <height>103</height> <description>Tweaking Websites</description> </image><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>XML Sitemap PHP script</title><link>http://yoast.com/xml-sitemap-php-script/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=xml-sitemap-php-script</link> <comments>http://yoast.com/xml-sitemap-php-script/#comments</comments> <pubDate>Tue, 19 Jul 2011 09:34:48 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[SEO]]></category> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[XML Sitemap]]></category><guid
isPermaLink="false">http://yoast.com/?p=6397</guid> <description><![CDATA[<p>Recently, while working on the site for my father in law (in Dutch), I wanted to create an XML sitemap for the many publications on his site, that are downloadable PDF's. I regularly add PDF's to his site too, and since I'm a tad bit lazy I don't want to keep updating the XML sitemap. So [...]</p><p><a
href="http://yoast.com/xml-sitemap-php-script/">XML Sitemap PHP script</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Recently, while working on the site for <a
href="http://www.vanderakt.nl/">my father in law</a> (in Dutch), I wanted to create an XML sitemap for the many <a
href="http://www.vanderakt.nl/artikelen/">publications</a> on his site, that are downloadable PDF's. I regularly add PDF's to his site too, and since I'm a tad bit lazy I don't want to keep updating the XML sitemap. So I wrote a small XML Sitemap PHP script, that looks for all the files in a directory of a certain type, grabs their last modified them, and throws them in an XML sitemap.</p><p>Then, when working on another site yesterday, a <a
href="http://base64.nl/">Base64 encoding and Base64 decoding</a> experiment, I needed an XML sitemap yet again. So I improved up the XML Sitemap PHP Script a bit further and decided it should be released.</p><h2>Why make an XML Sitemap for Static Files?</h2><p>Let's first address the "why" of this script: in lots of cases, you'll have static files, either they're PDF's, or static PHP or HTML files that create a site. I want all of those in an XML sitemap for two reasons:</p><ul><li>to tell Google that they're there;</li><li>to be able to see in Google Webmaster Tools whether they're all indexed.</li></ul><div>This script assumes that all those files are in one directory. I know that's a bit "lazy", but if your site spans a lot of directories you probably should be using a CMS.</div><h2>Configuring the XML Sitemap PHP script</h2><p>Of course this script needs a bit of configuration before it'll work well. It has the following constant &amp; variables:</p><ul><li>SITEMAP_DIR<br
/> The directory to search for files in.</li><li>$filetypes<br
/> An array of all the file types that you wish to include in your XML sitemap.</li><li>$replace<br
/> An array of all the files that should be replace with other URL's, useful to, for instance, replace 'index.php' with an empty string, so it'll look like just example.com/</li><li>$ignore<br
/> An array of all the files to ignore in the XML sitemap, useful for your <em>config.php</em>, for instance</li><li>$xsl<br
/> A relative path to the XSL file included in the script.</li><li>$chfreq<br
/> The change frequency for files, can be 'hourly', 'daily', 'monthly' or 'never'.</li><li>$prio<br
/> The priority, a value between 0 and 1, since you can't differentiate between files, there's no big harm in setting them all to 1.</li></ul><h2>Styling the output of our XML Sitemap PHP Script</h2><p>Of course, we'll want our XML Sitemap to look good, as well as work well. For that we use an XSL stylesheet which is included in the download. It makes the XML sitemap look like this:</p><div
id="attachment_6398" class="wp-caption alignright" style="width: 590px"><a
class="thickbox" href="http://cdn3.yoast.com/wp-content/uploads/2011/07/XML-Sitemap-PHP-Script-XSL.png"><img
class="size-large wp-image-6398 " title="XML Sitemap PHP Script output, styled with XSL" src="http://cdn.yoast.com/wp-content/uploads/2011/07/XML-Sitemap-PHP-Script-XSL-590x417.png" alt="XML Sitemap PHP Script output, styled with XSL" width="580" height="409" /></a><p
class="wp-caption-text">XML Sitemap PHP Script output, styled with XSL</p></div><h2>Download XML Sitemap PHP Script</h2><p>I've added the whole script on <a
href="https://github.com/jdevalk/XML-Sitemap-PHP-Script">Github</a>, so you can play, fork, etc. Or you could just <a
href="https://github.com/jdevalk/XML-Sitemap-PHP-Script/zipball/master">download the zip</a>.</p><p><a
href="http://yoast.com/xml-sitemap-php-script/">XML Sitemap PHP script</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/xml-sitemap-php-script/feed/</wfw:commentRss> <slash:comments>24</slash:comments> <media:thumbnail url="http://cdn2.yoast.com/wp-content/uploads/2011/07/XML-Sitemap-PHP-Script-XSL-125x125.png" /> <media:content url="http://cdn3.yoast.com/wp-content/uploads/2011/07/XML-Sitemap-PHP-Script-XSL.png" medium="image"> <media:title type="html">XML Sitemap PHP Script output, styled with XSL</media:title> <media:description type="html">XML Sitemap PHP Script output, styled with XSL</media:description> <media:thumbnail url="http://cdn2.yoast.com/wp-content/uploads/2011/07/XML-Sitemap-PHP-Script-XSL-125x125.png" /> </media:content> </item> <item><title>Web Intents from Twitter</title><link>http://yoast.com/web-intents-from-twitter/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=web-intents-from-twitter</link> <comments>http://yoast.com/web-intents-from-twitter/#comments</comments> <pubDate>Thu, 07 Jul 2011 12:01:39 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Twitter]]></category><guid
isPermaLink="false">http://yoast.com/?p=6179</guid> <description><![CDATA[<p>At the end of March Twitter released a cool new feature called "Web Intents". I didn't really see the value of it till recently, but I've now started using it way more. When you have a Tweet button on your site, you're already using the Web Intents API, but you can do way more cool [...]</p><p><a
href="http://yoast.com/web-intents-from-twitter/">Web Intents from Twitter</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>At the end of March Twitter released a cool new feature called "Web Intents". I didn't really see the value of it till recently, but I've now started using it way more. When you have a Tweet button on your site, you're already using the Web Intents API, but you can do way more cool things. Check out the Twitter integration on the top left of this site, which looks like this:</p><p
style="text-align: center;"><img
class="size-full wp-image-6182 aligncenter" title="Web Intents Twitter integration" src="http://cdn2.yoast.com/wp-content/uploads/2011/07/tweet-integration.jpg" alt="Web Intents Twitter integration" width="303" height="44" /></p><p>There are three things in that integration that should catch your eye. If you click on "Yoast", that's what Twitter calls a "follow intent". So when you click on that link, Twitter generates a popup that looks like this:</p><p><a
class="thickbox" href="http://cdn3.yoast.com/wp-content/uploads/2011/07/follow-intent-yoast.jpg"><img
class="aligncenter size-large wp-image-6183" title="Follow Intent - Web Intents" src="http://cdn3.yoast.com/wp-content/uploads/2011/07/follow-intent-yoast-590x518.jpg" alt="Follow Intent - Web Intents" width="580" height="509" /></a>I think that's pretty cool. You're welcome to disagree, of course, but then you might as well stop reading now. Twitter generates similar popups when you click on the retweet and reply buttons, right behind the text of the tweet.</p><h2>How to create Web Intents</h2><p>Creating these Web Intents is hilariously easy. You need the normal JS library that you have for the follow and tweet buttons, so there's no need to include anything else. Here it is:</p><pre class="brush: xml; light: true; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; src=&quot;http://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;</pre><p>Then, a "follow intent" link, is crafted as easily as this:</p><pre class="brush: xml; light: true; title: ; notranslate">&lt;a href=&quot;https://twitter.com/intent/user?screen_name=yoast&quot;&gt;Yoast&lt;/a&gt;</pre><p>That's easy right? That's <em>all</em> you need to do. Let's check the other web intents, starting with the retweet intent:</p><pre class="brush: xml; light: true; title: ; notranslate">&lt;a href=&quot;http://twitter.com/intent/retweet?related=yoast&amp;tweet_id=&lt;ID&gt;&quot;&gt;</pre><p>All you have to do is replace the <code>&lt;ID&gt;</code> with the tweet to be retweeted. A reply intent is crafted just as easily:</p><pre class="brush: xml; light: true; title: ; notranslate">&lt;a href=&quot;http://twitter.com/intent/tweet?related=yoast&amp;in_reply_to=&lt;ID&gt;&quot;&gt;</pre><p>There's no need to use extra JavaScripts, write extra code, nothing. Feel free to just use this in your theme, your posts, wherever and Twitter's script will change it for you. In <a
href="http://dev.twitter.com/pages/intents">their documentation</a> for Web Intents, Twitter provides you with images to use as well, which I'm using too, as you can see.</p><p>Now I'd like to hear from you! Do you have creative ways of using Web Intents?</p><p><a
href="http://yoast.com/web-intents-from-twitter/">Web Intents from Twitter</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/web-intents-from-twitter/feed/</wfw:commentRss> <slash:comments>23</slash:comments> <media:thumbnail url="http://cdn.yoast.com/wp-content/uploads/2011/07/tweet-integration-125x44.jpg" /> <media:content url="http://cdn2.yoast.com/wp-content/uploads/2011/07/tweet-integration.jpg" medium="image"> <media:title type="html">Web Intents Twitter integration</media:title> <media:thumbnail url="http://cdn.yoast.com/wp-content/uploads/2011/07/tweet-integration-125x44.jpg" /> </media:content> <media:content url="http://cdn3.yoast.com/wp-content/uploads/2011/07/follow-intent-yoast.jpg" medium="image"> <media:title type="html">Follow Intent &#8211; Web Intents</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2011/07/follow-intent-yoast-125x125.jpg" /> </media:content> </item> <item><title>Email Reliability: use an SPF record</title><link>http://yoast.com/email-reliability/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=email-reliability</link> <comments>http://yoast.com/email-reliability/#comments</comments> <pubDate>Wed, 06 Jul 2011 08:07:36 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Email]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Spam]]></category><guid
isPermaLink="false">http://yoast.com/?p=6146</guid> <description><![CDATA[<p>A while back I outlined my system for preventing comment spam. One of the core fundamentals in there is that I send people an email to verify their email address before their comment is published. For this to work well, I need to trust on my email to be received. As it turns out, email [...]</p><p><a
href="http://yoast.com/email-reliability/">Email Reliability: use an SPF record</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>A while back I outlined <a
href="http://yoast.com/prevent-anonymous-comments-wordpress/">my system for preventing comment spam</a>. One of the core fundamentals in there is that I send people an email to verify their email address before their comment is published. For this to work well, I need to trust on my email to be received. As it turns out, email reliability is far from easy, let alone email reliability for email coming from your own web server. One of the important things is setting up an SPF record.</p><p>There's all sorts of factors that decide on whether your email is delivered or not, but one of the most important ones is a DNS record called SPF. SPF stands for Sender Policy Framework and let's the receiving mail server reliably determine whether the server that is sending you email is actually <em>allowed</em> to send you email. Adding one will increase your email reliability incredibly.</p><p>As with most DNS type records, the syntax is quite hard to explain so I won't even try. Let me link you to <a
href="http://en.wikipedia.org/wiki/Sender_Policy_Framework">the Wikipedia page</a> if you really want to know. What I found way more helpful though when I was searching and trying to figure out how to do this is <a
href="http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/">Microsoft's wizard</a> for this stuff. It asks you a bunch of questions and will still require some time from your side but it got me to the desired end-result a lot faster.</p><h2>SPF records, Google Apps for Domain and email reliability</h2><p>I use Google Apps for domain to handle my email, which means that I do most of my sending through a Google SMTP server. Because of that I had set the SPF record in the manner Google suggests <a
href="http://www.google.com/support/a/bin/answer.py?answer=178723">here</a>. The thing missing from that is very, very subtle, but makes all the difference. It's a few letters, let's see if you can spot it. This is the SPF record Google gave me:</p><pre class="brush: plain; light: true; title: ; notranslate">v=spf1 include:_spf.google.com ~all</pre><p>This is what it actually needed to be:</p><pre class="brush: plain; light: true; title: ; notranslate">v=spf1 a include:_spf.google.com ~all</pre><p>You will have spotted the addition of "a " after "spf1". This simple addition means that all web servers that are identified in my domains A records, hence, all the web servers from which I run my domain and subdomains, are allowed to send email as well.</p><p>The include directive means that Google can setup SPF records for the domain _spf.google.com and thus add or remove mail servers without you having to change anything.</p><h2>How to test email reliability</h2><p>If you're now thinking "I don't <em>know </em>whether this has been set up correctly for my domain", don't fret. You can test it quite easily. Go to <a
href="http://www.kitterman.com/spf/validate.html">this SPF testing tool</a> and use the 3rd form on the page. Using only the first and third input of that form, enter your web server's IP address and your from address, which is usually wordpress@<em>yourdomain</em>.com if you're running WordPress. With my initial test, it gave this result:</p><p><img
class="aligncenter size-full wp-image-6149" title="email reliability report" src="http://cdn3.yoast.com/wp-content/uploads/2011/07/email-reliability.jpg" alt="email reliability report" width="319" height="140" /></p><p>This means that this test won't fail your email per se (as there was no SPF record), but for stricter email servers, it might, in other words, you've got quite low email reliability. Now I ran it with the SPF record I has just fashioned using Microsoft's wizard and it gave me this:</p><p><img
class="aligncenter size-full wp-image-6150" title="email reliability high" src="http://cdn3.yoast.com/wp-content/uploads/2011/07/email-reliability-high.jpg" alt="email reliability high" width="484" height="139" /></p><p>That is the result you want to see, as that means my server's email reliability just went up quite a bit.</p><h2>WordPress specific email reliability: using another SMTP server</h2><p>Quite often email from your own server won't work as expected, especially when you're on a shared host it can give issues. There are quite a few plugins out there to help you set up an external SMTP server, I've relied on <a
href="http://coffee2code.com/wp-plugins/configure-smtp/">Coffee2Code's Configure SMTP</a> plugin myself a few times. There's some issues with that though, especially once you're starting to get more visitors, as most SMTP servers for free email services have a limit to how many emails you can send per day.</p><p>If you can, just use your own server or outsource the email delivery to a third party that specializes in sending service emails. I've been testing <a
href="http://yoast.com/out/sendgrid/">SendGrid</a> myself, but wasn't completely happy with it. Their reliability was a lot higher but the costs are quite high too when you get several hundreds of comments. You might think "that's only a couple of hundred emails", well, it's not.</p><p>If you have subscribe to comments enabled, which I highly suggest you do, it'll be a lot more. I get anywhere from 20 to 200 comments on a post, average about 80 at the moment. If 50% subscribes to comment notifications, that adds up to an enormous amount of email being sent.</p><p>As for newsletters, there are plugins for sending those from your WordPress install too. I <em>highly</em> encourage you <em>not</em> to do that. Use <a
href="http://www.mailchimp.com/">Mailchimp</a>, or any other newsletter service for that. Their reliability is way higher and you get awesome statistics and subscription services to boot. I use them for my <a
href="http://yoast.com/wordpress-newsletter/">WordPress Newsletter</a> and never regret it.</p><h2>Are you using other services that send email for you?</h2><p>If you're using other services that send email for you, for instance if you're using <a
href="https://yoast.freshbooks.com/refer/www">Freshbooks</a> (aff) for invoicing like I do, be sure to include them in your SPF too, just add another include like we did above for Google:</p><pre class="brush: plain; light: true; title: ; notranslate">include:_spf.freshbooks.com</pre><p>There are more services that support this, be sure to check if you're using any services that send email on your behalf. Email reliability is important, but even more important when it's sending your invoices!</p><p>Update from Antonio Romero in the comments, the same goes for MailChimp:</p><pre class="brush: plain; light: true; title: ; notranslate">include:servers.mcsv.net</pre><p>Just updated my own SPF with that as I use my own email address as a from address there.</p><h2>Conclusion: make sure your email reliability is high!</h2><p>Whether you run your own server or not, it can't hurt to do the check above to see whether your email has a high chance of being delivered. If you're sending email from your web server, be <em>sure</em> to do the above check and make the necessary changes to your SPF record if needed!</p><h2>Bonus tip: DKIM</h2><p>If you're using Google Apps for domain, be sure to read <a
href="http://www.google.com/support/a/bin/answer.py?answer=174124">this guide</a> and implement everything in it. It'll help you set up domain keys, which adds another layer of spam protection.</p><p><a
href="http://yoast.com/email-reliability/">Email Reliability: use an SPF record</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/email-reliability/feed/</wfw:commentRss> <slash:comments>22</slash:comments> <media:thumbnail url="http://cdn2.yoast.com/wp-content/uploads/2011/07/email-reliability-125x125.jpg" /> <media:content url="http://cdn3.yoast.com/wp-content/uploads/2011/07/email-reliability.jpg" medium="image"> <media:title type="html">email reliability report</media:title> <media:thumbnail url="http://cdn2.yoast.com/wp-content/uploads/2011/07/email-reliability-125x125.jpg" /> </media:content> <media:content url="http://cdn3.yoast.com/wp-content/uploads/2011/07/email-reliability-high.jpg" medium="image"> <media:title type="html">email reliability high</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2011/07/email-reliability-high-125x125.jpg" /> </media:content> </item> <item><title>Killer Performance Tips from the Expert</title><link>http://yoast.com/expert-web-performance-tips/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=expert-web-performance-tips</link> <comments>http://yoast.com/expert-web-performance-tips/#comments</comments> <pubDate>Mon, 07 Feb 2011 19:56:12 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[Site Speed]]></category> <category><![CDATA[WordPress podcast]]></category> <category><![CDATA[WordPress Widgets]]></category><guid
isPermaLink="false">http://yoast.com/?p=3831</guid> <description><![CDATA[<p>My business &#38; podcast partner Frederick Townes, who also happens to be the CTO @ Mashable.com, has finally finished a long awaited (by me at least) post covering lots of the performance tips he's applied at Mashable (I hope you've seen their awesome redesign) and in other projects to make the sites faster despite having [...]</p><p><a
href="http://yoast.com/expert-web-performance-tips/">Killer Performance Tips from the Expert</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>My business &amp; podcast partner <a
href="http://yoast.com/author/frederick/">Frederick Townes</a>, who also happens to be the CTO @ <a
rel="no follow external" href="http://mashable.com/">Mashable.com</a>, has finally finished a <a
href="http://www.w3-edge.com/weblog/2011/02/optimize-social-media-button-performance/">long awaited (by me at least) post</a> covering lots of the performance tips he's applied at <a
href="http://mashable.com">Mashable</a> (I hope you've seen their awesome redesign) and in other projects to make the sites faster despite having lots of widgets etc.</p><p>His tips in particular are useful for optimizing the performance of social media buttons and ads etc, but keep in mind there are lots of aspects of WordPress to optimize, like <a
href="http://yoast.com/articles/wordpress-seo/">SEO</a>, <a
href="http://yoast.com/wordpress-performance-optimization/">database performance</a> and <a
href="http://yoast.com/40-wordpress-optimisation-tips/">more</a>.</p><p><a
href="http://yoast.com/expert-web-performance-tips/">Killer Performance Tips from the Expert</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/expert-web-performance-tips/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>&#8220;Design by&#8221; footer links&#8230;</title><link>http://yoast.com/footer-design-by-links/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=footer-design-by-links</link> <comments>http://yoast.com/footer-design-by-links/#comments</comments> <pubDate>Tue, 14 Sep 2010 20:01:19 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Link Building]]></category><guid
isPermaLink="false">http://yoast.com/?p=3104</guid> <description><![CDATA[<p>When you've had someone build a website for you, it turns out to be common practice for that "someone", usually a web developer or a web designer, to add a "design by" or "website developed by" footer link to your site. Let me make my point clearly: if they haven't given you a discount to [...]</p><p><a
href="http://yoast.com/footer-design-by-links/">&#8220;Design by&#8221; footer links&#8230;</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>When you've had someone build a website for you, it turns out to be common practice for that "someone", usually a web developer or a web designer, to add a "design by" or "website developed by" footer link to your site. Let me make my point clearly: if they haven't given you a discount to add that link, you should remove the link entirely. The topic came up during <a
href="http://www.madein48hours.co.uk/">Made in 48 hours</a>, and I thought I'd do a post on the topic to explain myself more.</p><p><img
class="alignright size-full wp-image-3105" title="Footer Links" src="http://cdn.yoast.com/wp-content/uploads/2010/09/foot-chain-link-e1284494210988.jpg" alt="Footer Links" width="248" height="165" /></p><p>Let's draw an analogy: when you have someone build a house for you, what would you say if they'd say: "oh and btw, we'll leave a banner up on your roof", or to make the analogy better, when they said nothing at all and just did it? You'd either be mad and tell them to come take it off, or you'd throw it off yourself, right?</p><p>The question is of course: why do web designers and web developers do this? The reasons are simple: they'd like everyone to know that they designed that certain website <em>and</em> they use these footer links (if they're smart), to increase their search engine rankings. Luckily search engines, most notably Google, have been aware of this practice and are pretty good at making links in footers of pages not work as well, but that doesn't change the basic fact that the link should not be there.</p><p>The reason why this annoys me is that it's abusing the fact that most people who have a website built either for themselves or their company don't know the value of these links. It's basically the web developer taking advantage of the ignorance of their customer. A customer who, in most cases, wouldn't even now how to take a link like that out. Now what does that make them?</p><p>Don't get me wrong; I'm not saying web developers and web designers can't have these links, they should just be very open about it and not make it a default. If you're a customer with footer links on your site, and it hasn't been discussed with you, nor is it not in the contract with your web developer or designer, feel free to take it off or, better yet, ask for that discount.</p><p>If you're using a WordPress theme or free template that has one of these footer links, and you've gotten it for free, I'd leave it there, because that's how you "pay" the designer / developer. If it has multiple links like that, or really spammy ones like sometimes happens on non-legit theme sites, I'd personally take them out immediately, or not use the theme at all.</p><p><a
href="http://yoast.com/footer-design-by-links/">&#8220;Design by&#8221; footer links&#8230;</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/footer-design-by-links/feed/</wfw:commentRss> <slash:comments>182</slash:comments> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2010/09/foot-chain-link-e1284494210988-125x125.jpg" /> <media:content url="http://cdn.yoast.com/wp-content/uploads/2010/09/foot-chain-link-e1284494210988.jpg" medium="image"> <media:title type="html">Footer Links</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2010/09/foot-chain-link-e1284494210988-125x125.jpg" /> </media:content> </item> <item><title>Link dump: interesting reads from around the web</title><link>http://yoast.com/link-dump-week-34/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=link-dump-week-34</link> <comments>http://yoast.com/link-dump-week-34/#comments</comments> <pubDate>Tue, 24 Aug 2010 13:50:40 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[SEO]]></category> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[iPhone]]></category><guid
isPermaLink="false">http://yoast.com/?p=2945</guid> <description><![CDATA[<p>So last week I've started sharing a lot more of what I read on a day to day basis on Twitter, and I decided I had to share these links here on yoast.com as well. Below is a quite extensive list of links that I found interesting, ordered by topic. I'll try to do these [...]</p><p><a
href="http://yoast.com/link-dump-week-34/">Link dump: interesting reads from around the web</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>So last week I've started sharing a lot more of what I read on a day to day basis on <a
href="http://twitter.com/yoast">Twitter</a>, and I decided I had to share these links here on yoast.com as well. Below is a quite extensive list of links that I found interesting, ordered by topic. I'll try to do these on a weekly basis from now on.</p><h2>WordPress</h2><ul><li><h3>Code Snippets and Examples</h3><ul><li><a
href="http://bit.ly/dqhhT3">The only proper way of adding a Facebook “Like” button to your WordPress blog</a></li><li><a
href="http://bit.ly/9hpHmB">An article I wrote recently for Smashing Magazine: Lessons Learned From Maintaining a WordPress Plug-In</a></li><li><a
href="http://bit.ly/alekZG">Gravity Forms PayPal integration</a></li><li><a
href="http://bit.ly/a3z87J">16 Vital Checks Before Releasing a WordPress Theme</a></li><li><a
href="http://bit.ly/bKcaaG">How to Display Human Readable Post Dates in WordPress</a></li><li><a
href="http://bit.ly/cHEM20">Control WordPress Content via Userrights or Time</a></li><li><a
href="http://bit.ly/9EVieE">A good Beginner’s Guide to the Thematic Framework</a></li></ul></li><li><h3>Plugins</h3><ul><li><a
href="http://bit.ly/96JcwN">BuddyPress Courseware beta</a>; a very cool plugin for schools &amp; other educational institutions.</li><li><a
href="http://bit.ly/9iH1WY">Post to post</a>; nice plugin for creating relations between posts.</li><li><a
href="http://bit.ly/b6EtrU">Press This Reloaded</a>; pretty useful if you need to, for instance, adapt the SEO title of a post.</li><li><a
href="http://bit.ly/9P9QJG">WPMU.org features my WordPress Salesforce CRM plugin.</a></li><li><a
href="http://bit.ly/djWrla">Custom Post Permalinks</a>; I seriously think this should be in WordPress core, but as long as it's not, this'll do.</li></ul></li><li><h3>News</h3><ul><li><a
href="http://bit.ly/bM98Dg">Common WordPress Multisite Problems and Solutions</a></li><li><a
href="http://bit.ly/99a7Mm">Top 10 WordPress News Blogs</a></li><li><a
href="http://bit.ly/93vTpF">When is the Best Time to Post a Blog Post?</a> Not enough people think about this.</li></ul></li></ul><h2>SEO</h2><ul><li><a
href="http://bit.ly/as4wfE">Without any work from me, my Google Analytics plugin now helps you verify your Google Webmaster Tools account.</a></li><li><a
href="http://bit.ly/cnnarU">I'm seeing similar stuff to this: Google Webmaster Tools Link data - a case study</a> by Dave Naylor, my favourite <a
href="http://www.davidnaylor.co.uk/">UK SEO</a>.</li><li>Want an SEO job? <a
href="http://bit.ly/bBvWxr">Check out the Daily Mail's robots.txt file</a></li></ul><h2>Analytics</h2><ul><li><a
href="http://bit.ly/9ptp4K">Qualitative Web Analytics: Heuristic Evaluations Rock! another great post by Avinash Kaushik</a></li><li>The new Management API for Google Analytics rocks; <a
href="http://bit.ly/b5QiIF">check out the docs</a></li></ul><h2>Web design / web development</h2><ul><li><a
href="http://bit.ly/bQUzrh">Practical? No. Cool? Yes. Compressing Your JavaScript and CSS to PNG Images</a></li><li><a
href="http://bit.ly/9S6UWq">What a surprise: Steve Jobs was right, Flash fails on Android</a></li><li><a
href="http://bit.ly/9RYskr">HTML5 for Web Designers: Book Review at Nettuts+ - I've read it too, it's amazing</a></li><li><a
href="http://bit.ly/aNa540">Good Help is Hard to Find</a> is another A List Apart classic. Wonder how to apply this to my plugins...</li><li><a
href="http://bit.ly/bNWP6e">A very concise explanation of the viewport metatag by David B. Calhoun</a></li><li><a
href="http://j.mp/bi0H6L">A pretty awesome example of what can be reached with CSS3 now</a></li><li><a
href="http://bit.ly/djDvsZ">I'd almost start using Typekit: Adobe partners with Typekit to bring legendary typefaces to the web.</a></li><li><a
href="http://bit.ly/dr4PZd">MathML is now part of WebKit nightlies</a>, go forth and play, all you math lovers out there!</li><li><a
href="http://bit.ly/aBCIJ1">Delay loading of print CSS</a> (in WordPress, but useful for everyone)</li><li><a
href="http://bit.ly/9lw75n">Debugging Tools - jQuery for Designers</a></li><li>This would work perfectly for WordPress plugin developers: <a
href="http://bit.ly/aqs9ib">Readme Driven Development</a></li></ul><h2>Online Marketing / Social media</h2><ul><li><a
href="http://bit.ly/dBB6Ck">Daring Fireball - Online Advertising: Losing the Race to the Bottom - listen to this, seriously.</a></li><li><a
href="http://bit.ly/aqEdsl">What's this thing called Buzz that Leo talks about? :)</a></li><li><a
href="http://bit.ly/dmKxZA">Facebook Tabs: What They Are &amp; How to Use Them</a> - Good writeup on RWW</li><li><a
href="http://tcrn.ch/bGTgJj">Quite curious how many people will do this: German Homes Can Now Opt Out Of Google - TechCrunch</a></li></ul><h2>Science</h2><ul><li><a
href="http://bit.ly/baWUqW">Experts are usually wrong</a></li><li><a
href="http://bit.ly/cULBRE">Everyone looks better after you've tipped back a pint or two, and now we know why</a></li><li><a
href="http://bit.ly/cUSUwo">A nice infographic on the history of the Internet</a></li><li>Freakonomics: loved the book, looking forward to the movie, <a
href="http://bit.ly/dqVlcD">check out the trailer</a>.</li><li>Wonder what my wife does? <a
href="http://bit.ly/adINVi">Read her latest paper on the Intergenerational Transmission of Convictions.</a></li></ul><h2>Fun</h2><ul><li><a
href="http://bit.ly/93dgQw">(Fake) Lady Gaga sings about Java programming with some hilarious quotes</a></li><li><a
href="http://bit.ly/9TLmeS">Gonna have to try this on my son in about 2 years: 4 Tools for Teaching Kids to Code</a></li><li><a
href="http://bit.ly/93ZyPv">Basically, you can't block Mark Zuckerberg on Facebook, because too many other people did it before you</a></li><li><a
href="http://bit.ly/apyIeg">You know you're a geek when you think this is funny</a></li></ul><h2>Lifestyle</h2><ul><li><a
href="http://bit.ly/ajUUZz">Trying to follow this advice: living a Balanced Freelance Life (even though I'm only partly freelance)</a></li></ul><h2>Mac</h2><ul><li>Why <a
href="http://www.red-sweater.com/blog/">Daniel Jalkut</a> is <a
href="http://bit.ly/cRfLpX">sticking with the Mac</a></li><li><a
href="http://bit.ly/aEUJLS">Precipitate: search for and launch the info you stored in the cloud from Spotlight or G Desktop for Mac</a></li><li><a
href="http://bit.ly/d3q4cr">This is bloody hilarious: No Comment: Justin Long's jailbroken iPhone</a></li><li><a
href="http://bit.ly/d6EPqi">This proved to be pretty awesome for mp3 splitting: Macsome Audio Splitter</a></li></ul><p><a
href="http://yoast.com/link-dump-week-34/">Link dump: interesting reads from around the web</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/link-dump-week-34/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Practical Guide to creating a 404 Error Page for WordPress</title><link>http://yoast.com/404-error-pages-wordpress/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=404-error-pages-wordpress</link> <comments>http://yoast.com/404-error-pages-wordpress/#comments</comments> <pubDate>Tue, 03 Nov 2009 13:30:42 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Analytics]]></category> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[WordPress Themes]]></category><guid
isPermaLink="false">http://yoast.com/?p=1645</guid> <description><![CDATA[<p>I make mistakes. You make mistakes. We all do. And some of these mistakes end up providing our readers with a 404 page. Chances are that page says "Error 404: file not found". How does that help your visitor? Instead of just identifying the problem, your 404 error page needs to offer a solution. In [...]</p><p><a
href="http://yoast.com/404-error-pages-wordpress/">Practical Guide to creating a 404 Error Page for WordPress</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p><a
href="http://www.semmys.org/2010/blogging-2010-winner/"><img
class="alignright" src="http://www.semmys.org/dm/badges/10/LBru.gif" alt="2010 SEMMY Runner-Up" /></a>I make mistakes. You make mistakes. We all do. And some of these mistakes end up providing our readers with a 404 page. Chances are that page says "Error 404: file not found". How does that help your visitor?</p><p><strong
style="font-size: 120%; text-shadow: 1px 1px 1px #aaa;"><em>Instead of just identifying the problem, your 404 error page needs to offer a solution.</em></strong></p><p><img
class="alignright size-full wp-image-1744" title="Crossing out problems and instead offering solutions for your 404 error page" src="http://cdn.yoast.com/wp-content/uploads/2009/11/problems-solutions.jpg" alt="Crossing out problems and instead offering solutions for your 404 error page" width="250" height="166" />In the default WordPress Kubrick theme the 404 error page (<a
class="thickbox" title="Kubrick 404 - Ugly as hell" rel="404s" href="http://cdn2.yoast.com/wp-content/uploads/2009/10/kubrick-4041.png">example</a>) is probably one of the ugliest pages you've ever seen, and chances are yours is not any better. Today is the time to end that. This post will provide you with <em>everything</em> you need to make your "404 - File not found" page a starting point instead of a dead end street.</p><p>The goal of a good 404 error page is simple: to make sure visitors landing on it continue browsing your site, and find the content they came for. Let's get going.</p><h2>Get into your visitors mindset</h2><p>Get into the mindset of the person that just got to a 404 error page on your site. They were expecting something else, if not, they wouldn't have gone there. So there's a couple of things you should absolutely <em>not</em> do:</p><p>First of all, considering they've probably clicked a link somewhere to get to that 404 error page, whose fault is it that they're getting a 404? Theirs? No. Yours? It very well might be, so you'd better apologize.</p><p>Second, make sure the styling of your 404 error page fits in with the rest of your site. Sometimes designers go overboard with their 404 pages, and make them look like, for instance, a Windows blue screen. This can have the very undesired effect of people leaving immediately.</p><p>Third, if you are going to make jokes, like that Windows blue screen, make sure it's a joke everyone gets. Especially when you're blogging in English, you might end up with a lot of readers for whom English is their second or third language. Your puns, though well intended, might be going nowhere because their mastery of the language isn't sufficient. Because of that they might leave... Is that worth it?</p><h2>Let's make a killer 404 error page for WordPress</h2><p>Ok so we know what not to do. We also know that the visitor came to your site looking for specific content, usually having followed a link from somewhere. Now it's time to start giving them ways of doing that. If you're not using WordPress and you're lazy, the <a
href="http://googlewebmastercentral.blogspot.com/2008/08/make-your-404-pages-more-useful.html">Google 404 widget</a> might be helpful. If you <em>are</em> using WordPress, we can do better than that.</p><p>Let's let us be inspired by some great 404 error pages:</p><div
style="width: 425px; height: 130px; margin: 0 auto;"><a
class="thickbox" title="Apple's 404 page" rel="404-inspire" href="http://cdn2.yoast.com/wp-content/uploads/2009/10/apple-404.png"><img
class="alignleft size-thumbnail wp-image-1648" src="http://cdn.yoast.com/wp-content/uploads/2009/10/apple-404-125x125.png" alt="Apple 404 error page" width="125" height="125" /></a><a
class="thickbox" title="IBM's 404 page" rel="404-inspire" href="http://cdn.yoast.com/wp-content/uploads/2009/10/ibm-404.png"><img
class="alignleft size-thumbnail wp-image-1650" src="http://cdn3.yoast.com/wp-content/uploads/2009/10/ibm-404-125x125.png" alt="ibm 404 error page" width="125" height="125" /></a><a
class="thickbox" title="Conversion Rate Experts 404 page" rel="404-inspire" href="http://cdn.yoast.com/wp-content/uploads/2009/11/cre.png"><img
class="alignleft size-thumbnail wp-image-1699" src="http://cdn3.yoast.com/wp-content/uploads/2009/11/cre-125x125.png" alt="Conversion Rate Experts 404 error page" width="125" height="125" /></a></div><p
style="margin-top: 10px; clear: both;">I'll be honest: the <a
href="http://conversion-rate-experts.com/">Conversion Rate Experts</a> guys have inspired the first version of my 404 error page. They offer you 4 options to get to the content you were looking for:</p><ol><li>search</li><li>check the URL for misspellings</li><li>check the sitemap</li><li>start over at the homepage</li></ol><p>That's a <em>great</em> start. Apple gives you a sitemap straight away. Depending on your site's structure that might be a great idea too.</p><p>I wanted to add one more thing: a set of pages that actually might be related to the URL people had typed in. To do that, we'd have to parse the URL and see if there's something useful in there. Let's see what we have to work with:</p><h2>What data does a 404 error page provide?</h2><p><img
class="alignleft size-full wp-image-1729" title="404-error" src="http://cdn3.yoast.com/wp-content/uploads/2009/11/404-error.jpg" alt="404-error" width="250" height="134" />A lot of people seem to think that a 404 page is a dead end street. It's not, there's a whole lot of data that can help you find the content your visitor was looking for. Let's start with the URL: it contains something very useful. All the text that's there after the slash of your domain should be pointing you to what it is the person was looking for.</p><p>Luckily, WordPress stores that information for you. The <code>$wp_query-&gt;query_vars['name']</code> variable holds whatever was in there. It does do some replacing in there though, it replaces all weird entities with a dash (-). We'll use this bit of information to spice up your 404 error page.</p><p>First of all, let's check whether there's a direct match for that var in a page name once you strip out all the things that people sometimes add to your URL erroneously. (If you read on there's an adapted version of the Kubrick 404 page which you can use to update your own themes.)</p><pre class="brush: php; title: ; notranslate">$s = $wp_query-&gt;query_vars['name'];
$s = preg_replace(&quot;/(.*)-(html|htm|php|asp|aspx)$/&quot;,&quot;$1&quot;,$s);
$posts = query_posts( array( 'post_type' =&gt; 'any', 'name' =&gt; $s) );</pre><p>If that doesn't deliver results, you'll want to do a search for that word, to do that we'll have to rip out the dashes in the name, and then do the search. As we're going to re-use the <code>$s</code> variable further on, we'll do that outside of the if statement to check whether the previous query delivered results:</p><pre class="brush: php; title: ; notranslate">$s = str_replace(&quot;-&quot;,&quot; &quot;,$s);
if (count($posts) == 0) {
  $posts = query_posts(array( array('post_type' =&gt; 'any', 'name' =&gt; $s) );
}</pre><p>Now we have an array with posts, at least, we hope we do, so let's check that, and loop through it:</p><pre class="brush: php; title: ; notranslate">if (count($posts) &gt; 0) {
  echo &quot;&lt;p&gt;Were you looking for &lt;strong&gt;one of the following&lt;/strong&gt; posts
    or pages?&lt;/p&gt;&quot;;
  echo &quot;&lt;ul&gt;&quot;;
  foreach ($posts as $post) {
    echo '&lt;li&gt;';
    echo '&lt;a href=&quot;'.get_permalink($post-&gt;ID).'&quot;&gt;'.$post-&gt;post_title.'&lt;/a&gt;';
    echo '&lt;/li&gt;';
  }
  echo &quot;&lt;/ul&gt;&quot;;
}</pre><p>I've made an adapted version of the Kubrick 404 error page, which you can <a
id="kubrick404" href="http://cdn3.yoast.com/wp-content/uploads/2009/11/404.zip">download here</a>.</p><p>There's a plugin that does something similar to the above, called <a
href="http://wordpress.org/extend/plugins/smart-404/">Smart 404</a>. It chooses to redirect the visitor to the first result it gets. It wouldn't be my preference, I actually want people to notice that the URL was wrong.</p><p>So now we have a great 404 error page, but we haven't used all the data that we were provided with. Another bit of data the 404 provides is the referrer: someone linked to your page with a wrong URL, or is linking to a page that isn't there anymore. So we've got one thing left to do:</p><h2 id="404prevention">Preventing 404 error pages</h2><p>There's a very cool plugin called <a
href="http://wordpress.org/extend/plugins/404-notifier/">404 notifier</a> by Alex King, which can provide you with an RSS feed of the 404's on your site, and <a
href="http://urbangiraffe.com/plugins/redirection/">Redirection</a>, one of my all time favorite plugins, offers the same functionality. You could also use my own <a
href="http://yoast.com/wordpress/google-analytics/">Google Analytics for WordPress plugin</a>. It tracks the 404's as 404.html (look for them in your content report).</p><p>Using Google Analytics has the added advantage that it saves the referrer, so you know which URL the visitor originated from. This allows you to not only redirect the URL to the correct place, but also to ask the site that referred the visitor to fix the URL.</p><p>Another great way to keep track of 404's on your site is using <a
href="https://www.google.com/webmasters/tools/">Google Webmaster Tools</a>. In the Diagnostics - Crawl Errors area of Webmaster Tools Google gives you a great overview of what 404's it encountered on your site:</p><p><a
class="thickbox" href="http://cdn2.yoast.com/wp-content/uploads/2009/11/google-crawl-errors.png"><img
class="aligncenter size-medium wp-image-1707" title="google-crawl-errors" src="http://cdn3.yoast.com/wp-content/uploads/2009/11/google-crawl-errors-300x215.png" alt="google-crawl-errors" width="300" height="215" /></a></p><h2>Two Things you Need to Know about 404 error pages</h2><p>These are things that WordPress is doing right, but it's good to know these things:</p><ul><li>Internet Explorer will only show your custom 404 page if it's larger than 512 bytes (hard to get smaller than that with WordPress).</li><li>404 is not only the name, it's also the HTTP header that the page should send, if not, you might end up with 404 pages in the search engines indexes. You can easily check this with a HTTP header checker.</li></ul><p>As said, no need to worry if you're using WordPress, but good to know these things.</p><p>There's really no excuse left now for a bad 404 error page on your WordPress blog or anywhere else, so go fix yours! Once you've done that, drop your site's URL in the comments, and I'll make a small gallery of cool 404 error pages in this post.</p><p><a
href="http://yoast.com/404-error-pages-wordpress/">Practical Guide to creating a 404 Error Page for WordPress</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/404-error-pages-wordpress/feed/</wfw:commentRss> <slash:comments>78</slash:comments> <media:thumbnail url="http://www.semmys.org/dm/badges/10/LBru.gif" /> <media:content url="http://www.semmys.org/dm/badges/10/LBru.gif" medium="image"> <media:title type="html">2010 SEMMY Runner-Up</media:title> </media:content> <media:content url="http://cdn.yoast.com/wp-content/uploads/2009/11/problems-solutions.jpg" medium="image"> <media:title type="html">Crossing out problems and instead offering solutions</media:title> <media:thumbnail url="http://cdn2.yoast.com/wp-content/uploads/2009/11/problems-solutions-125x125.jpg" /> </media:content> <media:content url="http://cdn2.yoast.com/wp-content/uploads/2009/10/apple-404.png" medium="image"> <media:title type="html">apple-404</media:title> <media:thumbnail url="http://cdn.yoast.com/wp-content/uploads/2009/10/apple-404-125x125.png" /> </media:content> <media:content url="http://cdn.yoast.com/wp-content/uploads/2009/10/ibm-404.png" medium="image"> <media:title type="html">ibm-404</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2009/10/ibm-404-125x125.png" /> </media:content> <media:content url="http://cdn.yoast.com/wp-content/uploads/2009/11/cre.png" medium="image"> <media:title type="html">cre</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2009/11/cre-125x125.png" /> </media:content> <media:content url="http://cdn3.yoast.com/wp-content/uploads/2009/11/404-error.jpg" medium="image"> <media:title type="html">404-error</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2009/11/404-error-125x125.jpg" /> </media:content> <media:content url="http://cdn2.yoast.com/wp-content/uploads/2009/11/google-crawl-errors.png" medium="image"> <media:title type="html">google-crawl-errors</media:title> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2009/11/google-crawl-errors-125x125.png" /> </media:content> </item> <item><title>The Full mailto Link Syntax</title><link>http://yoast.com/guide-mailto-links/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=guide-mailto-links</link> <comments>http://yoast.com/guide-mailto-links/#comments</comments> <pubDate>Mon, 27 Oct 2008 20:08:24 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category><guid
isPermaLink="false">http://yoast.com/?p=1273</guid> <description><![CDATA[<p>For a small project I had to create a smart mailto link to make my life a bit easier. I wanted the mailto link to hold not only a to and the subject (I'd figured that much out) but a multi lined body too. Turns out that is pretty darn easy to do. So, for [...]</p><p><a
href="http://yoast.com/guide-mailto-links/">The Full mailto Link Syntax</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p><img
class="alignright" src="http://cdn2.yoast.com/wp-content/uploads/2008/10/sending-email.jpg" alt="sending email through mailto links" width="175" height="174" />For a small project I had to create a smart <code>mailto</code> link to make my life a bit easier. I wanted the mailto link to hold not only a <em>to</em> and the subject (I'd figured that much out) but a multi lined body too. Turns out that is pretty darn easy to do. So, for my own reference, and yours, here's a complete overview of everything possible with a mailto link.</p><p>There are a couple of variables you can use, which you'd have to do in standard URL format, remember to properly encode the <code>&amp;</code> if you care about validity of your HTML, so you use <code>&amp;amp;</code> in that case. Here's the full mailto link syntax:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com?subject=subject&amp;amp;cc=cc@example.com&quot;&amp;gt;mail link&amp;lt;/a&amp;gt;</pre><p>Here are the variables you can use in mailto links:</p><table><tbody><tr><td><strong>mailto:</strong></td><td>to set the recipient, or recipients, separate with comma</td></tr><tr><td><strong>&amp;cc=</strong></td><td>to set the CC recipient(s)</td></tr><tr><td><strong>&amp;bcc=</strong></td><td>to set the BCC recipient(s)</td></tr><tr><td><strong>&amp;subject=</strong>&nbsp;</td><td>to set the email subject, URL encode for longer sentences, so replace spaces with %20, etc.</td></tr><tr><td
valign="top"><strong>&amp;body=</strong></td><td>to set the body of the message, you can add entire sentences here, including line breaks. Line breaks should be converted to <code>%0A</code>.</td></tr></tbody></table><h2>Some mailto link examples</h2><p>A simple mailto link:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com&quot;&amp;gt;mail link&amp;lt;/a&amp;gt;</pre><p>mailto link with subject:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com?subject=email%20subject&quot;&amp;gt;mail link&amp;lt;/a&amp;gt;</pre><p>mailto link with multiple recipients:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com,email@example.com&quot;&amp;gt;mail link&amp;lt;/a&amp;gt;</pre><p>mailto link with a CC:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com?cc=email2@example.com&quot;&amp;gt;mail link&amp;lt;/a&amp;gt;</pre><p>A mailto link with message body already started:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com?body=these%20mailto%20links%20are%20cool&quot;&amp;gt;
  e-mail link
&amp;lt;/a&amp;gt;</pre><p>A mailto link with 3 lines of message body:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com?body=these%20mailto%0Alinks%20are%0Acool&quot;&amp;gt;
  mail links
&amp;lt;/a&amp;gt;</pre><p>A mailto link with 3 lines of message body and a BCC:</p><pre class="brush: xml; title: ; notranslate">&amp;lt;a href=&quot;mailto:info@example.com?bcc=mail2@example.com
  &amp;amp;body=these%20mailto%0Alinks%20are%0Acool&quot;&amp;gt;
mailto links
&amp;lt;/a&amp;gt;</pre><p>As you can see, you can add as many of these as you want and stack them on top of each other. Remember that after the email address you'll use a question mark to prefix the first variable, and ampersands ( &amp; ) for each consecutive variable.</p><p>Happy coding and mailing!</p><p><a
href="http://yoast.com/guide-mailto-links/">The Full mailto Link Syntax</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/guide-mailto-links/feed/</wfw:commentRss> <slash:comments>29</slash:comments> <media:thumbnail url="http://cdn2.yoast.com/wp-content/uploads/2008/10/sending-email.jpg" /> <media:content url="http://cdn2.yoast.com/wp-content/uploads/2008/10/sending-email.jpg" medium="image"> <media:title type="html">sending email through mailto links</media:title> </media:content> </item> <item><title>Added a print CSS style sheet</title><link>http://yoast.com/added-print-css-style-sheet/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=added-print-css-style-sheet</link> <comments>http://yoast.com/added-print-css-style-sheet/#comments</comments> <pubDate>Sun, 02 Mar 2008 16:10:57 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[Web Design]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/added-print-css-style-sheet/</guid> <description><![CDATA[<p>Today, I checked an item off on my todo list that had been on there way too long: I created a print style sheet for this site. Every time I write an article that is longer than 5 paragraphs, I get emails from readers asking for a better print style sheet. Until just a few [...]</p><p><a
href="http://yoast.com/added-print-css-style-sheet/">Added a print CSS style sheet</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Today, I checked an item off on my todo list that had been on there way too long: I created a print style sheet for this site. Every time I write an article that is longer than 5 paragraphs, I get emails from readers asking for a better print style sheet. Until just a few minutes ago, printing would include the header, the sidebar and the comments, not exactly friendly.</p><p>Next to that links would be in a different color, depleting your color cartridges and not giving you <em>any</em> info whatsoever. When you've printed an article, you usually have to go back to the online version to be able to open the links. There's a solution for that, and it's actually quite easy: using CSS to add the URL after the link. That's really easy to do with the <code>content</code> declaration, like this:</p><pre class="brush: plain; title: ; notranslate">#content a:after {
	content: &quot; (&quot; attr(href) &quot;) &quot;;
	font-size: 80%;
}</pre><p>Next to that I used <code>display:none;</code> to hide the menu, sidebar and comments, so you get just the article, in black text, on a white background.</p><p>Of course, feel free to have a look at (and copy) my <a
href="http://cdn2.yoast.com/wp-content/themes/jdv/print.css" rel="nofollow">print css</a>!</p><p><a
href="http://yoast.com/added-print-css-style-sheet/">Added a print CSS style sheet</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/added-print-css-style-sheet/feed/</wfw:commentRss> <slash:comments>16</slash:comments> </item> <item><title>Get the number of popular digg posts for a URL</title><link>http://yoast.com/get-the-number-of-popular-digg-posts-for-a-url/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=get-the-number-of-popular-digg-posts-for-a-url</link> <comments>http://yoast.com/get-the-number-of-popular-digg-posts-for-a-url/#comments</comments> <pubDate>Sun, 25 Nov 2007 09:53:54 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[SEO tools]]></category> <category><![CDATA[Social Media]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/get-the-number-of-popular-digg-posts-for-a-url/</guid> <description><![CDATA[<p>Sometimes, for instance when you're building a domain-info tool, you want to know the number of posts on that site that have made it to the Digg frontpage. After playing a bit, I came up with this pretty easy code: Now if you echo $result['result'], you'll get the number of posts for $url that made [...]</p><p><a
href="http://yoast.com/get-the-number-of-popular-digg-posts-for-a-url/">Get the number of popular digg posts for a URL</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Sometimes, for instance when you're building a <a
href="http://yoast.com/code/domain-info/">domain-info tool</a>, you want to know the number of posts on that site that have made it to the Digg frontpage. After playing a bit, I came up with this pretty easy code:</p><pre class="brush: php; title: ; notranslate">
function FrontpageDiggs($url) {
$result['source'] = &quot;http://digg.com/rss_search?search=&quot;.$url.&quot;&amp;area=promoted&amp;type=url&amp;section=all&quot;;
$output = file_get_contents($result['source']);
preg_match_all(&quot;/.*(&lt;item&gt;).*/&quot;,$output,$matches);
$result['result'] = count($matches[1]);
return $result;
}
</pre><p>Now if you echo $result['result'], you'll get the number of posts for $url that made the frontpage.</item></p><p><a
href="http://yoast.com/get-the-number-of-popular-digg-posts-for-a-url/">Get the number of popular digg posts for a URL</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/get-the-number-of-popular-digg-posts-for-a-url/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>OS X 10.5 Leopard: Spaces combined with Parallels</title><link>http://yoast.com/os-x-105-leopard-spaces-combined-with-parallels/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=os-x-105-leopard-spaces-combined-with-parallels</link> <comments>http://yoast.com/os-x-105-leopard-spaces-combined-with-parallels/#comments</comments> <pubDate>Tue, 30 Oct 2007 21:31:26 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Mac OS X]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/os-x-105-leopard-spaces-combined-with-parallels/</guid> <description><![CDATA[<p>OS X 10.5 has this awesome great new feature called Spaces, they're multiple desktops on steroids. You can assign programs to open in a specific Space, swiftly switch between them and loads more cool stuff. Now, if you're a developer and need to test your stuff in Windows, you can assign Parallels (in which you [...]</p><p><a
href="http://yoast.com/os-x-105-leopard-spaces-combined-with-parallels/">OS X 10.5 Leopard: Spaces combined with Parallels</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>OS X 10.5 has this awesome great new feature called <a
href="http://www.apple.com/macosx/features/spaces.html">Spaces</a>, they're multiple desktops on steroids. You can assign programs to open in a specific Space, swiftly switch between them and loads more cool stuff. Now, if you're a developer and need to test your stuff in Windows, you can assign <a
href="http://send.onenetworkdirect.net/z/13534/CD95933/&amp;dp=455207" rel="nofollow">Parallels</a> (in which you can run Windows) to a Space, and that way, you'll be able to switch OS's like you've never done before!</p><p>OS X 10.5 is really looking good, can't wait to get home and play around with it.</p><p><a
href="http://yoast.com/os-x-105-leopard-spaces-combined-with-parallels/">OS X 10.5 Leopard: Spaces combined with Parallels</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/os-x-105-leopard-spaces-combined-with-parallels/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Big hunkin&#8217;list of Mac Tools for SEO&#8217;s and Webdevelopers</title><link>http://yoast.com/big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers</link> <comments>http://yoast.com/big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers/#comments</comments> <pubDate>Wed, 24 Oct 2007 09:20:21 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[SEO]]></category> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Mac OS X]]></category> <category><![CDATA[SEO tools]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers/</guid> <description><![CDATA[<p>I've been wanting to do this list for quite a while, but I finally put myself to doing it: a big list of all the web development and SEO tools I use on my Mac. It's a page, I'll keep updating it when I find new apps that are worth mentioning there. If you have [...]</p><p><a
href="http://yoast.com/big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers/">Big hunkin&#8217;list of Mac Tools for SEO&#8217;s and Webdevelopers</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>I've been wanting to do this list for quite a while, but I finally put myself to doing it: a big list of all <a
href="http://yoast.com/seo-tools/mac-tools/">the web development and SEO tools I use on my Mac</a>. It's a page, I'll keep updating it when I find new apps that are worth mentioning there. If you have any applications I've missed or should be looking at, let me know in the comments!</p><p><a
href="http://yoast.com/big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers/">Big hunkin&#8217;list of Mac Tools for SEO&#8217;s and Webdevelopers</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/big-hunkin-list-of-mac-tools-for-seos-and-webdevelopers/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Webdesign survey</title><link>http://yoast.com/webdesign-survey/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webdesign-survey</link> <comments>http://yoast.com/webdesign-survey/#comments</comments> <pubDate>Tue, 24 Apr 2007 19:01:37 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Web Design]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/webdesign-survey/</guid> <description><![CDATA[<p>It's up again, the annual webdesign survey by A List Apart, I took it, and so should you! (If you don't like surveys do it for the prizes...)</p><p><a
href="http://yoast.com/webdesign-survey/">Webdesign survey</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p><a
href="http://alistapart.com/articles/webdesignsurvey"><img
src="http://cdn3.yoast.com/wp-content/uploads/2007/04/i-took-the-2007-survey.gif" alt="I took the 2007 annual webdesign survey, and so should you!" class="right_float" /></a>It's up again, the <a
href="http://alistapart.com/articles/webdesignsurvey">annual webdesign survey</a> by <a
href="http://www.alistapart.com">A List Apart</a>, I took it, and so should you! (If you don't like surveys do it for the prizes...)</p><p><a
href="http://yoast.com/webdesign-survey/">Webdesign survey</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/webdesign-survey/feed/</wfw:commentRss> <slash:comments>5</slash:comments> <media:thumbnail url="http://cdn3.yoast.com/wp-content/uploads/2007/04/i-took-the-2007-survey.gif" /> <media:content url="http://cdn3.yoast.com/wp-content/uploads/2007/04/i-took-the-2007-survey.gif" medium="image"> <media:title type="html">I took the 2007 annual webdesign survey, and so should you!</media:title> </media:content> </item> <item><title>Implementing a sitewide search function</title><link>http://yoast.com/implementing-a-sitewide-search-function/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=implementing-a-sitewide-search-function</link> <comments>http://yoast.com/implementing-a-sitewide-search-function/#comments</comments> <pubDate>Fri, 06 Apr 2007 09:32:26 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[PHP]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/implementing-a-sitewide-search-function/</guid> <description><![CDATA[<p>Those of you coming to this site more often might have noticed a small change in the search box. It's now implemented sitewide, and I've built a sitewide search functions using the Yahoo! API. It was quite nescessary because I found that people were searching for "sortable.zip" on the blog, and they wouldn't find anything [...]</p><p><a
href="http://yoast.com/implementing-a-sitewide-search-function/">Implementing a sitewide search function</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Those of you coming to this site more often might have noticed a small change in the search box. It's now implemented sitewide, and I've built a sitewide search functions using the <a
href="http://developer.yahoo.net/about">Yahoo! API</a>. It was quite nescessary because I found that people were searching for "sortable.zip" on the blog, and they wouldn't find anything since the pages for the <a
href="http://yoast.com/code/sortable-table/">sortable table script</a> are static.</p><p><strong>Keeping track of what people are searching for</strong><br
/> I had a few things to make sure while building this search function. First of all, I wanted to have the same info I get when I look at the statistics page for the <a
href="http://www.thunderguy.com/semicolon/wordpress/search-meter-wordpress-plugin/">Search Meter WordPress plugin</a>. Secondly, I wanted to show more then just the post or page title. The last, but also very important demand I have is that it's fast. Well the first one was quite easy, I decided to put  the data into the table for the search meter plugin and just use that interface, instead of writing that myself. The function was basically adapted from the code of the plugin:</p><pre class="brush: php; title: ; notranslate">
function save_search($searchstring, $numresults) {
global $table_prefix;
// Save into the DB. Usually this will be a new query, so try to insert first
$query = &quot;INSERT INTO {$table_prefix}searchmeter (terms,date,count,last_hits) VALUES ('$searchstring',CURDATE(),1,$numresults)&quot;;
$success = mysql_query($query);
if (!$success) {
$query = &quot;UPDATE '{$table_prefix}searchmeter' SET count = count + 1, last_hits = $numresults WHERE terms = '$searchstring' AND date = CURDATE()&quot;;
$success = mysql_query($query);
}
return true;
}</pre><p><strong>Constructing the Yahoo! API query</strong><br
/> The second thing wasn't too hard to do either, as Yahoo! returns a snippet with the searchresult for the query. The <a
href="http://en.wikipedia.org/wiki/Representational_State_Transfer"><abbr
title="Representational State Transfer">REST</abbr></a> query is constructed as follows:</p><pre class="brush: php; title: ; notranslate">
$query = &quot;site:yoast.com+&quot;.urlencode($searchstring);
$request = 'http://search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$yahooappid.'&amp;query='.$query.'&amp;output=php';
</pre><p>The part <code>output=php</code> makes the API return serialized PHP, which, after calling <code>unserialize</code>, turns into a nice clean array, which you can then loop through to display the results.</p><p>The only thing left was adding the search box to my layout for the non-blog pages, and fixing the blog to look the same. In the theme I had to change the action URL of the searchform.php file to /search/, and there it was: my new site wide search function!</p><p>So far, it's all good. I've got a few things left, like building in paging so you can see more than 10 results. I've got one thing that bothers me though: it's a bit slow. Of course I could solve this by spidering my own site with something like <a
href="http://www.htdig.org/">ht://Dig</a>, but I think there ought to be a better solution... Perhaps you guys and girls know of one?</p><p><a
href="http://yoast.com/implementing-a-sitewide-search-function/">Implementing a sitewide search function</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/implementing-a-sitewide-search-function/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>The correct way of using conditional comments</title><link>http://yoast.com/the-correct-way-of-using-conditional-comments/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-correct-way-of-using-conditional-comments</link> <comments>http://yoast.com/the-correct-way-of-using-conditional-comments/#comments</comments> <pubDate>Sun, 01 Apr 2007 10:00:12 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Web Design]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/the-correct-way-of-using-conditional-comments/</guid> <description><![CDATA[<p>Some people, like Jens Meiert, have argued that using conditional comments to fix layout bugs for IE is wrong. For those of you who don't know what they are, check out my article on conditional comments. I on the other hand, think that it's the only proper way of working around IE CSS bugs. If [...]</p><p><a
href="http://yoast.com/the-correct-way-of-using-conditional-comments/">The correct way of using conditional comments</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Some people, like <a
href="http://meiert.com/en/blog/20070201/why-conditional-comments-are-bad-repeat-bad/">Jens Meiert</a>, have argued that using conditional comments to fix layout bugs for IE is wrong. For those of you who don't know what they are, check out my article on <a
href="http://yoast.com/code/conditional-comments.html">conditional comments</a>. I on the other hand, think that it's the only proper way of working around IE CSS bugs.</p><p>If you use "old-style" CSS hacks, you're bound to end up in trouble once the IE team decides to fix yet another bug. Because that's what these CSS hacks do: they rely upon bugs in IE to make sure it parses the CSS the way YOU want it to. Conditional comments, on the other hand, rely on a built-in feature, provided to you by the IE developer team to work around your problems. Which one of these do you think has the most chance of surviving the coming years? Right.</p><p><a
href="http://www.clagnut.com/">Richard Rutter</a> gives a very wise comment on Jens' post, basically agreeing with my opinion, but he says the following as well:</p><blockquote><p>In terms of reliable use among teams, it is of course advisable to avoid CC or CSS hacks wherever possible, however as we all know life isnâ€™t that simple. So where IE-specific workarounds are needed, our workflow is to put those rule in a separate style sheet called via CC and - most importantly - to document the normal style sheet where rules are being overwritten (as is normally the case).</p></blockquote><p>Document those overrides, and do that <em>all the time</em>. If you do that, conditional comments are surely the best way to make sure your layout works in al browsers.</p><p><a
href="http://yoast.com/the-correct-way-of-using-conditional-comments/">The correct way of using conditional comments</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/the-correct-way-of-using-conditional-comments/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PHPSESSID in your URL? Learn to 301 redirect them with PHP</title><link>http://yoast.com/phpsessid-url-redirect/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=phpsessid-url-redirect</link> <comments>http://yoast.com/phpsessid-url-redirect/#comments</comments> <pubDate>Fri, 30 Mar 2007 14:36:46 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[SEO]]></category> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[PHP]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/how-to-get-rid-of-phpsessid-in-the-url-and-redirect/</guid> <description><![CDATA[<p>I'm doing some work on a site which has like 4,500 pages indexed with a PHPSESSID in the URL, causing some major duplicate content problems. I got the server admin to disable the PHPSESSID's by adding the following to the vhost config: I also wanted Google to get a clean URL when it decided to [...]</p><p><a
href="http://yoast.com/phpsessid-url-redirect/">PHPSESSID in your URL? Learn to 301 redirect them with PHP</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>I'm doing some work on a site which has like 4,500 pages indexed with a PHPSESSID in the URL, causing some major duplicate content problems. I got the server admin to disable the PHPSESSID's by adding the following to the vhost config:</p><pre class="brush: plain; title: ; notranslate">php_value session.use_trans_sid 0
php_value session.use_only_cookies 1</pre><p>I also wanted Google to get a clean URL when it decided to spider one of the old URL's again, and didn't have access to mod_rewrite, so I redirected them with some PHP. The solution is quite simple:</p><pre class="brush: plain; title: ; notranslate">if (isset($_GET['PHPSESSID'])) {
	$requesturi = preg_replace('/?PHPSESSID=[^&amp;]+/',&quot;&quot;,$_SERVER['REQUEST_URI']);
	$requesturi = preg_replace('/&amp;PHPSESSID=[^&amp;]+/',&quot;&quot;,$requesturi);
	header(&quot;HTTP/1.1 301 Moved Permanently&quot;);
	header(&quot;Location: http://&quot;.$_SERVER['HTTP_HOST'].$requesturi);
	exit;
}</pre><p><a
href="http://yoast.com/phpsessid-url-redirect/">PHPSESSID in your URL? Learn to 301 redirect them with PHP</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/phpsessid-url-redirect/feed/</wfw:commentRss> <slash:comments>19</slash:comments> </item> <item><title>FeedRoll</title><link>http://yoast.com/feedroll/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=feedroll</link> <comments>http://yoast.com/feedroll/#comments</comments> <pubDate>Sat, 17 Feb 2007 21:34:28 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[RSS]]></category> <category><![CDATA[Web Design]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/feedroll/</guid> <description><![CDATA[<p>Today I finished up my work on FeedRoll, a site which offers a widget to show RSS feeds on your site. I've fixed several things on it, yet the most fun came today. There was a colorpicker on it before that only worked on Internet Explorer 5 and up, and nothing else... Now, those of [...]</p><p><a
href="http://yoast.com/feedroll/">FeedRoll</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Today I finished up my work on <a
rel="nofollow" href="http://www.feedroll.com">FeedRoll</a>, a site which offers a widget to show RSS feeds on your site. I've fixed several things on it, yet the most fun came today. There was a colorpicker on it before that only worked on Internet Explorer 5 and up, and nothing else... Now, those of you who know me, know that I can't stand the sight of anything IE only, so I had to fix it.</p><p><span
id="more-159"></span></p><p>So I implemented this <a
href="http://www.knallgrau.at/code/colorpicker">colorpicker</a>, you can check it out on the <a
rel="nofollow" href="http://www.feedroll.com/rssviewer/">RSS viewer</a> page of FeedRoll. It absolutely rocks!</p><p><a
href="http://yoast.com/feedroll/">FeedRoll</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/feedroll/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Sortable table script updated to v1.5.5</title><link>http://yoast.com/sortable-table-script-updated-to-v155/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sortable-table-script-updated-to-v155</link> <comments>http://yoast.com/sortable-table-script-updated-to-v155/#comments</comments> <pubDate>Fri, 26 Jan 2007 21:13:38 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Web Design]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/sortable-table-script-updated-to-v155/</guid> <description><![CDATA[<p>I got an email from Mozilla's director of product management Sherman Dickman today, that my sortable table script wasn't sorting numbers above 1 million which have comma's in them correctly (they do have a lot of Firefox downloads ;) ). The problem was caused by the fact that replace only replaced items once, where they [...]</p><p><a
href="http://yoast.com/sortable-table-script-updated-to-v155/">Sortable table script updated to v1.5.5</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>I got an email from Mozilla's director of product management <a
href="http://shermandickman.wordpress.com/">Sherman Dickman</a> today, that my <a
href="http://yoast.com/code/sortable-table/">sortable table script</a> wasn't sorting numbers above 1 million which have comma's in them correctly (they do have a lot of Firefox downloads ;) ).</p><p>The problem was caused by the fact that <code>replace</code> only replaced items once, where they should be replaced multiple times. I don't know where Sherman will be using the script yet, once I do I'll of course tell you all about it!</p><p><a
href="http://yoast.com/sortable-table-script-updated-to-v155/">Sortable table script updated to v1.5.5</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/sortable-table-script-updated-to-v155/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>As usual, Technorati walks ahead of the pack</title><link>http://yoast.com/as-usual-technorati-walks-ahead-of-the-pack/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=as-usual-technorati-walks-ahead-of-the-pack</link> <comments>http://yoast.com/as-usual-technorati-walks-ahead-of-the-pack/#comments</comments> <pubDate>Tue, 23 Jan 2007 22:50:30 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Blogging]]></category> <category><![CDATA[Microformats]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/as-usual-technorati-walks-ahead-of-the-pack/</guid> <description><![CDATA[<p>They "invented" blogsearch, and did a LOT for the webdevelopment and blogging community. Now Technorati, it turns out, is working on the microformats search I asked for only two articles ago (it was there before that, I just didn't know about it)... Check it out in Technorati's Kitchen.</p><p><a
href="http://yoast.com/as-usual-technorati-walks-ahead-of-the-pack/">As usual, Technorati walks ahead of the pack</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>They "invented" blogsearch, and did a LOT for the webdevelopment and blogging community. Now Technorati, it turns out, is working on the microformats search <a
href="http://yoast.com/googling-for-microformats/">I asked for</a> only two articles ago (it was there before that, I just didn't know about it)... Check it out in <a
href="http://kitchen.technorati.com/contact/search/">Technorati's Kitchen</a>.</p><p><a
href="http://yoast.com/as-usual-technorati-walks-ahead-of-the-pack/">As usual, Technorati walks ahead of the pack</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/as-usual-technorati-walks-ahead-of-the-pack/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Googling for microformats</title><link>http://yoast.com/googling-for-microformats/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=googling-for-microformats</link> <comments>http://yoast.com/googling-for-microformats/#comments</comments> <pubDate>Mon, 22 Jan 2007 13:31:46 +0000</pubDate> <dc:creator>Joost de Valk</dc:creator> <category><![CDATA[SEO]]></category> <category><![CDATA[Webdesign & development]]></category> <category><![CDATA[Microformats]]></category> <category><![CDATA[Web Design]]></category><guid
isPermaLink="false">http://www.joostdevalk.nl/blog/googling-for-microformats/</guid> <description><![CDATA[<p>Imagine, you can type in a query like "joost de valk class:vcard" and Google comes up with my contact page, because that has a vcard class in it's markup, the main class of the hCard microformat. This was suggested today on the uf-discuss mailing list, a mailing list I've been lurking on for quite a [...]</p><p><a
href="http://yoast.com/googling-for-microformats/">Googling for microformats</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></description> <content:encoded><![CDATA[<p>Imagine, you can type in a query like "joost de valk class:vcard" and Google comes up with <a
href="http://yoast.com/contact/">my contact page</a>, because that has a vcard class in it's markup, the main class of the <a
href="http://microformats.org/wiki/hcard">hCard microformat</a>. This was suggested today on the uf-discuss mailing list, a mailing list I've been lurking on for quite a while now, and it made me go "YES! That's what I want!".</p><p><span
id="more-134"></span></p><p>It would be so cool if Google, or any other SE for that matter, knew how to handle searches like that. The same could be done for events, resume's etc. Google would probably want to make it simpler, or make another page for it, since I can't see my mum typing in "class:vcard", but the idea is good, and I think something people should be working on.</p><p>Update 18-2-2010: It took them a while, but it's hear now: <a
href="http://yoast.com/google-microformats-conversion-rate-optimization-serps/">Google &amp; Microformats</a>.</p><p><a
href="http://yoast.com/googling-for-microformats/">Googling for microformats</a> is a post by <a
rel="author" href="http://yoast.com/author/admin/">Joost de Valk</a> on <a
href="http://yoast.com">Yoast - Tweaking Websites</a>.A good WordPress blog needs good hosting, you don't want your blog to be slow, or, even worse, down, do you? Check out my thoughts on <a
href="http://yoast.com/wordpress-hosting/">WordPress hosting</a>!</p>]]></content:encoded> <wfw:commentRss>http://yoast.com/googling-for-microformats/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc
Database Caching 8/95 queries in 0.028 seconds using apc
Object Caching 3946/4136 objects using apc
Content Delivery Network via cdn.yoast.com

Served from: yoast.com @ 2012-02-08 22:13:28 -->
