<?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>Ian Dunn &#187; WordPress</title>
	<atom:link href="http://iandunn.name/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://iandunn.name</link>
	<description>Seattle-based web developer blogging about tips and solutions</description>
	<lastBuildDate>Fri, 18 May 2012 18:11:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Cross Site Scripting Vulnerability in Subscribe2 Plugin</title>
		<link>http://iandunn.name/cross-site-scripting-vulnerability-in-subscribe2-plugin/</link>
		<comments>http://iandunn.name/cross-site-scripting-vulnerability-in-subscribe2-plugin/#comments</comments>
		<pubDate>Fri, 18 May 2012 18:10:19 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cross-site Scripting]]></category>
		<category><![CDATA[Subscribe2]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1327</guid>
		<description><![CDATA[News of <a title="WordPress Subscribe2 8.0 Cross Site Scripting" href="http://packetstormsecurity.org/files/112688/WordPress-Subscribe2-8.0-Cross-Site-Scripting.html">the XSS bug in Subscribe2</a> didn&#8217;t show up in any of my RSS feeds or mailing lists, even though it&#8217;s a fairly popular plugin,  so I wanted to make a note of it in case anyone else missed it. <a title="Subscribe2" href="http://wordpress.org/extend/plugins/subscribe2/">Version 8.2 has a fix for it</a> .]]></description>
			<content:encoded><![CDATA[<p>News of <a title="WordPress Subscribe2 8.0 Cross Site Scripting" href="http://packetstormsecurity.org/files/112688/WordPress-Subscribe2-8.0-Cross-Site-Scripting.html">the XSS bug in Subscribe2</a> didn&#8217;t show up in any of my RSS feeds or mailing lists, even though it&#8217;s a fairly popular plugin,  so I wanted to make a note of it in case anyone else missed it. <a title="Subscribe2" href="http://wordpress.org/extend/plugins/subscribe2/">Version 8.2 has a fix for it</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/cross-site-scripting-vulnerability-in-subscribe2-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Admin Notices From a WordPress Plugin</title>
		<link>http://iandunn.name/creating-admin-notices-from-a-wordpress-plugin/</link>
		<comments>http://iandunn.name/creating-admin-notices-from-a-wordpress-plugin/#comments</comments>
		<pubDate>Tue, 15 May 2012 20:53:56 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Admin Notices]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[IDAdminNotices]]></category>
		<category><![CDATA[IDDescribeVar]]></category>
		<category><![CDATA[Plugin Development]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1322</guid>
		<description><![CDATA[I just threw a couple small PHP classes up on GitHub that I use in almost every WordPress plugin I write. The first is  <a href="https://github.com/iandunn/IDAdminNotices">IDAdminNotices</a> , which is a clean and easy way for plugins and themes to send messages/errors to the user within the Administration Panels. The second is <a href="https://github.com/iandunn/IDDescribeVar">IDDescribeVar</a> , which will outputs the type, length and contents... [<a href="http://iandunn.name/creating-admin-notices-from-a-wordpress-plugin/">more</a>]]]></description>
			<content:encoded><![CDATA[<p>I just threw a couple small PHP classes up on GitHub that I use in almost every WordPress plugin I write. The first is <a href="https://github.com/iandunn/IDAdminNotices">IDAdminNotices</a>, which is a clean and easy way for plugins and themes to send messages/errors to the user within the Administration Panels. The second is <a href="https://github.com/iandunn/IDDescribeVar">IDDescribeVar</a>, which will outputs the type, length and contents of a variable in a readable format, and send it to wp_die(), die(), return, set_transient(), or an IDAdminNotice.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/creating-admin-notices-from-a-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preventing Callback Functions From Executing Multiple Times</title>
		<link>http://iandunn.name/preventing-callback-functions-from-executing-multiple-times/</link>
		<comments>http://iandunn.name/preventing-callback-functions-from-executing-multiple-times/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 17:52:33 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Actions]]></category>
		<category><![CDATA[Callback]]></category>
		<category><![CDATA[Hooks]]></category>
		<category><![CDATA[Pippin Williamson]]></category>
		<category><![CDATA[Plugin Development]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1297</guid>
		<description><![CDATA[Many actions in WordPress will fire multiple times, which can lead to performance drags and undesired/intuitiveness results. Pippin Williamson points out that <a title="Detect when an Action has Run with did_action" href="http://pippinsplugins.com/detect-when-an-action-has-run-with-did_action/">you can check how many times an action has already run</a> , and modify your code to respond accordingly.]]></description>
			<content:encoded><![CDATA[<p>Many actions in WordPress will fire multiple times, which can lead to performance drags and undesired/intuitiveness results. Pippin Williamson points out that <a title="Detect when an Action has Run with did_action" href="http://pippinsplugins.com/detect-when-an-action-has-run-with-did_action/">you can check how many times an action has already run</a>, and modify your code to respond accordingly.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/preventing-callback-functions-from-executing-multiple-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New WordPress Security Plugin</title>
		<link>http://iandunn.name/new-wordpress-security-plugin/</link>
		<comments>http://iandunn.name/new-wordpress-security-plugin/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 18:36:11 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Brute Force]]></category>
		<category><![CDATA[Daniel Convissor]]></category>
		<category><![CDATA[Dictionary Attack]]></category>
		<category><![CDATA[Login Lock]]></category>
		<category><![CDATA[Login Lockdown]]></category>
		<category><![CDATA[Login Security Solution]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1217</guid>
		<description><![CDATA[In the past I&#8217;ve used <a href="http://wordpress.org/extend/plugins/login-lockdown/">Login Lockdown</a> and <a href="http://wordpress.org/extend/plugins/login-lock/">Login Lock</a> to block brute force attempts against WordPress installations, but Login Lockdown isn&#8217;t actively maintained and Login Lock has some serious bugs/security vulnerabilities. Recently <a href="http://www.analysisandsolutions.com/">Daniel Convissor</a> released a new plugin called <a href="http://wordpress.org/extend/plugins/login-security-solution/">Login Security Solution</a> that has the same basic features of Login Lockdown and Login Lock, but without the problems they have. He&#8217;s also added several more... [<a href="http://iandunn.name/new-wordpress-security-plugin/">more</a>]]]></description>
			<content:encoded><![CDATA[<p>In the past I&#8217;ve used <a href="http://wordpress.org/extend/plugins/login-lockdown/">Login Lockdown</a> and <a href="http://wordpress.org/extend/plugins/login-lock/">Login Lock</a> to block brute force attempts against WordPress installations, but Login Lockdown isn&#8217;t actively maintained and Login Lock has some serious bugs/security vulnerabilities. Recently <a href="http://www.analysisandsolutions.com/">Daniel Convissor</a> released a new plugin called <a href="http://wordpress.org/extend/plugins/login-security-solution/">Login Security Solution</a> that has the same basic features of Login Lockdown and Login Lock, but without the problems they have. He&#8217;s also added several more features. I&#8217;d definitely recommend checking it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/new-wordpress-security-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Constants for a Text Domain in WordPress</title>
		<link>http://iandunn.name/using-constants-for-a-text-domain-in-wordpress/</link>
		<comments>http://iandunn.name/using-constants-for-a-text-domain-in-wordpress/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 18:49:51 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Constants]]></category>
		<category><![CDATA[Internationalization]]></category>
		<category><![CDATA[Mark Jaquith]]></category>
		<category><![CDATA[Plugin Development]]></category>
		<category><![CDATA[Text Domain]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1211</guid>
		<description><![CDATA[Normally any kind of global values that don&#8217;t change within a program&#8217;s execution should be defined as constants, but text domains within internationalized WordPress plugins are an exception to that rule. Mark Jaquith explains why <a title="Translating WordPress Plugins and Themes: Don’t Get Clever" href="http://markjaquith.wordpress.com/2011/10/06/translating-wordpress-plugins-and-themes-dont-get-clever/">it&#8217;s important to use a string instead</a> .]]></description>
			<content:encoded><![CDATA[<p>Normally any kind of global values that don&#8217;t change within a program&#8217;s execution should be defined as constants, but text domains within internationalized WordPress plugins are an exception to that rule. Mark Jaquith explains why <a title="Translating WordPress Plugins and Themes: Don’t Get Clever" href="http://markjaquith.wordpress.com/2011/10/06/translating-wordpress-plugins-and-themes-dont-get-clever/">it&#8217;s important to use a string instead</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/using-constants-for-a-text-domain-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Developer&#8217;s Meetup Presentation on Child Themes</title>
		<link>http://iandunn.name/wordpress-developers-meetup-presentation-on-child-themes/</link>
		<comments>http://iandunn.name/wordpress-developers-meetup-presentation-on-child-themes/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 01:33:40 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Child Themes]]></category>
		<category><![CDATA[Seattle WordPress Meetup]]></category>
		<category><![CDATA[Theme Development]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1195</guid>
		<description><![CDATA[I&#8217;ll be giving a presentation on building Child Themes at the <a title="March 2012 Seattle WordPress Developer's Meetup" href="http://www.meetup.com/SeattleWordPressMeetup/events/48917922/">Seattle WordPress Developer&#8217;s Meetup tomorrow</a> . You can <a title="WordPress Child Themes presentation" href="http://iandunn.name/wp-content/misc/2012/wp-sea-dev-child-themes/">follow along</a> with the presentation if you plan on attending.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be giving a presentation on building Child Themes at the <a title="March 2012 Seattle WordPress Developer's Meetup" href="http://www.meetup.com/SeattleWordPressMeetup/events/48917922/">Seattle WordPress Developer&#8217;s Meetup tomorrow</a>. You can <a title="WordPress Child Themes presentation" href="http://iandunn.name/wp-content/misc/2012/wp-sea-dev-child-themes/">follow along</a> with the presentation if you plan on attending.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/wordpress-developers-meetup-presentation-on-child-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BackPress PHP Library</title>
		<link>http://iandunn.name/backpress-php-library/</link>
		<comments>http://iandunn.name/backpress-php-library/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 21:47:58 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[BackPress]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Libraries]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1202</guid>
		<description><![CDATA[<a href="http://backpress.org/">BackPress</a> is a useful project that packages the re-usable code from WordPress into an independent library you can use in non-WordPress projects.]]></description>
			<content:encoded><![CDATA[<p><a href="http://backpress.org/">BackPress</a> is a useful project that packages the re-usable code from WordPress into an independent library you can use in non-WordPress projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/backpress-php-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Including External View Files in WordPress Widgets</title>
		<link>http://iandunn.name/including-external-view-files-in-wordpress-widgets/</link>
		<comments>http://iandunn.name/including-external-view-files-in-wordpress-widgets/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 01:22:23 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[Model View Controller]]></category>
		<category><![CDATA[Require]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1182</guid>
		<description><![CDATA[I ran into a problem today while cleaning up and modifying some widgets. I moved all of the markup inside widget() to an external view file, and then included it via require_once(), which worked fine. I then tried to do the same thing inside form(), but didn&#8217;t get any output. It turns out that <a title="File included into functions.php via require_once() won't echo?" href="http://wordpress.stackexchange.com/q/21967/3898">you can&#8217;t use include_once() or require_once() inside form()</a> ,... [<a href="http://iandunn.name/including-external-view-files-in-wordpress-widgets/">more</a>]]]></description>
			<content:encoded><![CDATA[<p>I ran into a problem today while cleaning up and modifying some widgets. I moved all of the markup inside <em>widget()</em> to an external view file, and then included it via <em>require_once()</em>, which worked fine. I then tried to do the same thing inside <em>form()</em>, but didn&#8217;t get any output. It turns out that <a title="File included into functions.php via require_once() won't echo?" href="http://wordpress.stackexchange.com/q/21967/3898">you can&#8217;t use <em>include_once()</em> or <em>require_once()</em> inside <em>form()</em></a>, you have to use <em>include()</em> or <em>require()</em> instead. It&#8217;s a good idea to use <em>include()</em> or <em>require()</em> anyway, though, in case the widget has multiple instances.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/including-external-view-files-in-wordpress-widgets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing WordPress, Drupal and Joomla in 2011</title>
		<link>http://iandunn.name/comparing-wordpress-drupal-and-joomla-in-2011/</link>
		<comments>http://iandunn.name/comparing-wordpress-drupal-and-joomla-in-2011/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 18:41:54 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Model View Controller]]></category>
		<category><![CDATA[Object Oriented Programming]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1178</guid>
		<description><![CDATA[Ok, so it&#8217;s already 2012, but I just came across <a title="Drupal vs Joomla vs WordPress: Developer’s Perspective" href="http://foliovision.com/2011/04/02/drupal-vs-joomla-mambo-vs-wordpress">an article</a> comparing the three from last year and it was a good read. Like a lot of articles, though, the real value is in the comments more than the article itself. Going into it I had the impression that Joomla was a stagnant mess, but it sounds... [<a href="http://iandunn.name/comparing-wordpress-drupal-and-joomla-in-2011/">more</a>]]]></description>
			<content:encoded><![CDATA[<p>Ok, so it&#8217;s already 2012, but I just came across <a title="Drupal vs Joomla vs WordPress: Developer’s Perspective" href="http://foliovision.com/2011/04/02/drupal-vs-joomla-mambo-vs-wordpress">an article</a> comparing the three from last year and it was a good read. Like a lot of articles, though, the real value is in the comments more than the article itself. Going into it I had the impression that Joomla was a stagnant mess, but it sounds like they&#8217;ve really cleaned things up since the last time I used it. WordPress is still my default choice for most projects, but I&#8217;d give my left arm for it to have an object-oriented, MVC architecture like Joomla now does.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/comparing-wordpress-drupal-and-joomla-in-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Backup Options</title>
		<link>http://iandunn.name/wordpress-backup-options/</link>
		<comments>http://iandunn.name/wordpress-backup-options/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 00:22:06 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Backup]]></category>

		<guid isPermaLink="false">http://iandunn.name/?p=1162</guid>
		<description><![CDATA[Nathan Ingram put together a thorough post on <a title="Backup Strategies for your Web Site" href="http://nathaningram.com/recommendations/worryproof-wordpress-backup-strategies-for-your-web-site/">backing up WordPress</a> and a <a title="WordPress backup options comparison chart" href="http://nathaningram.com/wp-content/uploads/2012/01/Backup-Options-Comparison.pdf">chart comparing various plugins and services</a> .]]></description>
			<content:encoded><![CDATA[<p>Nathan Ingram put together a thorough post on <a title="Backup Strategies for your Web Site" href="http://nathaningram.com/recommendations/worryproof-wordpress-backup-strategies-for-your-web-site/">backing up WordPress</a> and a <a title="WordPress backup options comparison chart" href="http://nathaningram.com/wp-content/uploads/2012/01/Backup-Options-Comparison.pdf">chart comparing various plugins and services</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/wordpress-backup-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

