<?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>WordPress Craftsman</title>
	<atom:link href="https://www.wpcraftsman.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.wpcraftsman.com</link>
	<description>WordPress developer offering code snippets, tips and expert advice</description>
	<lastBuildDate>Sun, 01 Dec 2024 22:08:29 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.7.33</generator>
	<item>
		<title>Local Development</title>
		<link>https://www.wpcraftsman.com/local-development/</link>
		<comments>https://www.wpcraftsman.com/local-development/#comments</comments>
		<pubDate>Sun, 01 Dec 2024 22:01:41 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[environment]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=549</guid>
		<description><![CDATA[As a theme, plugin, or even a core developer, you should be aware of these essential local environment tools: wp-cli: a command-line tool for performing all kinds of administrative, maintenanance, database and other tasks. wp-env (version 9.4.0 as of this post): an easy WordPress local environment manager. Uses Docker and node.js. It can be installed [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/local-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developer bookmarks</title>
		<link>https://www.wpcraftsman.com/developer-bookmarks/</link>
		<comments>https://www.wpcraftsman.com/developer-bookmarks/#comments</comments>
		<pubDate>Sun, 12 Jul 2015 18:44:27 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[WordPress Developer]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=541</guid>
		<description><![CDATA[Here are a couple of quick-access bookmarks that perform searches directly on WordPress&#8217; Developer Resources. I like to have these handy for quick lookups; they simply prompt me for an input string and go straight to WP search results. (You may need to enable JavaScript within your browser&#8217;s URL bar.) First, a good one to [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/developer-bookmarks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging AJAX</title>
		<link>https://www.wpcraftsman.com/ajax-debugging/</link>
		<comments>https://www.wpcraftsman.com/ajax-debugging/#comments</comments>
		<pubDate>Sun, 05 Jul 2015 21:43:39 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Essentials]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[diagnostics]]></category>
		<category><![CDATA[errors]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=522</guid>
		<description><![CDATA[I can debug my JavaScript using console.log(), which also displays code errors. I can debug my PHP code using print_r() (which I prefer because it&#8217;s leaner; many use var_dump()). Since I have PHP&#8217;s display_errors directive enabled, and usually I declare error_reporting( E_ALL ^ E_STRICT ) or error_reporting( -1 ), so errors are output within the [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/ajax-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: An Object-Oriented Project</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:48:26 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Procedural coding]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=204</guid>
		<description><![CDATA[Download the Blurbette Plugin In this series I&#8217;ll take a comprehensive look at creating a plugin from scratch. The concept is to create a custom post type called a Blurbette, which can be inserted into any posts, pages or widgets, and to offer a number of management utilities to create and control. You can download [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: Copy Metabox</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin-copy-metabox/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin-copy-metabox/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:13:28 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[sanitize]]></category>
		<category><![CDATA[TinyMCE]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=406</guid>
		<description><![CDATA[In this chapter, I&#8217;ll create the metabox enabling a user to copy any post to a new Blurbette. This action shouldn&#8217;t force the user to leave the edit panel, so copying ought to take place via AJAX. And, for good measure, why not track whether a post has already been copied to a Blurbette, and [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin-copy-metabox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: Metabox Abstract</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin-metabox-abstract/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin-metabox-abstract/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:11:36 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[metaboxes]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=393</guid>
		<description><![CDATA[One of the biggest benefits of OOP is the ability to extend classes. Depending on how the classes are organized and structured, one class can take care of a lot of tedious or repetitive work, enabling you to benefit by extending it and simply defining a few additional elements. An abstract class is one that [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin-metabox-abstract/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: Admin Control Panel</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin-admin-control-panel/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin-admin-control-panel/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:09:20 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=374</guid>
		<description><![CDATA[In this chapter I&#8217;ll proceed a bit differently: I&#8217;ll make a few changes to WPCX_Blurbette_Def and WPCX_Blurbette_Registry first, then define the new class below. The sole aim of this admin control panel is to update a list of options. WordPress provides a Settings API that provides output helpers and manages groups of individual settings; but [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin-admin-control-panel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: Widget</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin-widget/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin-widget/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:05:10 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=360</guid>
		<description><![CDATA[Creating a widget is very simple, because WordPress provides a WP_Widget class you can simply extend and define. Four methods are required: __construct(): the constructor which simply defines some strings and calls the parent method, form(): presents the draggable widget form in the admin panel, update(): operates when the form is updated, widget(): performs the [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: TinyMCE Control</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin-tinymce-control/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin-tinymce-control/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:04:16 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[sanitize]]></category>
		<category><![CDATA[TinyMCE]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=328</guid>
		<description><![CDATA[This time I&#8217;ll define a TinyMCE Control class that must be instantiated. The last one, the Shortcode class, works fine without instantiating because all its properties are one-offs, and its public elements are available to all scopes (global and function). This class defines a &#8216;thing&#8217; that has unique properties, and there might be more than [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin-tinymce-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blurbette Plugin: Shortcode</title>
		<link>https://www.wpcraftsman.com/blurbette-plugin-shortcode/</link>
		<comments>https://www.wpcraftsman.com/blurbette-plugin-shortcode/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 18:02:02 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[recursion]]></category>
		<category><![CDATA[shortcodes]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://www.wpcraftsman.com/?p=283</guid>
		<description><![CDATA[The next class in our blueprint is the shortcode &#8212; the workhorse of the blurbette. I&#8217;ll be sure to relegate all blurbette output to this shortcode, so proper control can be maintained and code isn&#8217;t duplicated elsewhere. In other words, if some other code wants to output a blurbette directly, it can call do_shortcode( '&#091;blurbette [&#8230;]]]></description>
		<wfw:commentRss>https://www.wpcraftsman.com/blurbette-plugin-shortcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
