<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>YaaaHaaa.com::the Creative Internet Architect &#187; Tech</title>
	<atom:link href="http://www.yaaahaaa.com/category/blog/tech/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yaaahaaa.com</link>
	<description>the Creative Internet Architect</description>
	<lastBuildDate>Thu, 26 Aug 2010 03:15:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>24 Stunning Free Drupal Themes!</title>
		<link>http://www.yaaahaaa.com/24-stunning-free-drupal-themes.html</link>
		<comments>http://www.yaaahaaa.com/24-stunning-free-drupal-themes.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 04:04:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=169</guid>
		<description><![CDATA[One of the knocks on Drupal has been it’s lack of high quality theme  contributions. This was also an assumption on my part.Ã‚Â  I want to  apologize for assuming that this is the case. Drupal actually has some  fantastic free contributed themes. And although there may not be as many  as [...]]]></description>
			<content:encoded><![CDATA[<p>One of the knocks on Drupal has been it’s lack of high quality theme  contributions. This was also an assumption on my part.Ã‚Â  I want to  apologize for assuming that this is the case. Drupal actually has some  fantastic free contributed themes. And although there may not be as many  as it’s counterpart Wordpress, you do have some fantastic options with  Drupal.</p>
<p>Below I have compiled a list of the 24 most stunning free Drupal  themes in the community to-date. These are the best of the best and you  won’t find better ones anywhere. Not yet anyways. But with Drupal’s  bright future not so distant, there is sure to be more addedÃ‚Â  to this  list in the coming months.</p>
<h3>1. Ebizon Redfire</h3>
<p><em>Compatible with Drupal 5 &amp; 6</em></p>
<p>Ebizon RedFire is a strict xHTML validated, standards compliant CSS  based drupal template with mission statement, breadcrumbs, custom  footer. It is a fixed width with beautiful red, black on white  background color theme.</p>
<p><img title="redfire" src="http://chasesagum.com/wp-content/uploads/2009/10/redfire.jpg" alt="redfire" /></p>
<p><a href="http://themebot.org/html-templates/Redfire2/" target="_blank">demo </a>| <a href="http://drupal.org/project/ebizon_redfire" target="_blank">download</a></p>
<h3>2. Sky</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>This is a center aligned, CSS-based (no tables), multi-column layout  theme, with some configurable color options, and support for many core  configurations and some popular contributed modules.</p>
<p><img title="sky" src="http://chasesagum.com/wp-content/uploads/2009/10/sky.jpg" alt="sky" /></p>
<p><a href="http://sky.graviteklabs.com/" target="_blank">demo </a>| <a href="http://drupal.org/project/sky" target="_blank">download</a><br />
<span id="more-169"></span></p>
<h3>3. Acquia Marina</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Acquia Marina is an advanced theme developed by TopNotchThemes in  partnership with Acquia for their commercially-supported Drupal  distribution. It contains the same kinds of features you’ll find in our  other Drupal themes.</p>
<p><img title="acquia" src="http://chasesagum.com/wp-content/uploads/2009/10/acquia.jpg" alt="acquia" /></p>
<p>demo | <a href="http://drupal.org/project/acquia_marina" target="_blank">download</a></p>
<h3>4. Marinelli</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Marinelli is a 3 column, tableless layout theme with a wide image  banner and a “top-tabbed” primary-links system.</p>
<p><img title="marinelli" src="http://chasesagum.com/wp-content/uploads/2009/10/marinelli.jpg" alt="marinelli" /></p>
<p><a href="http://www.signalkuppe.com/marinelli/" target="_blank">demo </a>|  <a href="http://drupal.org/project/marinelli" target="_blank">download</a></p>
<h3>5. Agregado</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Agregado was originally designed by Darren Hoyt and Matt Dawson for  WordPress and commissioned by the folks at Smashing Magazine. Ported to  Drupal theme by Leow Kah Thong.</p>
<p><img title="agregado" src="http://chasesagum.com/wp-content/uploads/2009/10/agregado.jpg" alt="agregado" /></p>
<p><a href="http://demo.drupal-theme.net/?theme=agregado" target="_blank">demo </a>| <a href="http://drupal.org/project/agregado" target="_blank">download</a></p>
<h3>6. Color Paper</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Color Paper was initially created by the DreamTemplate team for  WordPress. This theme aims to combine visual appeal with clean  typography and vivid design elements. It was created by them especially  for Smashing Magazine and its readers. Which was later converted to a  Drupal theme by Leow Kah Thong.</p>
<p><img title="colorpaper" src="http://chasesagum.com/wp-content/uploads/2009/10/colorpaper.jpg" alt="colorpaper" /></p>
<p><a href="http://demo.drupal-theme.net/?theme=colorpaper" target="_blank">demo </a>| <a href="http://drupal.org/project/colorpaper" target="_blank">download</a></p>
<h3>7. Acquia Slate</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Acquia Slate is an advanced, dark, corporate Drupal theme developed  by TopNotchThemes in partnership with Acquia for their  commercially-supported Drupal distribution.</p>
<p><img title="slate" src="http://chasesagum.com/wp-content/uploads/2009/10/slate.jpg" alt="slate" /></p>
<p>demo | <a href="http://drupal.org/project/acquia_slate" target="_blank">download</a></p>
<h3>8. Worthapost</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Addari is another clean theme contributed to Drupal from  Worthapost.com. This theme targets those who want cleanliness and web  2.0 mixture for their Drupal based website.</p>
<p><img title="worthapost" src="http://chasesagum.com/wp-content/uploads/2009/10/worthapost.jpg" alt="worthapost" /></p>
<p><a href="http://demosite.worthapost.com/?theme=addari" target="_blank">demo </a>| <a href="http://drupal.org/project/addari" target="_blank">download</a></p>
<h3>9. Analytic</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Clean modern theme with fine tuned css, will be great for blogs,  communities and online media.</p>
<p><img title="anaytics" src="http://chasesagum.com/wp-content/uploads/2009/10/anaytics.jpg" alt="anaytics" /></p>
<p><a href="http://sidashin.ru/analytic/" target="_blank">demo </a>| <a href="http://drupal.org/project/analytic" target="_blank">download</a></p>
<h3>10. Colourise</h3>
<p><em>Compatible with Drupal 6</em></p>
<p><em><img title="colourise" src="http://chasesagum.com/wp-content/uploads/2009/10/colourise.jpg" alt="colourise" /><br />
</em></p>
<p><a href="http://studio.webzer.net/drupal/colourise/" target="_blank">demo </a>| <a href="http://drupal.org/project/colourise" target="_blank">download</a></p>
<h3>11. Dark Elegance</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>This theme mainly focuses on simplicity in usability, accessibility,  typography &amp; is built around a css-based (tableless) layout. The  color palette uses simple flat dark colors which makes it a clean &amp;  fast loading theme.</p>
<p><img title="darkElegance" src="http://chasesagum.com/wp-content/uploads/2009/10/darkElegance.jpg" alt="darkElegance" /></p>
<p><a href="http://dezinerfolio.com/demo/darkelegance/" target="_blank">demo </a>| <a href="http://drupal.org/project/darkelegance" target="_blank">download</a></p>
<h3>12. Magazeen</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>This bold magazine 2-col-theme was designed with the main focus being  on typography, grids and magazine-look. It was created especially for  Smashing Magazine and its readers.</p>
<p><img title="magazeen" src="http://chasesagum.com/wp-content/uploads/2009/10/magazeen.jpg" alt="magazeen" /></p>
<p><a href="http://demo.twidori.com/" target="_blank">demo </a>| <a href="http://drupal.org/project/magazeen" target="_blank">download</a></p>
<h3>13. Pixeled</h3>
<p><em>Compatible with Drupal 6</em></p>
<p><em><img title="pixeled" src="http://chasesagum.com/wp-content/uploads/2009/10/pixeled.jpg" alt="pixeled" /><br />
</em></p>
<p><a href="http://pixeled.webmediadx.com/" target="_blank">demo </a>| <a href="http://pixeled.webmediadx.com/" target="_blank">download</a></p>
<h3>14. Scruffy</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Scruffy is a grungy, two-column blog theme originally designed for  Wordpress by Cobus Bester. The Drupal port preserves the same  fundamental layout, with minor tweaks to work with non-node pages,  Drupal status messages, and so on.</p>
<p><img title="scruffy" src="http://chasesagum.com/wp-content/uploads/2009/10/scruffy.jpg" alt="scruffy" /></p>
<p><a href="http://fresh01.co.za/preview/" target="_blank">demo </a>| <a href="http://drupal.org/project/scruffy" target="_blank">download</a></p>
<h3>15. The Morning After</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>This is a port of the Wordpress theme The Morning After to  Drupal/ProsePoint, developed as a subtheme of Zen.</p>
<p><img title="morningAfter" src="http://chasesagum.com/wp-content/uploads/2009/10/morningAfter.jpg" alt="morningAfter" /></p>
<p><a href="http://demo.prosepoint.org/" target="_blank">demo </a>| <a href="http://drupal.org/project/tma" target="_blank">download</a></p>
<h3>16. Mulpo</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Mulpo is the new theme for mulpo.com. It is a simple clean theme with  semantic markup, ideal for blogs. The mulpo theme manages to look very  stylish with just one background image, all the rest is done with CSS.  The current release of the mulpo theme has semantic clean markup, and is  very very lightweight. Mulpo has only been tested in Firefox and  Safari.</p>
<p><img title="mulpo" src="http://chasesagum.com/wp-content/uploads/2009/10/mulpo.jpg" alt="mulpo" /></p>
<p><a href="http://mulpo.com/" target="_blank">demo </a>| <a href="http://drupal.org/project/mulpo" target="_blank">download</a></p>
<h3>17. 960 Robots</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>960 Robots is a theme created by Lullabot for its Drupal theming  videos and DVDs. This theme, based on the 960 grid system, features two  columns on the right side of the page, a two-column footer,  calandar-page dates for posts, and real-name usernames in posts  (requires profile field with the machine name “profile_real_name”). The  theme also uses Twitter’s search API to display a random message based  on a configurable search string as the site’s slogan (PHP5 required).</p>
<p><img title="960robots" src="http://chasesagum.com/wp-content/uploads/2009/10/960robots.jpg" alt="960robots" /></p>
<p><a href="http://960robots.lullabot.com/" target="_blank">demo </a>| <a href="http://drupal.org/project/ninesixtyrobots" target="_blank">download</a></p>
<h3>18. Inove</h3>
<p><em>Compatible with Drupal 6</em></p>
<p><em><img title="inove" src="http://chasesagum.com/wp-content/uploads/2009/10/inove.jpg" alt="inove" /><br />
</em></p>
<p><a href="http://www.tauschen-ohne-geld.de/drupal/node" target="_blank">demo </a>| <a href="http://drupal.org/project/inove" target="_blank">download</a></p>
<h3>19. Simply Modern</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Simply Modern is a table-less, CSS driven design sporting an advanced  feature set.</p>
<p><img title="simplyModern" src="http://chasesagum.com/wp-content/uploads/2009/10/simplyModern.jpg" alt="simplyModern" /></p>
<p><a href="http://sm.tributemedia.com/" target="_blank">demo </a>| <a href="http://drupal.org/project/simply_modern" target="_blank">download</a></p>
<h3>20. Summertime</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Summertime is a beautiful theme with lots of small fancy things which  will make your Drupal website look unique.</p>
<p><img title="summertime" src="http://chasesagum.com/wp-content/uploads/2009/10/summertime.jpg" alt="summertime" /></p>
<p><a href="http://sidashin.ru/summertime/" target="_blank">demo </a>| <a href="http://drupal.org/project/summertime" target="_blank">download</a></p>
<h3>21. Compositio</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Beautifully crafted blog theme from Design Disease. Designed to work  with the Activity Stream and Tagadelic modules. 2 col only. Ported using  the Genesis ULTRALITE starter subtheme.</p>
<p><em><img title="compositio" src="http://chasesagum.com/wp-content/uploads/2009/10/compositio.jpg" alt="compositio" /><br />
</em></p>
<p><a href="http://demo.drupal-theme.net/?theme=compositio" target="_blank">demo </a>| <a href="http://design.acquia.com/drupal-themes/compositio">download</a></p>
<h3>22. 2 Tone</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>Simplistic two tone theme is perfect for any drupal website! It can  be used as a theme for your personal blog or your own company website.</p>
<p><img title="2tone" src="http://chasesagum.com/wp-content/uploads/2009/10/2tone.jpg" alt="2tone" /></p>
<p><a href="http://preview.drupalstyle.com/?theme=twotone" target="_blank">demo </a>| <a href="http://drupal-theme.net/2-Tone-Drupal-Theme" target="_blank">download</a></p>
<h3>23. Arthemia</h3>
<p><em>Compatible with Drupal 6</em></p>
<p>A port and modification of the Arthemia Free Wordpress theme  converted to Drupal The theme is of high quality, has 11 configurable  regions and can be used in one and two column layouts.</p>
<p><img title="arthemia" src="http://chasesagum.com/wp-content/uploads/2009/10/arthemia.jpg" alt="arthemia" /></p>
<p><a href="http://demo.drupal-theme.net/?theme=arthemia" target="_blank">demo </a>| <a href="http://drupal.org/project/arthemia" target="_blank">download</a></p>
<h3>24. Lite Jazz</h3>
<p><em>Compatible with Drupal 5 &amp; 6</em></p>
<p>LiteJazz is a GPL theme by RoopleTheme. It features 3 color styles,  12 fully collapsible regions, suckerfish menus, fluid or fixed widths,  easy configuration, and more.</p>
<p><img title="litejazz" src="http://chasesagum.com/wp-content/uploads/2009/10/litejazz.jpg" alt="litejazz" /></p>
<p><a href="http://demo.roopletheme.com/litejazz" target="_blank">demo </a>|  <a href="http://drupal.org/project/litejazz" target="_blank">download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/24-stunning-free-drupal-themes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>30+ Plugins for Wordpress Comments</title>
		<link>http://www.yaaahaaa.com/30-plugins-for-wordpress-comments.html</link>
		<comments>http://www.yaaahaaa.com/30-plugins-for-wordpress-comments.html#comments</comments>
		<pubDate>Wed, 27 Jan 2010 03:40:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[comment]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=160</guid>
		<description><![CDATA[When working on a WordPress () blog, posts often take center stage. However, the comments are often just as important – they create valuable discussion. And yet the default WordPress comment box is simplistic and uninspiring – here are Mashable’s () favorite comment-focused WordPress plugins that can eliminate spam, improve the appearance of comments, and [...]]]></description>
			<content:encoded><![CDATA[<p>When working on a <span>WordPress<span><span> (</span><img src="http://netdna.blippr.com/images/inline-face_07.png?1260002206" alt="WordPress" width="14" height="14" /><span>)</span></span></span> blog, posts often take center stage. However, the comments are often just as important – they create valuable discussion. And yet the default WordPress comment box is simplistic and uninspiring – here are <span>Mashable’s<span><span> (</span><img src="http://netdna.blippr.com/images/inline-face_07.png?1260002206" alt="Mashable" width="14" height="14" /><span>)</span></span></span> favorite comment-focused WordPress plugins that can eliminate spam, improve the appearance of comments, and add more value to your posts.</p>
<p><strong>Fight Spam</strong></p>
<ul id="contactinfo"><img src="http://cdn.mashable.com/wp-content/uploads/2007/07/akismet.PNG" alt="akismet.PNG" /></ul>
<p><a href="http://www.akismet.com/">Akismet</a> – Antispam plugin from the creators of Wordpress that uses a central database of spam comments to flag spam. Requires a free API key from <a href="http://wordpress.com/">Wordpress.com</a><span><a rel="http://www.blippr.com/apps/570551-WordPresscom.whtml" href="http://www.blippr.com/apps/570551-WordPresscom" target="_blank"><span> (</span><img style="display: none;" src="http://netdna.blippr.com/images/inline-face_09.png?1260002206" alt="WordPress.com" width="14" height="14" /><span>)</span></a></span></p>
<p><a href="http://unknowngenius.com/blog/wordpress/spam-karma/">Spam Karma</a> – Analyzes comments for spam based on a karma system.</p>
<p><a href="http://www.homelandstupidity.us/software/bad-behavior/">Bad Behavior</a> – Prevents spambots from even accessing your site by analyzing their HTTP requests.</p>
<p><a href="http://www.herod.net/dypm/">Did You Pass Math?</a> – Asks commenters a simple math question before their comments are posted.</p>
<p><a href="http://www.jamesmckay.net/code/comment-timeout/20/">Comment Timeout</a> – Closes comments on old posts.<span id="more-160"></span></p>
<p><strong>Encourage Commenting</strong></p>
<p><a href="http://www.siteamonth.com/blogfollow-show-a-snippet-from-a-commenters-blog-in-the-comment">BlogFollow</a> – Shows a snippet of the commenter’s blog at the bottom of the comment.</p>
<p><a href="http://kimmo.suominen.com/sw/dofollow/">DoFollow</a> – Removes “nofollow” attributes from links in comments so search engines can follow them.</p>
<p><a href="http://www.turkhitbox.com/wordpress-seo/dofollow-trackbacks-plugin.html">DoFollow Trackbacks</a> – Removes “nofollow” attributes from trackbacks<br />
<a href="http://www.pfadvice.com/wordpress-plugins/show-top-commentators/"><br />
Show Top Commentators</a> – Lists the most frequent commentators on your blog, along with links to their blogs, in your sidebar.</p>
<p><strong>Improve appearance</strong></p>
<p><a href="http://cre8d-design.com/blog/2006/01/03/wordpress-plugin-nicer-trackbacks/">Nicer Trackbacks</a> – Improves the appearance of trackbacks from other blogs.</p>
<p><a href="http://www.village-idiot.org/archives/2007/04/18/wp-noshit/">WP-NoSh*t</a> – Filters bad words from comments.</p>
<p><a href="http://granimpetu.com.ar/numbered-comments/">Numbered Comments</a> Adds numbers to comments.</p>
<p><a href="http://dev.wp-plugins.org/wiki/AuthorHighlight">AuthorHighlight</a> – Highlights comments by the blog’s author.</p>
<p><a href="http://kamajole.dk/blog/plugins/comment-highlighter/">Comment Highlighter</a> – Styles comments based on the author’s name, email, or URL.</p>
<p><a href="http://www.village-idiot.org/archives/2006/06/29/wp-chunk/">wp-chunk</a> – Truncates long URLs in comments to prevent them from stretching the page.</p>
<p><strong>Enable rich comments</strong></p>
<ul id="contactinfo"><img style="display: inline;" src="http://cdn.mashable.com/wp-content/uploads/2007/07/customsmilies.PNG" alt="customsmilies.PNG" /></ul>
<p><a href="http://qad.donationcoders.com/wp/custom-smileys">Custom Smileys</a> – Adds clickable smiley emoticons to comments.</p>
<p><a href="http://mk.netgenes.org/my-plugins/mcecomments/">TinyMCEComments</a> – Turns the comment box into a full-featured rich text editor.</p>
<p><a href="http://dev.wp-plugins.org/wiki/LiveCommentPreview">Live Comment Preview</a> – Allows readers to preview their comment before posting.</p>
<p><a href="http://sw-guide.de/wordpress/plugins/edit-comments-xt/">Edit Comments XT</a> – Lets commentators edit their own comments.</p>
<p><strong>Enable avatars</strong></p>
<p><a href="http://site.gravatar.com/">Gravatar</a><span><a rel="http://www.blippr.com/apps/451079-Gravatar.whtml" href="http://www.blippr.com/apps/451079-Gravatar" target="_blank"><span> (</span><img style="display: none;" src="http://netdna.blippr.com/images/inline-face_05.png?1260002206" alt="Gravatar" width="14" height="14" /><span>)</span></a></span> – Displays user-selected avatars from a central database next to comments.</p>
<p><a href="http://dev.wp-plugins.org/wiki/favatars">Favatars</a> – Pulls the favicon from a commenter’s blog or website, and uses that for their avatar.</p>
<p><a href="http://kamajole.dk/blog/plugins/mbla">MBLA</a> – Adds user images from MyBlogLog to comments.</p>
<p><a href="http://the-notebook.org/12/01/2006/openid-comments-for-wordpress/">OpenID Comments</a> – Lets readers comment with their OpenID identity.</p>
<p><strong>Show off comments</strong></p>
<ul id="contactinfo"><img style="display: inline;" src="http://cdn.mashable.com/wp-content/uploads/2007/07/simplecocomments.PNG" alt="simplecocomments.PNG" /></ul>
<p><a href="http://ja.rafi.pl/2006/05/01/wp-most-commented-posts/">WP-Most Commented Posts</a> – Displays posts with the most comments in the sidebar.</p>
<p><a href="http://www.connectedinternet.co.uk/2007/01/28/new-plugin-latest-comments-with-avatars-reloaded/">Latest Comments with Avatars Reloaded</a> – Shows the latest comments, along with the MyBlogLog avatars of the commenters.</p>
<p><strong>Allow better conversation</strong></p>
<p><a href="http://notizblog.org/projects/simple-cocomments/">Simple CoComments</a> – Tracks the conversation across blogs.</p>
<p><a href="http://www.cyber-knowledge.net/blog/2006/10/15/wordpress-plugin-rate-your-comments-comment-karma/">Comment Karma</a> – <span>Digg<span><a rel="http://www.blippr.com/apps/336668-Digg.whtml" href="http://www.blippr.com/apps/336668-Digg" target="_blank"><span> (</span><img style="display: none;" src="http://netdna.blippr.com/images/inline-face_05.png?1260002206" alt="Digg" width="14" height="14" /><span>)</span></a></span></span>-style voting on comments.</p>
<p><a href="http://www.damagedgoods.it/wp-plugins/quoter/">Quoter</a> – Allows users to quote a previous comment in their comment.</p>
<p><a href="http://lordchaos.dominatus.net/wordpress-plugin-whisper/">Whisper</a> – Lets users “whisper” comments that are only visible to one person.</p>
<p><strong>Moderate comments effectively</strong></p>
<p><a href="http://blog.loopion.com/comment-twitter-sms-notification/">Comment Twitter SMS Notification</a> – Notifies you of new comments through Twitter SMS.</p>
<p><a href="http://www.justinshattuck.com/bannage/">Bannage</a> – Adds the ability to ban users from commenting by name, email, or IP.</p>
<p><a href="http://www.hoogervorst.ca/arthur/?page_id=1175">CommentCentral</a> – Allows batch opening and closing of comments on multiple posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/30-plugins-for-wordpress-comments.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Everything you need to know about WordPress 2.9’s post image feature</title>
		<link>http://www.yaaahaaa.com/everything-you-need-to-know-about-wordpress-2-9%e2%80%99s-post-image-feature.html</link>
		<comments>http://www.yaaahaaa.com/everything-you-need-to-know-about-wordpress-2-9%e2%80%99s-post-image-feature.html#comments</comments>
		<pubDate>Sun, 24 Jan 2010 07:09:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[WordPress 2.9]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=155</guid>
		<description><![CDATA[
You may have heard a bit of news about a new thumbnail feature for themes coming to WordPress 2.9. Yes, you’ll be able to easily upload a post thumbnail. However, it’s not just thumbnails. The image will have various sizes. So, I’m going to refer to this feature as the post image feature.
In this tutorial, [...]]]></description>
			<content:encoded><![CDATA[<div>
<span>Y</span>ou may have heard a bit of news about a new thumbnail feature for themes coming to WordPress 2.9. Yes, you’ll be able to easily upload a post thumbnail. However, it’s not just thumbnails. The image will have various sizes. So, I’m going to refer to this feature as the post image feature.</p>
<p>In this tutorial, I’ll be covering the various things you can do with the post image feature. Some things will be specific to end users while others will be useful for theme and plugin developers.</p>
<p>One important thing to note is that this new feature is an image-based representation of a post. The image itself is directly tied to your post. You shouldn’t think of it as something different than that.</p>
<h2>How does an end user make use of this feature?</h2>
<p>First, your theme must add support for it. Otherwise, you won’t be able to use it. At this point, let’s assume that your theme does support it. I’ll go over instructions for theme authors later.</p>
<p>To use this feature, you must be within the post editing screen of your WordPress admin. On this screen, you’ll see a new meta box labeled “Post thumbnail” (or “Page thumbnail” for pages). There’ll be a link to “Set thumbnail,” which will allow you to use the media uploader to load a new image.</p>
<p><img title="The Post Image" src="http://justintadlock.com/blog/wp-content/uploads/2009/11/the-post-image.png" alt="Screenshot of WordPress 2.9's post image uploader" width="600" height="429" /></p>
<h2>It’s not just for thumbnails</h2>
<p>Even though it is called “post thumbnails,” we can technically use the feature for all sorts of things (e.g., feature images, medium-sized images for the front page, etc.).</p>
<p>By default, WordPress gives you several image sizes each time you upload an image.  These image sizes are:</p>
<ul>
<li>Thumbnail</li>
<li>Medium</li>
<li>Large</li>
<li>Full (the image you uploaded)</li>
</ul>
<p>Some plugins even extend this by allowing more intermediate sizes. The important thing is that you understand that more than thumbnails can be used here.<span id="more-155"></span></p>
<h2>How to add support for the post image feature in a theme</h2>
<p>Theme authors, I’m going to make this simple for you. You only need one line of code to turn this feature on for your users. Add this to your theme’s <code>functions.php</code> file:</p>
<pre><code>add_theme_support( 'post-thumbnails' );</code></pre>
<p>Or, you can register support for specific post types. For example, let’s suppose you wanted to add thumbnail support for both the <code>post</code> and <code>movie</code> post type but not for the <code>page</code> post type.  You’d use this instead:</p>
<pre><code>add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );</code></pre>
<p>Of course, that one line doesn’t actually add anything to the front end for you. You’ll need to call the image somewhere within The Loop in your template files. For example, you might want to add thumbnails to your category archives. You’d do this by adding this line of code:</p>
<pre><code>&lt;?php the_post_thumbnail( 'thumbnail' ); ?&gt;</code></pre>
<p>Or, maybe you have a section on a special template that calls for medium-sized images:</p>
<pre><code>&lt;?php the_post_thumbnail( 'medium' ); ?&gt;</code></pre>
<p>Or, a huge sliding feature area on your front page and need the full-sized image:</p>
<pre><code>&lt;?php the_post_thumbnail( 'full' ); ?&gt;</code></pre>
<p>That’s all there is to it. As a theme author, you can hand over some powerful functionality to your users with just a couple of lines of code.</p>
<p>The rest of this tutorial will focus on developer features and some options for using older images.</p>
<h2>Checking if the post has an image</h2>
<p>Sometimes, you may need to check if a post has an image.  There’s a function for that called <code>has_post_thumbnail()</code>, which will return <code>true</code> or <code>false</code> based on whether there’s an image.</p>
<p>In this example, we’ll check if there’s an image.  If there’s not, we’ll show a default image instead.</p>
<pre><code>&lt;?php
	if ( has_post_thumbnail() )
		the_post_thumbnail( 'thumbnail' );
	else
		echo '&lt;img src="default-image.png" alt="Example Image" title="Example" /&gt;';
?&gt;</code></pre>
<h2>Getting the post image ID</h2>
<p>Maybe you need to write your own custom script but still want to allow users to upload their own images. You can grab the post image ID and use it. This ID is saved as the meta value for the meta key <code>_thumbnail_id</code>.  It is the ID of the attached file.</p>
<p>You only need to call the function in your code like so:</p>
<pre><code>$image_id = get_post_thumbnail_id();</code></pre>
<h2>How to return the image instead of displaying it</h2>
<p>In some scenarios, you might want to return the post image for use in your <acronym title="Hypertext Preprocessor">PHP</acronym> code instead of displaying it.</p>
<p>Here’s an example of that functionality:</p>
<pre><code>$image = get_the_post_thumbnail( $post-&gt;ID, 'thumbnail' );</code></pre>
<h2>How to filter the image size</h2>
<p>Some plugin developers may want to filter the image size (or maybe even child theme authors).  The <code>post_thumbnail_size</code> filter hook is available for that.  The filter function below is for changing the <code>thumbnail</code> size to <code>medium</code>.</p>
<p>Add this <acronym title="Hypertext Preprocessor">PHP</acronym> code to your theme’s <code>functions.php</code> file or your plugin file:</p>
<pre><code>add_filter( 'post_thumbnail_size', 'my_post_image_size' );

function my_post_image_size( $size ) {
	$size = 'medium';
	return $size;
}</code></pre>
<h2>Changing the <acronym title="Hypertext Markup Language">HTML</acronym> output of the post image</h2>
<p>There may be some scenarios where you’ll want to change the <acronym title="Hypertext Markup Language">HTML</acronym> markup of the displayed image.  In this example, I’ll show you how to wrap the image with a link to the post.</p>
<p>Add this <acronym title="Hypertext Preprocessor">PHP</acronym> code to your theme’s <code>functions.php</code> file or your plugin file:</p>
<pre><code>add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 );

function my_post_image_html( $html, $post_id, $post_image_id ) {

	$html = '&lt;a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_post_field( 'post_title', $post_id ) ) . '"&gt;' . $html . '&lt;/a&gt;';

	return $html;
}</code></pre>
<h2>What happens to my old images/thumbnails?</h2>
<p>If you’re like me and many others, you may have been using custom fields to add images to your posts for years. If you switch to this new method, everything will be lost.</p>
<p>I’ve got a solution for this problem:  The <a title="Get the Image WordPress plugin" href="http://wordpress.org/extend/plugins/get-the-image">Get the Image</a> plugin.</p>
<p>Version 0.4 will be released when WordPress 2.9 is out. Not only will support be added for the new WordPress post image feature, but you won’t lose all of the hard work you’ve put in. The plugin will have the ability to check for post images in five different ways (in the below order):</p>
<ul>
<li>Custom fields.</li>
<li>New post image feature.</li>
<li>Attached image.</li>
<li>Scan the post for images.</li>
<li>Default image.</li>
</ul>
<p>For those of you already using this plugin or a theme of mine that includes the script, you’ll only have to upgrade the plugin or theme. The feature will be turned on for you by default, so you will be able to start using the new feature without touching anything but an upgrade button.</p>
<h2>Have fun with your new post images</h2>
<p>I hope this tutorial has given you an in-depth look at the post image feature.  There are <a title="WordPress 2.9 — the_post_image" href="http://www.binarymoon.co.uk/2009/10/wordpress-the_post_image/">some limitations</a>, but on the whole, this feature will make things much easier for end users compared to the currently-available methods.</p>
<p>If you’re a user of my <a title="Get the Image WordPress plugin" href="http://wordpress.org/extend/plugins/get-the-image">Get the Image plugin</a> or <a title="Hybrid theme framework" href="http://themehybrid.com/themes/hybrid">Hybrid theme</a>, look out for an update within a few days of WordPress 2.9.  You’ll be able to start using the post image functionality soon.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/everything-you-need-to-know-about-wordpress-2-9%e2%80%99s-post-image-feature.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>10 new WordPress plugins you might want to test</title>
		<link>http://www.yaaahaaa.com/10-new-wordpress-plugins-you-might-want-to-test.html</link>
		<comments>http://www.yaaahaaa.com/10-new-wordpress-plugins-you-might-want-to-test.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 23:10:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=152</guid>
		<description><![CDATA[The wonderful community of WordPress developers constantly provides us with interesting new themes and plugins. I have scanned the most recent WordPress plugin releases and came up with a list of 10 plugins definitely worth taking a look at.
Keep in might that these are new releases and so, their stability and status should be considered [...]]]></description>
			<content:encoded><![CDATA[<p>The wonderful community of WordPress developers constantly provides us with interesting new themes and plugins. I have scanned the most recent WordPress plugin releases and came up with a list of 10 plugins definitely worth taking a look at.</p>
<p>Keep in might that these are new releases and so, <strong>their stability and status should be considered as BETA</strong>. You might want to test them on a backup server before going live. The descriptions listed here are those submitted by the plugins’ authors and <em>do not necessarily express my views</em>.<span id="more-152"></span></p>
<h3>1. WP Content Slideshow</h3>
<p>WP Content Slideshow shows up to 5 Posts in a very nice and powerfull Javascript Slideshow. On the left side of the Slideshow it displays an image for every post. On the right side, there are all the titles (and a small description under the title) of the posts. The Slideshow highlights the active post and repeats automatically after getting to the 5th post. You have a powerfull Administration Area to adjust the category, the number of posts, the width and height, and many colours for the Slideshow!</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/wp-content-slideshow/" target="_blank">WP Content Slideshow</a><br />
<strong>Compatibility:</strong> 2.6+</p>
<h3>2. Sidebar Generator</h3>
<p>Now you can create as many sidebars as you need for any page you want. Thats right, page/post specific sidebars. You can easily seperate your site into sections, or make every single page have specific sidebar content on it. Great for CMS sites.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/sidebar-generator/" target="_blank">Sidebar Generator</a><br />
<strong>Compatibility:</strong> 2.8.0+</p>
<h3>3. WordPress Tabs Slides</h3>
<p>Tabs and Slides (in post/page) Plugin gives you the ability to easily add content tabs and/or content slides. The tabs emulate a multi-page structure, while the slides emulate an accordion-like structure, inside a single page!</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/wordpress-tabs-slides/" target="_blank">WordPress Tabs Slides</a><br />
<strong>Compatibility:</strong> 2.5+</p>
<h3>4. Custom Login Page</h3>
<p>With the Custom Login Page, you can change the background image of your login page, the background image/color of your login form div, the main logo image of your login page, and add custom CSS. All through a simple interface. Remember to view the Help tab at the top of the settings page of the plugin.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/wp-custom-login-page/" target="_blank">Custom Login Page</a><br />
<strong>Compatibility:</strong> 2.0.2+</p>
<h3>5. Featured Page Widget</h3>
<p>Allows you to feature pages on your sidebar using an excerpt of the page and a text or image link to the page.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/featured-page-widget/" target="_blank">Featured Page Widget</a><br />
<strong>Compatibility:</strong> 2.8 – 2.8.4 (maybe 2.8.5)</p>
<h3>6. Ecwid Shopping Cart</h3>
<p>Ecwid is free full-fledged shopping cart that can be easily add to any blog. It offers the performance and flexibility you need, with none of the hassles you don’t.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/ecwid-shopping-cart/" target="_blank">Ecwid Shopping Cart</a><br />
<strong>Compatibility:</strong> 2.7+</p>
<h3>7. SubHeading</h3>
<p>This plugin uses a custom field to allow subheadings to be added to both posts and pages. The custom sub heading field is re-positioned so that it is displayed directly below the main title.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/subheading/" target="_blank">SubHeading</a><br />
<strong>Compatibility:</strong> 2.8.2+</p>
<h3>8. ShowTime Slideshow</h3>
<p>Displays all pictures attached to a post/page as a slideshow. Simple setup. This plugin requires Adobe Flash, reverts nicely to default WordPress gallery if Flash is not found. Choose among high quality transitions. Ken Burns (pan&amp;zoom) and many other effects. Full Screen mode.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/showtime-slideshow/" target="_blank">ShowTime Slideshow</a><br />
<strong>Compatibility:</strong> 2.7+</p>
<h3>9. Quick Adsense</h3>
<p>Quick Adsense is an Ads management Wordpress plugin. It offers a quicker &amp; flexible way to insert Adsense or any Ads code into a blog post. Besides, it can randomly place the Ads anywhere within a post. It comes with a simple setting page, and it does not overwhelm you with complicated customizable options.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/quick-adsense/" target="_blank">Quick Adsense</a><br />
<strong>Compatibility:</strong> 2.5 – 2.8.4 (maybe 2.8.5)</p>
<h3>10. Members</h3>
<p>Members is a plugin that extends your control over your blog. It’s a user, role, and content management plugin that was created to make WordPress a more powerful CMS. The plugin is created with a components-based system — you only have to use the features you want.</p>
<p><strong>Download:</strong> <a href="http://wordpress.org/extend/plugins/members/" target="_blank">Members</a><br />
<strong>Compatibility:</strong> 2.8+</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/10-new-wordpress-plugins-you-might-want-to-test.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Look Into the WordPress Themes’ Options Pages</title>
		<link>http://www.yaaahaaa.com/a-look-into-the-wordpress-themes%e2%80%99-options-pages.html</link>
		<comments>http://www.yaaahaaa.com/a-look-into-the-wordpress-themes%e2%80%99-options-pages.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 23:05:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=147</guid>
		<description><![CDATA[For a long while the option panels where something that people could only find in premium (commercial) themes, and for a good reason. The pricing of their licenses allowed the premium theme developers to invest more time in giving theme users the ways to do through these panels what they could not do through coding.
With [...]]]></description>
			<content:encoded><![CDATA[<p>For a long while the option panels where something that people could only find in premium (commercial) themes, and for a good reason. The pricing of their licenses allowed the premium theme developers to invest more time in giving theme users the ways to do through these panels what they could not do through coding.</p>
<p>With the buzz created around these themes, regular users became aware of what could really be achieved, and thus, those that could not afford the license of a premium theme, became more selective with the free ones. A good-looking theme was not enough anymore, and WordPress developers realized it.</p>
<p>A good premium theme would bring its developer not only a good amount of money, but also recognition in the community, and this is where the free theme developers scored their biggest points. Now that their “turf” was endangered they had to react, and they did. For premium themes like <a href="http://blogsessive.com/go-thesis/">Thesis</a> or <a href="http://www.wpunlimited.com/" target="_blank">WP Unlimited</a>, users have now alternatives like <a href="http://themeshaper.com/thematic/" target="_blank">Thematic</a>, <a href="http://themehybrid.com/" target="_blank">Hybrid</a>, <a href="http://carringtontheme.com/" target="_blank">Carrington</a>, <a href="http://wpframework.com/" target="_blank">WP Framework</a> or my own (even if not a framework) <a href="http://blogsessive.com/blogging-tools/download-simple-balance-22-xmas-edition/" target="_blank">Simple Balance</a>.</p>
<h3>Why should free theme developers consider adding an options page?</h3>
<p><span id="more-147"></span><br />
Because being “cool” is just not enough anymore. Theme developers need to learn how to be useful. Free stuff can be either useless and ignored or useful and praised. I’m yet to see the developer offering a free theme without <a title="How to (Really) Benefit from Offering Free Stuff" href="http://blogsessive.com/blogging-tips/free-stuff/" target="_blank">gaining something from it</a>, be it awareness, expertise, backlinks, donation money, you name it! But none of these are achieved through an uncompetitive – even if free – product.</p>
<h3>5 Most looked for options in a WordPress theme</h3>
<p>“Stand out from the crowd!” If I had a penny for every time I read this I’d laugh at <a href="http://www.shoemoney.com/gallery/v/misc/adsensecheck.jpg.html" target="_blank">Shoemoney’s AdSense check image</a> sipping a chilled cocktail somewhere on a tropical island, but you know what? This saying is so true that it cannot be repeated enough, and <strong>users KNOW IT</strong>! Theme users want to be able to have their own identity online. They need to be able to customize their themes and make them express who they are and what they believe in. And this is where options pages come into play. What are the most looked for options? Let’s see…</p>
<h4>1. Logo and / or header image update / replacement</h4>
<p>It doesn’t matter if it’s a professionally designed logo or a simple Windows Paint play. If it gives the blogger satisfaction and he wants to display it, let him do so. Add either a file upload box or an input box where the user could enter the full URL to the logo image to use. Same goes for the header images.</p>
<h4>2. Layout structure</h4>
<p>If you’re developing a 2 column theme, give the user the option to choose to display the sidebar either on the left, or on the right. With <a href="http://blogsessive.com/blogging-tools/20-free-3-column-wordpress-themes/" target="_blank">3 column themes</a>, you can give them even more options, like having the content centered, between the sidebars, or having both sidebars on the same side (right or left) of the content. If only takes a couple of PHP conditions and some “visionary” CSS coding.</p>
<h4>3. Custom navigation menus</h4>
<p>Don’t expect users to want every page that they publish to show up in their blog’s main navigation area. Give them the option to select which pages should show up there, and why not, add their own links, even if external.</p>
<p style="text-align: center;"><img title="Navigation options" src="http://blogsessive.com/wp-content/uploads/2009/05/main-navigation.gif" alt="Navigation options" width="500" height="126" /></p>
<h4>4. Custom RSS URLs and email subscription forms</h4>
<p>Implementing a FeedBurner email subscription form is fairly easy for any developer, and I’m pretty sure that any dveloper knows how to customize such a script. The fact that it functions mostly based on a simple user ID should make the customization even easier through a theme options page.</p>
<h4>5. Advertising management</h4>
<p>Not everyone uses services like <a href="http://buysellads.com/" target="_blank">BuySellAds</a>, or is affiliated with an advertising network. Some users actually prefer to take care of the advertising themselves. So, why not give them the possibility to do so by adding a few more field to the options page. Let them select the number of banners they need displayed, do-follow option, position of banners and so on. It takes a bit to develop, but the user response to it is amazing.</p>
<p style="text-align: center;"><img title="Advertising options" src="http://blogsessive.com/wp-content/uploads/2009/05/advertising.gif" alt="Advertising options" width="500" height="280" /></p>
<h4>Additional options you could consider implementing</h4>
<p>While the 5 options above are the most looked for, some users might also find the following options useful:</p>
<ul>
<li>Overall switch between <strong>serif and sans-serif typography</strong>;</li>
<li>Theme <strong>color adjustments</strong>. Here are a couple of web-based color picker scripts you could use: <a href="http://acko.net/dev/farbtastic" target="_blank">one</a>, <a href="http://www.eyecon.ro/colorpicker/" target="_blank">two</a>, <a href="http://www.intelliance.fr/jquery/color_picker/" target="_blank">three</a> and <a href="http://vreboton.ibacolod.com/DotNetNuke/ControlsandTips/jQueryColorPicker/tabid/69/Default.aspx" target="_blank">four</a>;</li>
<li>Alternatively, you can offer a built in color schemes system;</li>
<li>Custom <strong>“featured” areas</strong>;</li>
<li>Additional, customizable <strong>widget areas</strong>;</li>
<li>Twitter updates area;</li>
<li>And the list could go on and on…</li>
</ul>
<h3>The limits are set by your knowledge and enthusiasm</h3>
<p>While the enthusiasm is not something you train, but rather have it or not, knowledge can be trained. Remember that the <a href="http://codex.wordpress.org/Main_Page">WordPress Codex</a> is your best friend, and the <a href="http://wordpress.org/support/">support forums</a> can be of tremendous help. Additionally, Stefan Vervoort of <a href="http://divitodesign.com/" target="_blank">DivitoDesign</a> and WPToy has put together a very useful PDF called the “<a href="http://wptoy.com/resources/wordpress-theme-development-check-list-pdf-version/" target="_blank">WordPress Theme Development Checklist</a>“. Do take a look (and use it!).</p>
<p>So, the next time you think of releasing a free theme, ask yourself this: <strong>Is you theme competitive enough?</strong> If it’s not, it will not stand a chance when the alternatives are so smart!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/a-look-into-the-wordpress-themes%e2%80%99-options-pages.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.4 Released: The 15 New Features you Must Know</title>
		<link>http://www.yaaahaaa.com/jquery-1-4-released-the-15-new-features-you-must-know.html</link>
		<comments>http://www.yaaahaaa.com/jquery-1-4-released-the-15-new-features-you-must-know.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 22:46:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=143</guid>
		<description><![CDATA[
jQuery 1.4 was recently released. This wasn&#8217;t simply a maintenance release as some had speculated; there are many new features, enhancements and performance improvements included in 1.4! This post covers the new features and enhancements that you may find beneficial.
You can download jQuery 1.4 right now, here: http://code.jquery.com/jquery-1.4.js


1. Passing Attributes to jQuery(…)
Pre 1.4, jQuery supported [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>jQuery 1.4 was <a href="http://jquery14.com/day-01/jquery-14">recently released</a>. This wasn&#8217;t simply a maintenance release as some had speculated; there are <strong>many</strong> new features, enhancements and performance improvements included in 1.4! This post covers the new features and enhancements that you may find beneficial.</p>
<p>You can download jQuery 1.4 right now, here: <a href="http://code.jquery.com/jquery-1.4.js">http://code.jquery.com/jquery-1.4.js</a></p>
<p><span id="more-143"></span></p>
</div>
<h3>1. Passing Attributes to jQuery(…)</h3>
<p>Pre 1.4, jQuery supported adding attributes to an element collection via the useful &#8220;<a href="http://api.jquery.com/attr/"><code>attr</code></a>&#8221; method, which can be passed both an attribute name and value, or an object specifying several attributes. jQuery 1.4 adds support for passing an attributes object as the second argument to the jQuery function itself, upon element creation.</p>
<p>Let&#8217;s say you need to create an anchor element with several attributes. With 1.4 it&#8217;s as simple as:</p>
<pre class="js">jQuery('&lt;a/&gt;', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!'
});</pre>
<p>You may have noticed the &#8220;<code>text</code>&#8221; attribute— you&#8217;ll probably be wondering what that&#8217;s doing there, after all there&#8217;s no &#8220;<code>text</code>&#8221; attribute for anchors! Well, jQuery 1.4 utilises its very own methods when you pass certain attributes. So the &#8220;text&#8221; attribute specified above would cause jQuery to call the &#8220;<code>.text()</code>&#8221; method, passing &#8220;Go to Google!&#8221; as its only argument.</p>
<p>A better example of this in action:</p>
<pre class="js">jQuery('&lt;div/&gt;', {
    id: 'foo',
    css: {
        fontWeight: 700,
        color: 'green'
    },
    click: function(){
        alert('Foo has been clicked!');
    }
});</pre>
<p>The &#8220;id&#8221; is added as a regular attribute, but the &#8220;css&#8221; and &#8220;click&#8221; properties trigger calling of each respective method. The above code, before the 1.4 release, would have been written like this:</p>
<pre class="js">jQuery('&lt;div/&gt;')
    .attr('id', 'foo')
    .css({
        fontWeight: 700,
        color: 'green'
    })
    .click(function(){
        alert('Foo has been clicked!');
    });</pre>
<p><a href="http://api.jquery.com/jQuery/">Read more about jQuery(…)</a></p>
<h3>2. Everything &#8220;until&#8221;!</h3>
<p>Three new methods have been added to the DOM traversal arsenal in 1.4, &#8220;<code>nextUntil</code>&#8220;, &#8220;<code>prevUntil</code>&#8221; and &#8220;<code>parentsUntil</code>&#8220;. Each of these methods will traverse the DOM in a certain direction until the passed selector is satisfied. So, let&#8217;s say you have a list of fruit:</p>
<pre class="html">&lt;ul&gt;
    &lt;li&gt;Apple&lt;/li&gt;

    &lt;li&gt;Banana&lt;/li&gt;
    &lt;li&gt;Grape&lt;/li&gt;

    &lt;li&gt;Strawberry&lt;/li&gt;
    &lt;li&gt;Pear&lt;/li&gt;

    &lt;li&gt;Peach&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>You want to select all of items after &#8220;Apple&#8221;, but you want to stop once you reach &#8220;Strawberry&#8221;. It couldn&#8217;t be simpler:</p>
<pre class="js">jQuery('ul li:contains(Apple)').nextUntil(':contains(Pear)');
// Selects Banana, Grape, Strawberry</pre>
<p>Read more about: <a href="http://api.jquery.com/prevUntil/">prevUntil</a>, <a href="http://api.jquery.com/nextUntil/">nextUntil</a>, <a href="http://api.jquery.com/parentsUntil/">parentsUntil</a></p>
<h3>3. Binding Multiple Event Handlers</h3>
<p>Instead of chaining a bunch of event binding methods together, you can lump them all into the same call, like so:</p>
<pre class="js">jQuery('#foo).bind({
    click: function() {
        // do something
    },
    mouseover: function() {
        // do something
    },
    mouseout: function() {
        // do something
    }
})</pre>
<p>This also works with &#8220;<code>.one()</code>&#8220;.</p>
<p><a href="http://api.jquery.com/bind/">Read more about .bind(…)</a></p>
<h3>4. Per-Property Easing</h3>
<p>Instead of just defining one easing function for a single animation, you can now define a different easing function for each property that you&#8217;re animating. jQuery includes two easing functions, swing (the default) and linear. For other ones you&#8217;ll need to <a href="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js">download them separately</a>!</p>
<p>To specify an easing function for each property simply define the property as an array, with the first value being what you want to animate that property to, and the second being the easing function to use:</p>
<pre class="js">jQuery('#foo').animate({
    left: 500,
    top: [500, 'easeOutBounce']
}, 2000);</pre>
<p><a href="http://james.padolsey.com/demos/jquery/easing/easing-jq14.html">See this code in action!</a></p>
<p>You can also define per-property easing functions in the optional options object as property name-value pairs in the &#8220;specialEasing&#8221; object:</p>
<pre class="js">jQuery('#foo').animate({
    left: 500,
    top: 500
}, {
    duration: 2000,
    specialEasing: {
        top: 'easeOutBounce'
    }
});</pre>
<p><strong>Editor&#8217;s Note &#8211; The author of this article, James Padolsey, is being modest. This new feature was his idea! </strong></p>
<p><a href="http://api.jquery.com/animate/#per-property-easing">Read more about per-property easing</a></p>
<h3>5. New Live Events!</h3>
<p>jQuery 1.4 adds support for delegating the &#8220;<strong>submit</strong>&#8220;, &#8220;<strong>change</strong>&#8220;, &#8220;<strong>focus</strong>&#8221; and &#8220;<strong>blur</strong>&#8221; events. In jQuery, we use the &#8220;<code>.live()</code>&#8221; method to delegate events. This is useful when you have to register event handlers on many elements, and when new elements may be added over time (using &#8220;<code>.live()</code>&#8221; is less-costly than re-binding continually).</p>
<p><strong>But, be careful!</strong> You must use the event names, &#8220;<strong>focusin</strong>&#8221; and &#8220;<strong>focusout</strong>&#8221; if you want to delegate the &#8220;focus&#8221; and &#8220;blur&#8221; events!</p>
<pre class="js">jQuery('input').live('focusin', function(){
    // do something with this
});</pre>
<h3>6. Controlling a Function&#8217;s Context</h3>
<p>jQuery 1.4 provides a new &#8220;<code>proxy</code>&#8221; function under the jQuery namespace. This function takes two arguments, either a &#8220;scope&#8221; and a method name, or a function and the intended scope. JavaScript&#8217;s &#8220;this&#8221; keyword can be quite tricky to keep a hold of. Sometimes you won&#8217;t want it to be an element, but instead  an object that you&#8217;ve previously created.</p>
<p>For example, here we&#8217;ve got an &#8220;<code>app</code>&#8221; object which has two properties, a &#8220;<code>clickHandler</code>&#8221; method and a config object:</p>
<pre class="js">var app = {
    config: {
        clickMessage: 'Hi!'
    },
    clickHandler: function() {
        alert(this.config.clickMessage);
    }
};</pre>
<p>The &#8220;<code>clickHandler</code>&#8221; method, when called like &#8220;<code>app.clickHandler()</code>&#8221; will have &#8220;<code>app</code>&#8221; as its context, meaning that the &#8220;<code>this</code>&#8221; keyword will allow it access to &#8220;<code>app</code>&#8220;. This works quite well if we simply call:</p>
<pre class="js">app.clickHandler(); // "Hi!" is alerted</pre>
<p>Let&#8217;s try binding it as an event handler:</p>
<pre class="js">jQuery('a').bind('click', app.clickHandler);</pre>
<p>When we click an anchor it doesn&#8217;t appear to work (nothing is alerted). That&#8217;s because jQuery (and most sane event models) will, by default, set the context of the handler as the target element,- that is, the element that&#8217;s just been clicked will be accessible via &#8220;<code>this</code>&#8220;. But we don&#8217;t want that, we want &#8220;<code>this</code>&#8221; to be set to &#8220;<code>app</code>&#8220;. Achieving this in jQuery 1.4 couldn&#8217;t be simpler:</p>
<pre class="js">jQuery('a').bind(
    'click',
    jQuery.proxy(app, 'clickHandler')
);</pre>
<p>Now whenever an anchor is clicked, &#8220;Hi!&#8221; will be alerted!</p>
<p>The proxy function returns a &#8220;wrapped&#8221; version of your function, with &#8220;<code>this</code>&#8221; set to whatever you specify. It&#8217;s useful in other contexts too, such as passing callbacks to other jQuery methods, or to plugins.</p>
<p><a href="http://api.jquery.com/jQuery.proxy">Read more about <code>jQuery.proxy</code></a></p>
<h3>7. Delay an Animation Queue</h3>
<p>You can now add a delay to your animation queues. In fact, this works on any queue, but its most common use case will probably be with the &#8220;fx&#8221; queue. This allows you to pause between animations without having to mess with callbacks and calls to &#8220;<code>setTimeout</code>&#8220;. The first argument to &#8220;<code>.delay()</code>&#8221; is the amount of milliseconds you want to delay for.</p>
<pre class="js">jQuery('#foo')
    .slideDown() // Slide down
    .delay(200) // Do nothing for 200 ms
    .fadeIn(); // Fade in</pre>
<p>If you want to delay a queue other than the default &#8220;fx&#8221; queue, then you&#8217;ll need to pass the queue name as the second argument to &#8220;<code>.delay()</code>&#8220;.</p>
<p><a href="http://api.jquery.com/delay">Read more about <code>.delay(…)</code></a></p>
<h3>8. Check if an Element <em>Has</em> Something</h3>
<p>jQuery 1.4 makes it easy to check if an element (or collection) &#8220;<code>.has()</code>&#8221; something. This is the programmatic equivalent   to jQuery&#8217;s selector filter, &#8220;<code>:has()</code>&#8220;. This method will select all elements in the current collection that contain at least one element that complies with the passed selector.</p>
<pre class="js">jQuery('div').has('ul');</pre>
<p>That would select all DIV elements that contain UL elements. In this situation you&#8217;d probably just use the selector filter (&#8220;<code>:has()</code>&#8220;), but this method is still useful when you need to filter a collection programmatically.</p>
<p>jQuery 1.4 also reveals the &#8220;<code>contains</code>&#8221; function under the jQuery namespace. This is a low-level function that accepts two DOM nodes. It&#8217;ll return a boolean indicating whether the second element is contained within the first element. E.g.</p>
<pre class="js">jQuery.contains(document.documentElement, document.body);
// Returns true - &lt;body&gt; is within &lt;html&gt;</pre>
<p>Read more about: <a href="http://api.jquery.com/has/"><code>.has(…)</code></a>, <a href="http://api.jquery.com/jQuery.contains/"><code>jQuery.contains(…)</code></a></p>
<h3>9. Unwrap Elements!</h3>
<p>We&#8217;ve had the &#8220;<code>.wrap()</code>&#8221; method for a while now. jQuery 1.4 adds the &#8220;<code>.unwrap()</code>&#8221; method which does the complete opposite. If we assume the following DOM structure:</p>
<pre class="html">&lt;div&gt;

    &lt;p&gt;Foo&lt;/p&gt;
&lt;/div&gt;</pre>
<p>We can unwrap the paragraph element like so:</p>
<pre class="js">jQuery('p').unwrap();</pre>
<p>The resulting DOM structure would be:</p>
<pre class="html">&lt;p&gt;Foo&lt;/p&gt;</pre>
<p>Essentially, this method simply removes the parent of any element.</p>
<p><a href="http://api.jquery.com/unwrap/">Read more about <code>.unwrap(…)</code></a></p>
<h3>10. Remove Elements Without Deleting Data</h3>
<p>The new &#8220;<code><strong>.detach()</strong></code>&#8221; method allows you to remove elements from the DOM, much like the &#8220;<code>.remove()</code>&#8221; method. The key difference with this new method is that it doesn&#8217;t destroy the data held by jQuery on that element. This includes data added via &#8220;<code>.data()</code>&#8221; and any event handlers added via jQuery&#8217;s event system.</p>
<p>This can be useful when you need to remove an element from the DOM, but you know you&#8217;ll need to add it back at a later stage. Its event handlers and any other data will persist.</p>
<pre class="js">var foo = jQuery('#foo');

// Bind an important event handler
foo.click(function(){
    alert('Foo!');
});

foo.detach(); // Remove it from the DOM

// … do stuff

foo.appendTo('body'); // Add it back to the DOM

foo.click(); // alerts "Foo!"</pre>
<p><a href="http://api.jquery.com/detach">Read more about <code>.detach(…)</code></a></p>
<h3>11. index(…) Enhancements</h3>
<p>jQuery 1.4 gives you two new ways to use the &#8220;<code>.index()</code>&#8221; method. Previously, you could only pass an element as its argument and you&#8217;d expect a number to be returned indicating the index of that element within the current collection.</p>
<p>Passing no arguments now returns the index of an element amongst its siblings. So, assuming the following DOM structure:</p>
<pre class="html">&lt;ul&gt;
    &lt;li&gt;Apple&lt;/li&gt;

    &lt;li&gt;Banana&lt;/li&gt;
    &lt;li&gt;Grape&lt;/li&gt;

    &lt;li&gt;Strawberry&lt;/li&gt;
    &lt;li&gt;Pear&lt;/li&gt;

    &lt;li&gt;Peach&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>When a list item is clicked you want to find out the index of the clicked element amongst all the other list items. It&#8217;s as simple as:</p>
<pre class="js">jQuery('li').click(function(){
    alert( jQuery(this).index() );
});</pre>
<p>jQuery 1.4 also allows you to specify a selector as the first argument to &#8220;<code>.index()</code>&#8220;, doing so will give you the index of the current element amongst the collection produced from that selector.</p>
<p>You should note that what&#8217;s returned from this method is an integer, and it will return -1 if the selector/element passed cannot be found in the document.</p>
<p><a href="http://api.jquery.com/index">Read more about <code>.index(…)</code></a></p>
<h3>12. DOM Manipulation Methods Accept Callbacks</h3>
<p>Most of the DOM manipulation methods now support passing a function as the sole argument (or second, in the case of &#8220;<code>.css()</code>&#8221; &amp; &#8220;<code>.attr()</code>&#8220;). This function will be run on every element in the collection to determine what should be used as the real value for that method.</p>
<p>The following methods have this capability:</p>
<ul>
<li><a href="http://api.jquery.com/after">after</a></li>
<li><a href="http://api.jquery.com/before">before</a></li>
<li><a href="http://api.jquery.com/append">append</a></li>
<li><a href="http://api.jquery.com/prepend">prepend</a></li>
<li><a href="http://api.jquery.com/addClass">addClass</a></li>
<li><a href="http://api.jquery.com/toggleClass">toggleClass</a></li>
<li><a href="http://api.jquery.com/removeClass">removeClass</a></li>
<li><a href="http://api.jquery.com/wrap">wrap</a></li>
<li><a href="http://api.jquery.com/wrapAll">wrapAll</a></li>
<li><a href="http://api.jquery.com/wrapInner">wrapInner</a></li>
<li><a href="http://api.jquery.com/val">val</a></li>
<li><a href="http://api.jquery.com/text">text</a></li>
<li><a href="http://api.jquery.com/replaceWith">replaceWith</a></li>
<li><a href="http://api.jquery.com/css">css</a></li>
<li><a href="http://api.jquery.com/attr">attr</a></li>
<li><a href="http://api.jquery.com/html">html</a></li>
</ul>
<p>Within the callback function, you&#8217;ll have access to the current element in the collection via &#8220;<code>this</code>&#8221; and its index via the first argument.</p>
<pre class="js">jQuery('li').html(function(i){
    return 'Index of this list item: ' + i;
});</pre>
<p>Also, with some of the above methods you&#8217;ll also get a second argument. If you&#8217;re calling a setter method (like &#8220;<code>.html()</code>&#8221; or &#8220;<code>.attr('href)</code>&#8220;) you&#8217;ll have access to the current value. E.g.</p>
<pre class="js">jQuery('a').attr('href', function(i, currentHref){
    return currentHref + '?foo=bar';
});</pre>
<p>As you can see, with the &#8220;<code>.css()</code>&#8221; and &#8220;<code>.attr()</code>&#8221; methods, you would pass the function as the second argument, since the first would be used to name the property you wish to change:</p>
<pre class="js">jQuery('li').css('color', function(i, currentCssColor){
    return i % 2 ? 'red' : 'blue';
});</pre>
<h3>13. Determine the Type of Object</h3>
<p>jQuery 1.4 adds two new helper functions (stored directly under the jQuery namespace) that help you determine what type of object you&#8217;re dealing with.</p>
<p>First, there&#8217;s &#8221;<code>isEmptyObject</code>&#8220;, this function returns a boolean indicating whether or not the the passed object is empty (devoid of  properties &#8211; direct <em>and</em> inherited). Second, there&#8217;s &#8220;<code>isPlainObject</code>&#8220;, which will return a boolean indicating whether the passed object is a plain JavaScript object, that is, one created via &#8220;<code>{}</code>&#8221; or &#8220;<code>new Object()</code>&#8220;.</p>
<pre class="js">jQuery.isEmptyObject({}); // true
jQuery.isEmptyObject({foo:1}); // false

jQuery.isPlainObject({}); // true
jQuery.isPlainObject(window); // false
jQuery.isPlainObject(jQuery()); // false</pre>
<p>Read more about: <a href="http://api.jquery.com/jQuery.isPlainObject"><code>isPlainObject(…)</code></a>, <a href="http://api.jquery.com/jQuery.isEmptyObject"><code>isEmptyObject(…)</code></a></p>
<h3>14. Closest(…) Enhancements</h3>
<p>jQuery&#8217;s &#8220;<code>.closest()</code>&#8221; method now accepts an array of selectors. This is useful when you want to traverse the ancestors of an element, looking for (more than one) closest elements with certain characteristics.</p>
<p>In addition, it now accepts a context as the second argument, meaning that you can control just how far or how close you want the DOM traversed to. Both of these enhancements accommodate    rare use cases but they are used internally to great effect!</p>
<p><a href="http://api.jquery.com/closest">Read more about <code>.closest(…)</code></a></p>
<h3>15. New Events! focusIn and focusOut</h3>
<p>As mentioned, to delegate the &#8220;focus&#8221; and &#8220;blur&#8221; events you must use these new events, called &#8220;focusin&#8221; and &#8220;focusout&#8221;. These events allow you to take action when an element, or a descendant of an element, gains focus.</p>
<pre class="js">jQuery('form')
    .focusin(function(){
        jQuery(this).addClass('focused');
    });
    .focusout(function(){
        jQuery(this).removeClass('focused');
    });</pre>
<p>You should also note that both of these events do not propagate (&#8220;bubble&#8221;); they are captured. This means that the outermost (ancestor) element will be triggered before the causal &#8220;target&#8221; element.</p>
<p>Read more about the <a href="http://api.jquery.com/focusin"><code>focusIn</code></a> and <a href="http://api.jquery.com/focusout"><code>focusOut</code></a> events.</p>
<h3>Enjoy jQuery 1.4, the most anticipated, most feature-rich, best performing release of jQuery yet!</h3>
<p>Well, that&#8217;s it! I&#8217;ve tried to cover the changes which I think will have an impact on you!</p>
<p>If you haven&#8217;t already, you should check out the &#8221;<strong><a href="http://jquery14.com/">14 days of jQuery</a></strong>&#8220;, an awesome online event marking the release of jQuery 1.4, and jQuery&#8217;s fourth birthday!</p>
<p>And don&#8217;t forget to checkout the new <a href="http://api.jquery.com"><strong>API documentation</strong></a><strong></strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/jquery-1-4-released-the-15-new-features-you-must-know.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Things You Need to Know About WordPress 2.9&#160;&#124;&#160;Technosailor.com</title>
		<link>http://www.yaaahaaa.com/10-things-you-need-to-know-about-wordpress-2-9technosailor-com.html</link>
		<comments>http://www.yaaahaaa.com/10-things-you-need-to-know-about-wordpress-2-9technosailor-com.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 11:08:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[WordPress 2.9]]></category>

		<guid isPermaLink="false">http://www.yaaahaaa.com/?p=91</guid>
		<description><![CDATA[Gentlemen, start your engines! WordPress 2.9 is just around the corner. Unlike WordPress 2.8, which Mark Jaquith describes as the Snow Leopard of WordPress since most of the basis of the WordPress 2.8 upgrade was complete rewrites and optimization of the infrastructure that ran WordPress instead of providing lots of new features in the same [...]]]></description>
			<content:encoded><![CDATA[<p><span>G</span>entlemen, start your engines! WordPress 2.9 is just around the corner. Unlike WordPress 2.8, which <a href="http://markjaquith.wordpress.com/">Mark Jaquith</a> describes as the Snow Leopard of WordPress since most of the basis of the WordPress 2.8 upgrade was complete rewrites and optimization of the infrastructure that ran WordPress instead of providing lots of new features in the same way Apple’s new OS X release is a focus on improved performance instead of features, WordPress 2.9 brings major new “bling” to the table. As a reminder of WordPress 2.8, you can see the writeup that <a href="http://wpvibe.com/">Jonathan Dingman</a> brought us <a href="http://technosailor.com/2009/06/05/10-things-you-need-to-know-about-wordpress-28/">last time around</a>.</p>
<p>By and large, this release is a plugin developers release with lots of new APIs and abstraction. However, there are significant additions for theme designers and users as well. As a result, unlike previous iterations of this article (I do one for every major WordPress release), I’m going to break this down into sections for each kind of feature.</p>
<h2><span style="width: 116px; height: 36px;"><span>Themes: </span></span><span style="width: 289px; height: 36px;"><span>the_post_thumbnail()</span></span></h2>
<p>Theme developers have a new piece of functionality that have become extremely popular in themes these days. As blogs have evolved from journal form into entities that can be very magazine-like, the use of thumbnail images has also grown. Typically, this layout is achieved through the use of custom fields that must be manually created and populated. No more!<br />
<img title="wordpress-logo-hoz-rgb" src="http://technosailor.com/wp-content/uploads/2009/07/wordpress-logo-hoz-rgb.png" alt="" width="499" height="113" /><br />
As of WordPress 2.9, if you use the built in image uploader, then WordPress handle this for you. Theme designers that wish to support this feature can add the template tag the_post_image() to their themes to achieve proper placement as required by the theme layout. The template tag can optionally take a “size”, which is one of the WordPress default sizes: thumbnail, medium, large, etc. If none is provided, it defaults to your preset thumbnail size.<span id="more-91"></span></p>
<p>Example:</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9</div>
</td>
<td>
<div style="white-space: nowrap;"><span>&lt;?php</span><br />
<span>while</span><span>(</span> have_posts<span>(</span><span>)</span> <span>)</span> <span>:</span> the_post<span>(</span><span>)</span><span>;</span><br />
<span>?&gt;</span><br />
&lt;div&gt;<br />
&lt;h1&gt;&lt;a href=&#8221;<span>&lt;?php</span> the_permalink<span>(</span><span>)</span> <span>?&gt;</span>&#8220;&gt;<span>&lt;?php</span> the_title<span>(</span><span>)</span> <span>?&gt;</span>&lt;/a&gt;&lt;/h1&gt;<br />
<span>&lt;?php</span> the_post_thumbnail<span>(</span><span>)</span> <span>?&gt;</span><br />
<span>&lt;?php</span> the_content<span>(</span><span>)</span> <span>?&gt;</span><br />
&lt;/div&gt;<br />
<span>&lt;?php</span> <span>endif</span><span>;</span> <span>?&gt;</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Conveniently, if a theme is enabled for post thumbnails, the only “feature” currently offering this support in WordPress, then a new “meta box” will be displayed on the Write screen allowing you to assign a post image.</p>
<h2><span style="width: 116px; height: 36px;"><span>Themes: </span></span><span style="width: 113px; height: 36px;"><span>Register </span></span><span style="width: 113px; height: 36px;"><span>Support </span></span><span style="width: 46px; height: 36px;"><span>for </span></span><span style="width: 148px; height: 36px;"><span>WordPress </span></span><span style="width: 111px; height: 36px;"><span>Features</span></span></h2>
<p><em>Editorial Note: Since this article was published, the code has changed to refer to post-thumbnails, not post-images. As a result, function names have also change. The code and examples included before reflect this change. Sorry for the confusion and sorry specifically to theme devs who have implemented the_post_image() feature already. Just change it to the_post_thumbnail()</em></p>
<p>This may seem to be an obscure feature, and typically, it’s pretty simple to figure out what I’m talking about just by looking at the header. In this case, it’s a bit more obscure because it suggests a feature that is introduced in WordPress 2.9 and then only for a very niche purpose. I can see this being built out over time, and plugin authors can supply their own use cases.</p>
<p>The concept is simple. If a feature exists — in the core, the only use case is for the thumbnails I described earlier and it is called ‘post-thumbnails’ — then a theme can declare support for the feature using the add_theme_support() function in the theme functions.php. It can only be declared in this file and it requires a feature be assigned a name. As I mentioned, with WordPress 2.9, there is only one feature that is named and that is post-image. Plugin authors can provide their own new functionality using the require_if_theme_supports() function.</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div style="white-space: nowrap;">require_if_theme_supports(&#8216;my-custom-feature&#8217;,'/path/to/custom-lfeature-library.php&#8217;);</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Themes would then enable support for the feature by including the following in their functions.php file.</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2</div>
</td>
<td>
<div style="white-space: nowrap;">if ( function_exists( &#8216;add_theme_support&#8217; ) )<br />
add_theme_support( &#8216;my-custom-feature&#8217; );</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>We’ve used the function_exists() check on the add_theme_support() function to ensure backwards compatibility with WordPress installations prior to WordPress 2.9. Similarly (and possibly confusingly in this context), before you would have to check for the existence of a plugin by using a function_exists() or class_exists() piece of logic and loading it if the class or function did exist, but now there are on/off switches to get it done.</p>
<h2><span style="width: 87px; height: 36px;"><span>Users: </span></span><span style="width: 57px; height: 36px;"><span>The </span></span><span style="width: 76px; height: 36px;"><span>Trash </span></span><span style="width: 49px; height: 36px;"><span>Can</span></span></h2>
<p>On Windows, they call it the Recycle Bin. On Macs, it’s the Trash. In both cases, the feature exists to help people recover from accidental deletions. We have all had those moments where we nuked something we had no intention of nuking. With WordPress, accidental deletions have been permanent. In WordPress 2.9, everything is recoverable now with a new Trash feature. When you delete a post, page, category, comment, or any bit of content, it is moved to the Trash where you can decide whether to pull it back at a later date.</p>
<div id="attachment_7843" style="width: 700px;"><img title="The WordPress Trash Can" src="http://technosailor.com/wp-content/uploads/2009/11/Screen-shot-2009-11-11-at-6.08.34-PM-690x227.png" alt="The Trash Can view. From here, content can be restored or deleted permanently." width="690" height="227" />The Trash Can view. From here, content can be restored or deleted permanently.</div>
<p>Trash collection is done every 30 days by default, but it is possible to change this by editing your wp-config.php file. Add the following to your config file to change trash collection to every 7 days. Modify as needed.</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div style="white-space: nowrap;">define(&#8216;EMPTY_TRASH_DAYS&#8217;,7);</div>
</td>
</tr>
</tbody>
</table>
</div>
<h2><span style="width: 87px; height: 36px;"><span>Users: </span></span><span style="width: 86px; height: 36px;"><span>Image </span></span><span style="width: 91px; height: 36px;"><span>Editing</span></span></h2>
<p>One of the hot new features in WordPress 2.9 is image editing. Now don’t get me wrong. This isn’t Photoshop. And it only support basic functionality at this time. However, image editing will allow bloggers to crop, scale and rotate images from right within WordPress. From the media library, you can edit images by clicking the Edit link under an image, and then clicking the Edit button on the individual image page. This brings up an interface like what is shown below.</p>
<div style="width: 510px;"><img title="The WordPress 2.9 Image Editing Screen" src="http://farm3.static.flickr.com/2684/4096969054_06d3401641.jpg" alt="The WordPress 2.9 Image Editing Screen" width="500" height="259" />The WordPress 2.9 Image Editing Screen</div>
<h2><span style="width: 87px; height: 36px;"><span>Users: </span></span><span style="width: 104px; height: 36px;"><span>oEmbed</span></span></h2>
<p>oEmbed, as described at <a href="http://oembed.com/">oEmbed.com</a>, is a specification that allows media providers like <a href="http://flickr.com/">Flickr</a>, <a href="http://youtube.com/">YouTube</a> and others to provide data for consumer applications like WordPress about media. So by including an Embed (Use the File uploader and choose “From URL” and paste the link <em>to the page</em> that contains the media, not the media file itself) in a post or page, WordPress can retrieve the relevant specs on the media file and formulate a properly formatted embed accordingly.</p>
<p>Below is an embed of one of my Flickr photos using oEmbed.<br />
<img src="http://farm4.static.flickr.com/3550/3630505051_e02053a1ca.jpg" alt="Scenes from San Francisco" width="500" height="333" /></p>
<p>Below, is an oEmbedded YouTube video (Original video removed so here’s the Iron Man 2 Trailer).<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="306" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/siQgD9qOhRs&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="306" src="http://www.youtube.com/v/siQgD9qOhRs&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>If you don’t want to use the GUI for this stuff, you can simply wrap the URL to the media page in embed shortcode tags like this.</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div style="white-space: nowrap;"><object width="384" height="313"><param name="movie" value="http://www.youtube.com/v/ZGp220EQUis&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ZGp220EQUis&#038;fs=1" type="application/x-shockwave-flash" width="384" height="313" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>The list of supported oEmbed sites in WordPress are as follows:</p>
<ul>
<li>YouTube (via oEmbed)</li>
<li>Blip.tv (via oEmbed)</li>
<li>Flickr images and videos (via oEmbed)</li>
<li>Hulu (via oEmbed)</li>
<li>Viddler (via oEmbed)</li>
<li>Qik.com (via oEmbed) — never heard of this site, but it was listed on oEmbed’s website, so…</li>
<li>Revision3 (via oEmbed)</li>
<li>Google Video (via an internal handler)</li>
<li>PollDaddy (via an internal handler)</li>
<li>DailyMotion (via an internal handler)</li>
</ul>
<p>That said, plugin authors can add new providers if they want by using the oembed_providers filter or override altogether with the WP_oEmbed-&gt;providers property.</p>
<h2><span style="width: 108px; height: 36px;"><span>Plugins: </span></span><span style="width: 108px; height: 36px;"><span>Custom </span></span><span style="width: 65px; height: 36px;"><span>Post </span></span><span style="width: 72px; height: 36px;"><span>Types</span></span></h2>
<p>One of the strengths of <a href="http://drupal.com/">Drupal</a> has been its ability to have multiple types of contents contained in objects that all look alike to PHP. WordPress has supported a variety of content types as well, but it has not been nearly as flexible making WordPress a blog platform with some additional support for pages and attachments. Technically, the only post_types that WordPress has supported have been post, page, revision and attachment. While it has technically been possible to add new post_types (like podcast, mp4, or tutorials – they could be anything, really), it has been a chore and required plugin developers to handle quite a few moving parts in order to make it all work properly.</p>
<p>No longer. Plugin authors now have API to register new post types, opening up the possibility for even more creativity and uses for WordPress.</p>
<h3><span style="width: 177px; height: 30px;"><span>get_post_type()</span></span></h3>
<p>The get_post_type() function can only be used in the Loop. It returns the type of post a post is. Keep in mind, I’m using post loosely. All content in WordPress is kept in the posts table thereby inheriting the name “post”, but post is also a kind of content that is associated with blog content (as opposed to page which is a pseudo-static page, attachment which is information about an image or file uploaded with the media uploader, etc).</p>
<h3><span style="width: 188px; height: 30px;"><span>get_post_types()</span></span></h3>
<p>The get_post_types() function will return a list of all types of post content. By default, this will be post, page, attachment and revision. Refer to the source code for optional arguments that can be used to control what kind of data is returned.</p>
<h3><span style="width: 225px; height: 30px;"><span>register_post_type()</span></span></h3>
<p>As a plugin author, you can use this function to create a new post type. The first argument is the unique handle you want to assign to the post type – let’s call it podcast – and the second argument is an array that contains additional elements. The key one here is an exclude_from_search, which by default is set to true. You actually probably want to set this to false unless you really don’t want this additional content searchable. See below for example usage.</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3<br />
4<br />
5</div>
</td>
<td>
<div style="white-space: nowrap;">function wpb_podcast_init()<br />
{<br />
register_post_type(&#8216;podcast&#8217;,array(&#8216;exclude_from_search&#8217; =&amp;gt; false) );<br />
}<br />
add_action(&#8216;init&#8217;,'wpb_podcast_init&#8217;);</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>There is currently no user interface for post types. There is a patch in for UI that will likely be included in WordPress 3.0.</p>
<h2><span style="width: 108px; height: 36px;"><span>Plugins: </span></span><span style="width: 135px; height: 36px;"><span>Comment </span></span><span style="width: 66px; height: 36px;"><span>Meta</span></span></h2>
<p>There has been a variety of meta tables in WordPress. Meta tables, like usermeta or postmeta, are database tables that contain information about the type of data that is stored in WordPress. It allows plugins and WordPress to assign metadata, such as user roles and capabilities, to pieces of data thus extending that data. Now, there is a comment meta table as well.</p>
<p>Though it is unclear how plugin authors will seek to use this table, the fact that it is available is a major deal as it essentially provides meta tables for every piece of content in WordPress now.</p>
<h2><span style="width: 108px; height: 36px;"><span>Plugins: </span></span><span style="width: 131px; height: 36px;"><span>Metadata </span></span><span style="width: 43px; height: 36px;"><span>API</span></span></h2>
<p>With the addition of a comments meta table, it has become effectively redundant to duplicate functions throughout WordPress. You have a get_post_meta() function that does the same thing as a get_usermeta() function except they query data from different tables that also look identical except for the data stored in them.</p>
<p>In WordPress 2.9, there is an entirely new Metadata API that can be used to retrieve data from any of these meta tables.</p>
<p>The add_metadata() function takes a meta type (‘comment’, ‘post’, ‘user’, etc), the ID of the content type, the key and value of the metadata and whether the information should be unique or not (true or false).</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div style="white-space: nowrap;">add_metadata(&#8216;comment&#8217;, 12345, &#8216;twitter_id&#8217;, &#8217;someyoungpunk&#8217;);</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>You can also use update_metadata(), delete_metadata(), get_metadata() and update_meta_cache() for further wrangling. Refer to wp-includes/meta.php for full documentation.</p>
<h2><span style="width: 221px; height: 36px;"><span>Themes/Plugins: </span></span><span style="width: 96px; height: 36px;"><span>Theme </span></span><span style="width: 102px; height: 36px;"><span>System </span></span><span style="width: 163px; height: 36px;"><span>Modification</span></span></h2>
<p>A lot of messiness has been eliminated in WordPress 2.9 theming. For one, new template opportunities exist. Now, instead of looking for a template file called category-x.php, tag-x.php or page-x.php, where x is the ID of one of those types of content types, it will look for these templates second. The first template that is now looked for is based on the slug. So if you have a category, tag or page called foo, the first template to be sought after would be category-foo.php, tag-foo.php, or page-foo.php. If none of these templates exist, <em>then</em> the ID-based template file is looked for.</p>
<p>Additionally, plugin developers can register new directories for themes to be located with the register_theme_directory() function.</p>
<h2><span style="width: 108px; height: 36px;"><span>System: </span></span><span style="width: 127px; height: 36px;"><span>Database </span></span><span style="width: 90px; height: 36px;"><span>Repair </span></span><span style="width: 76px; height: 36px;"><span>Script</span></span></h2>
<p>The database occasionally needs a good spring cleaning. Other times, the database needs a repair. WordPress ships with a new script that will do just this. It is housed at /wp-admin/maint/repair.php but in order to use it, you need to create a new (or modify if it already exists for some reason) constant in wp-config.php.</p>
<div style="overflow: auto; white-space: nowrap; width: 530px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div style="white-space: nowrap;">define(&#8216;WP_ALLOW_REPAIR&#8217;,true);</div>
</td>
</tr>
</tbody>
</table>
</div>
<h2><span style="width: 108px; height: 36px;"><span>System: </span></span><span style="width: 131px; height: 36px;"><span>Minimum </span></span><span style="width: 179px; height: 36px;"><span>Requirements</span></span></h2>
<p>PHP 5 is not required yet. That’s <del datetime="2009-11-18T02:28:44+00:00">coming in WordPress 3.0</del> will be increasingly implemented over time. <del datetime="2009-11-18T02:28:44+00:00">But MySQL requirements have been boosted from MySQL 4.0 to MySQL 4.1.2.</del></p>
<h2><span style="width: 88px; height: 36px;"><span>Bonus </span></span><span style="width: 115px; height: 36px;"><span>coverage</span></span></h2>
<p>Other interesting things in WordPress 2.9.</p>
<ul>
<li>JSON compatibility, before only beneficial to PHP 5.2, has been backported for use in WordPress</li>
<li>New ‘Undo’ button when using the Visual Text Editor</li>
<li>A new sanitization API (with functions like esc_html())</li>
<li>The emoticon system can be altered using the smilies_src hook. <img src='http://www.yaaahaaa.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Bulk Upgrading of plugins</li>
<li>Filesystem optimizations pertaining to FTP/SSH etc.</li>
<li>rel=”canonical” for single posts and pages aiding in SEO</li>
<li>Minify Admin CSS making for quicker (and smaller) page loads</li>
<li>Bunny Tags and Jeromes Keywords Importers removed</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.yaaahaaa.com/10-things-you-need-to-know-about-wordpress-2-9technosailor-com.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
