<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:series="http://organizeseries.com/"
> <channel><title>SitePoint &#187; WordPress</title> <atom:link href="http://www.sitepoint.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" /><link>http://www.sitepoint.com</link> <description>Learn CSS &#124; HTML5 &#124; JavaScript &#124; Wordpress &#124; Tutorials-Web Development &#124; Reference &#124; Books and More</description> <lastBuildDate>Mon, 13 May 2013 13:12:07 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.5.1</generator> <item><title>How to Build a Better Tag Cloud in WordPress</title><link>http://www.sitepoint.com/better-wordpress-tag-cloud/</link> <comments>http://www.sitepoint.com/better-wordpress-tag-cloud/#comments</comments> <pubDate>Mon, 25 Mar 2013 13:51:39 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS]]></category> <category><![CDATA[CSS3]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Open source]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[tag]]></category> <category><![CDATA[tag cloud]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=64744</guid> <description><![CDATA[Craig isn't happy with the HTML produced by WordPress's wp_tag_cloud() function. In this tutorial he provides a customizable tag cloud generator which can be styled using CSS.]]></description> <content:encoded><![CDATA[<p></p><p>Once you&#8217;ve defined a great set of tags for your WordPress posts (<a
href="http://www.sitepoint.com/wordpress-pages-use-tags/">or pages</a>), you&#8217;ll want to display a tag cloud from somewhere in your template. This is normally achieved using the <a
href="http://codex.wordpress.org/Function_Reference/wp_tag_cloud" class="broken_link">wp_tag_cloud()</a> or <a
href="http://codex.wordpress.org/Function_Reference/wp_generate_tag_cloud" class="broken_link">wp_generate_tag_cloud()</a> functions which do the hard work for you:</p><pre><code>&lt;a href=&quot;http://www.mysite.com/tag/word&quot; class=&quot;tag-link-7&quot; title=&quot;1 topic&quot; style=&quot;font-size: 8pt;&quot;&gt;word&lt;/a&gt;
&lt;a href=&quot;http://www.mysite.com/tag/tag&quot; class=&quot;tag-link-5&quot; title=&quot;2 topics&quot; style=&quot;font-size: 14.3pt;&quot;&gt;tag&lt;/a&gt;
&lt;a href=&quot;http://www.mysite.com/tag/phrase&quot; class=&quot;tag-link-6&quot; title=&quot;4 topics&quot; style=&quot;font-size: 22pt;&quot;&gt;phrase&lt;/a&gt;
&lt;a href=&quot;http://www.mysite.com/tag/subject&quot; class=&quot;tag-link-4&quot; title=&quot;1 topic&quot; style=&quot;font-size: 8pt;&quot;&gt;subject&lt;/a&gt;
</code></pre><p>Perhaps you&#8217;re happy with that. I&#8217;m not&hellip;<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><ol><li>Inline styles? Didn&#8217;t we abandon those in 1998?</li><li>The classes are pointless. I&#8217;ll probably never need to style an individual tag and, even if I do, referencing it by ID is fragile.</li><li>I don&#8217;t need the fully-qualified URL.</li></ol><p><code>wp_tag_cloud()</code> offers several options but I want more control! As well as addressing the points above, I&#8217;d like to assign five or six classes to tags depending on their popularity, e.g. &#8216;tagged1&#8242; for the least-used tag through to &#8216;tagged5&#8242; for the most used.</p><p>Let&#8217;s write a PHP function which returns a customized tag cloud. It can be placed in your theme&#8217;s functions.php file (wp-content/themes/&lt;themename&gt;/functions.php) or a plugin.</p><p>First, we have our function name which accepts an array of named arguments and sets defaults:</p><pre><code>// generate tag cloud
function My_TagCloud($params = array()) {
	extract(shortcode_atts(array(
		'orderby' =&gt; 'name',		// sort by name or count
		'order' =&gt; 'ASC',		// in ASCending or DESCending order
		'number' =&gt; '',			// limit the number of tags
		'wrapper' =&gt; '',		// a tag wrapped around tag links, e.g. li
		'sizeclass' =&gt; 'tagged',	// the tag class name
		'sizemin' =&gt; 1,			// the smallest number applied to the tag class
		'sizemax' =&gt; 5			// the largest number applied to the tab class
	), $params));
</code></pre><p>We now initialize <code>$ret</code>, our returned HTML, and <code>$min</code> and <code>$max</code> &#8212; the minimum and maximum number of times a tag is used:</p><pre><code>	// initialize
	$ret = '';
	$min = 9999999; $max = 0;
</code></pre><p>The WordPress <a
href="http://codex.wordpress.org/Function_Reference/get_tags" class="broken_link">get_tags()</a> function is now called. It returns an array of tag objects:</p><pre><code>	// fetch all WordPress tags
	$tags = get_tags(array('orderby' =&gt; $orderby, 'order' =&gt; $order, 'number' =&gt; $number));
</code></pre><p>We now need to determine the the minimum and maximum number of times a tag is used in our site. The following loop sets <code>$min</code> and <code>$max</code> accordingly:</p><pre><code>	// get minimum and maximum number tag counts
	foreach ($tags as $tag) {
		$min = min($min, $tag-&gt;count);
		$max = max($max, $tag-&gt;count);
	}
</code></pre><p>We can now create our custom tag cloud HTML. We need to loop through all tags a second time and fetch the URL and the link title &#8212; a message indicating how many articles use that tag:</p><pre><code>	// generate tag list
	foreach ($tags as $tag) {
		$url = get_tag_link($tag-&gt;term_id);
		$title = $tag-&gt;count . ' article' . ($tag-&gt;count == 1 ? '' : 's');
</code></pre><p>Now for the tricky bit. By default, we want to assign a class &#8216;tagged1&#8242; for the least-used tag through to &#8216;tagged5&#8242; for the most used (the class name and numbers can be overridden by setting <code>sizeclass</code>, <code>sizemin</code> and <code>sizemax</code> parameters when calling the function).</p><p>We know the minimum and maximum number of times a tag can be used so a little math can determine the class name for us. However, the equation would cause a divide by zero error if each tag was used, say, only once. In that situation, we set the class to just <code>$sizeclass</code>:</p><pre><code>		if ($max &gt; $min) {
			$class = $sizeclass . floor((($tag-&gt;count - $min) / ($max - $min)) * ($sizemax - $sizemin) + $sizemin);
		}
		else {
			$class = $sizeclass;
		}
</code></pre><p>We now have enough information to create the HTML for our single tag and end the loop:</p><pre><code>		$ret .=
			($wrapper ? &quot;&lt;$wrapper&gt;&quot; : '') .
			&quot;&lt;a href=\&quot;$url\&quot; class=\&quot;$class\&quot; title=\&quot;$title\&quot;&gt;{$tag-&gt;name}&lt;/a&gt;&quot; .
			($wrapper ? &quot;&lt;/$wrapper&gt;&quot; : '');
	}
</code></pre><p>Finally, we remove the blog domain URL from <code>$ret</code>, return the value and complete the function block:</p><pre><code>	return str_replace(get_bloginfo('url'), '', $ret);
}
</code></pre><p>The function can be called in any theme file using <code>My_TagCloud();</code>. Arguments can be passed as an associative array, e.g. <code>My_TagCloud(array('orderby'=&gt;'count','order'=&gt;'DESC'));</code>. However, we could also permit content editors to add a tag cloud using a WordPress shortcode, e.g.</p><pre><code>// enable [tagcloud] shortcode
add_shortcode('tagcloud', 'My_TagCloud');
</code></pre><p>In the following example we&#8217;ll create a tag cloud within an unordered list:</p><pre><code>$tags = OW_Tags(array('wrapper' =&gt; 'li'));
if ($tags) {
	echo &quot;&lt;h2&gt;Tags&lt;/h2&gt;\n&lt;ul class=\&quot;tagcloud\&quot;&gt;$tags&lt;/ul&gt;\n&quot;;
}
</code></pre><p>This produces far tidier HTML code:</p><pre><code>&lt;h2&gt;Tags&lt;/h2&gt;
&lt;ul class=&quot;tagcloud&quot;&gt;
&lt;li&gt;&lt;a href=&quot;/tag/word&quot; class=&quot;tagged1&quot; title=&quot;1 article&quot;&gt;word&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tag/tag&quot; class=&quot;tagged2&quot; title=&quot;2 articles&quot;&gt;tag&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tag/phrase&quot; class=&quot;tagged5&quot; title=&quot;4 articles&quot;&gt;phrase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tag/subject&quot; class=&quot;tagged1&quot; title=&quot;1 article&quot;&gt;subject&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre><p>which is easier to style and maintain CSS:</p><pre><code>ul.tagcloud, ul.tagcloud li
{
	font-size: 1em;
	list-style-type: none;
	padding: 0;
	margin: 0;
}
ul.tagcloud li
{
	display: inline;
}
ul.tagcloud a
{
	text-decoration: none;
	padding: 3px 4px;
}
a.tagged1 { font-size: 0.60em; }
a.tagged2 { font-size: 0.80em; }
a.tagged3 { font-size: 1.00em; }
a.tagged4 { font-size: 1.20em; }
a.tagged5 { font-size: 1.40em; }
</code></pre><p>I hope you find it useful. Please use and adapt the code however you like in your own WordPress projects.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/better-wordpress-tag-cloud/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>How to Enable Tags in WordPress Pages</title><link>http://www.sitepoint.com/wordpress-pages-use-tags/</link> <comments>http://www.sitepoint.com/wordpress-pages-use-tags/#comments</comments> <pubDate>Wed, 20 Mar 2013 16:56:09 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Content management]]></category> <category><![CDATA[Open source]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[tags]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=64639</guid> <description><![CDATA[Why doesn't WordPress permit tags on Pages? Craig never understood the reason so he's provided a few lines of code which enables them.]]></description> <content:encoded><![CDATA[<p></p><p>Tags have been supported in WordPress since version 2.3 was released in 2007. When used well, they can be a more effective form of navigation than categories or menus. <em>But why has it never been possible to tag WordPress pages?</em></p><p>Fortunately, WordPress provides the tools to help us enable tags in pages and any other type of post. Beneath the surface, WordPress treats pages, posts and other content in much the same way; a page is just a custom post type. Therefore, enabling tags is simply a matter of saying <em>&#8220;hey WordPress, I&#8217;d like to use tags on my pages and don&#8217;t forget to include them in the tag cloud!&#8221;</em></p><p>Let&#8217;s convert that to code you can insert into your theme&#8217;s functions.php file (wp-content/themes/&lt;themename&gt;/functions.php):</p><pre><code>// add tag support to pages
function tags_support_all() {
	register_taxonomy_for_object_type('post_tag', 'page');
}
// ensure all tags are included in queries
function tags_support_query($wp_query) {
	if ($wp_query-&gt;get('tag')) $wp_query-&gt;set('post_type', 'any');
}
// tag hooks
add_action('init', 'tags_support_all');
add_action('pre_get_posts', 'tags_support_query');
</code></pre><p>Simple. If you have further custom post types which require tags, you&#8217;ll need to add <code>register_taxonomy_for_object_type</code> calls for each &#8212; the second argument is the type name.</p><p>Those running several WordPress sites or a network may find it easier to convert the code to a plugin so it can be enabled and disabled accordingly. In essence, that&#8217;s a matter of adding the code above to a suitably-named plugin file, i.e. wp-content/plugins/enable-tags.php, and placing comments at the top:</p><pre><code>&lt;?php
/*
Plugin Name: Enable Tags in WordPress Pages
Plugin URI: http://www.sitepoint.com/
Description: Enables tags in all content
Version: 1.0
Author: Craig Buckler
Author URI: http://twitter.com/craigbuckler
License: Free to use and adapt
*/
// add tag support to pages
// ... rest of code ...
</code></pre><p>I hope you find it useful. Please use and adapt the code as you like in your own projects &#8212; a link back to this article is appreciated.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/wordpress-pages-use-tags/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>The Easiest WordPress Security Tip Ever!</title><link>http://www.sitepoint.com/easiest-wordpress-security-tip-ever/</link> <comments>http://www.sitepoint.com/easiest-wordpress-security-tip-ever/#comments</comments> <pubDate>Fri, 11 Jan 2013 19:02:30 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Content management]]></category> <category><![CDATA[Open source]]></category> <category><![CDATA[Web security]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[security]]></category> <category><![CDATA[tips]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=62138</guid> <description><![CDATA[Craig reveals a WordPress security tip which is so simple, you'll question why you didn't know about it before!]]></description> <content:encoded><![CDATA[<p></p><p>Sometimes you encounter a tip which is so simple you can&#8217;t believe you didn&#8217;t know about it before.</p><p>If you&#8217;re running WordPress, you&#8217;ll have defined a wp-config.php file which contains essential settings such as the MySQL database host, name, user and password. It normally sits in the location where WordPress was installed &#8212; in most cases this will be the web server root but it could be any sub-folder.</p><p>You certainly don&#8217;t want wp-config.php falling into the wrong hands. Under normal circumstances, a naughty cracker cannot view the file because the PHP interpreter would parse it and return an empty page. However:</p><ul><li>The cracker will know exactly where the file is located and can target it more effectively.</li><li>If PHP fails, e.g. perhaps during a update, wp-config.php could be viewed directly in a browser by entering the URL.</li></ul><p><em>Ready for the simple tip&hellip;</em></p><p>Move the wp-config.php file into the folder <strong>above</strong> your WordPress installation.</p><p>For example, you may have a folder structure such as /home/mysite/public_html/ where WordPress is installed. In that case, you would move wp-config.php into /home/mysite/.</p><p>This has several benefits:</p><ol><li>Assuming /home/mysite/public_html/ was the web server&#8217;s root folder, /home/mysite/ is inaccessible to anyone using a browser.</li><li>A cracker has less chance of locating the correct file.</li><li>It&#8217;s so simple, there&#8217;s little reason not to do it!</li></ol><p>Perhaps this won&#8217;t be the most exciting tech article you read today, but it&#8217;s useful to know. I hope it helps with your security efforts.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/easiest-wordpress-security-tip-ever/feed/</wfw:commentRss> <slash:comments>34</slash:comments> </item> <item><title>4 Ways to Make Your WordPress Site More Accessible</title><link>http://www.sitepoint.com/4-ways-to-make-your-wordpress-site-more-accessible/</link> <comments>http://www.sitepoint.com/4-ways-to-make-your-wordpress-site-more-accessible/#comments</comments> <pubDate>Mon, 31 Dec 2012 12:32:30 +0000</pubDate> <dc:creator>Eric Blair</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[Usability]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[accessibility]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=62225</guid> <description><![CDATA[Adopting four relatively simple techniques can vastly improve the accessibility of WordPress websites. Eric Blair explains why that's a good business decision.]]></description> <content:encoded><![CDATA[<p></p><p>Most of the time, my writing focuses on search engine optimization techniques. So, why would I write about accessibility in WordPress?</p><p>Because, to a large extent, optimizing a site for search engines and optimizing a site for disability access amount to much the same thing. The same techniques that allow search robots to index a site properly allow screenreaders to correctly describe the content to users with visual disabilities.</p><p>Similarly, structuring a page properly makes it machine-friendly, whatever that machine is. Add the kind of common sense techniques that allow users (including users with disabilities) and machines to get straight to meaningful content, and you are moving towards making your site both accessible and search engine friendly.</p><p>We all know WordPress is a phenomenal tool that allows people to build blogs and websites with very little programming or coding knowledge. This platform is simple to set up, and provides a solid framework for the themes and plugins that will determine how your content and functionality is presented.</p><p>If you want your site to be accessible to individuals with disabilities, you&#8217;ll find that basic WordPress has much that is needed to facilitate the development of an accessible website, and it is not hard to take that further through the addition of plugins and good technique.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>Before we get started, there are two important caveats to be aware of. First, implementing these four technqiues alone will not make any website totally accessible to the extent of complying with all requirements of <a
href="http://www.w3.org/TR/2008/REC-WCAG20-20081211/">WCAG</a> or <a
href="https://www.section508.gov/">Section 508</a>, but it will address the most common barriers to web access and deliver much greater accessibility.</p><p>Second, it&#8217;s important to understand that accessibility can only be achieved through the co-operation of design, development and content authoring practices. A designer may design an accessible theme, a developer might add accessible functionality, but if a content author inserts a meaningful image without an alt tag, the full meaning of the web page will be inaccessible.</p><p>With that in mind, here are my four tips for making WordPress sites more accessible.</p><h2>Label Your Images With Alt Text</h2><p>It is <a
href="http://webaim.org/blog/alt-text-and-linked-images/">well documented</a> that the single greatest barrier to web accessibility is using alt text properly to describe images on a web page. If this single point was addressed by everyone who builds websites, it would eradicate the largest number of accessibility complaints.</p><p>The fundamental point to understand is that if you are going to put images on your site, it is essential that you label them correctly with alt text. To put that another way, every meaningful image on a web page must have an alt tag.</p><p>The information in the alt tag allows users of screen readers (which read web pages aloud to users with visual disabilities), text only browsers and slow connections that won&#8217;t load images to understand the information conveyed by images.</p><p>If an image does not have meaning, for example it is used purely for decoration, there are two ways to deal with it. If you load it as a background image using CSS, screen readers will ignore it and the image does not require an alt tag (be careful, becuase this also applies to meaningful images: if you load it in background, the screen reader will ignore it). If an image is displayed using HTML but is purely decorative, then use the alt tag but leave it empty. That tells the screen reader that an image is present but has no meaning for the user and can be ignored.</p><p>When you do label your images, use descriptive text that will allow people who cannot see to understand what the meaning of the image is. This requires judgement: what meaning is the image meant to convey, and what words will best convey that same meaning. Don&#8217;t get caught up in literal descriptions of every visual detail, convey the meaning.</p><p>A classic example is an image of a magnifying glass used as a button to start a search. The image has a meaning, so it should be described. Describing it as &#8220;a magnifying glass&#8221; does not help the user. What they need to know is that clicking on this button will start a search, so alt text of &#8220;click here to search&#8221; or even just &#8220;search&#8221; may be most appropriate.</p><p>Only images that serve a purpose must be labeled. Examples of these are as follows:</p><ul><li>Images that are used as buttons</li><li>Images that are used as links</li><li>Images that are used for any other controls</li><li>Images that directly relate to the content</li></ul><p>This technique applies to all websites, of course, not just WordPress sites. WordPress, however, makes it easier than most, firstly by allowing the content author to switch between Visual and HTML views, and secondly by providing a field for alt text whenever an image is inserted using Add Media functionality.</p><h2>Use Plugins to Enhance Accessibility</h2><p>WordPress accessibility can be enhanced by using a variety of plugins. These plugins are easy to set up, and they will enable users with a wide range of disabilities to access the site. Here are some plugins I&#8217;ve found useful.</p><h3><a
href="http://wordpress.org/extend/plugins/access-keys/">Access Keys</a></h3><p>The Access Keys plugin allows access keys to be assigned to links and controls on your website. For instance, the home link may be assigned the access key combination alt+h and the search button may be assigned the alt+s key combination. Access keys, such as the examples provided, enable visually impaired users as well as those with mobility issues, to easily access what they want.</p><h3><a
href="http://wordpress.org/extend/plugins/easy-retweet/">Easy Retweet</a></h3><p>Easy Retweet is a plugin that will allow you to add accessible buttons to your page that facilitate sharing your content on Twitter. This way, if individuals with disabilities wish to share your pages with their friends, they can do so without any difficulty.</p><h3><a
href="http://wordpress.org/extend/plugins/astickypostorderer/">AStickyPostOrderER</a></h3><p>AstickyPostOrderER lets you choose the order in which your content is displayed. You can choose to display content from oldest to newest or in the reverse order.</p><h3><a
href="http://wordpress.org/extend/plugins/hackadelic-table-of-content-boxes/">Hackadelic SEO Table of Contents</a></h3><p>The Hackadelic SEO Table of Contents plugin enables you to provide a table of contents for either your posts or your pages. This will make your content easy to find.</p><h3><a
href="http://wordpress.org/extend/plugins/wp-polls/">WP-Polls</a></h3><p>WP-Polls permits individuals with disabilities to participate in any polls you may have on your site</p><p>New plugins are being developed all the time. Use the WordPress dashboard functionality to search for more. Try different plugins and ask your users with disabilities to give you feedback</p><p>When using any plugins, make sure the plugins use are compatible with your chosen theme, as well as with one another. If your plugins are not compatible with your theme, they will either not work or will cause more problems for disabled users who try to browse your site. If your plugins are not compatible with one another, your site can be rendered unusable or content may be displayed incorrectly.</p><h2>Use Headings Properly</h2><p>When you design pages, it is vital to structure the content using headings in the correct order: <code>&lt;h1&gt;</code>, <code>&lt;h2&gt;</code>, <code>&lt;h3&gt;</code> and so on. When you structure the content using headings, people using screen readers can get a summary of what the pages are about and navigate them more easily. Screen reader users can access the sections of content that they want by pressing the letter &#8220;H&#8221; to go forward and &#8220;shift+H&#8221; to go backwards.</p><p>You can label your content using headings one through six. Check how your theme uses headings (for example, your theme may or may not apply <code>&lt;h1&gt;</code> to the site title and that site title may or may not appear on every webpage. Either way, make sure the first heading used is <code>&lt;h1&gt;</code> and the following headings (page title, page sub-sections, paragraph headings) descend in order through to <code>&lt;h6&gt;</code>, where appropriate.</p><p>There is some flexibility about the ordering, but the most sensible option is to keep headings in numerical order and don&#8217;t mix them up (<code>&lt;h1&gt;</code>, <code>&lt;h4&gt;</code>, <code>&lt;h2&gt;</code>, etc).</p><pre><code>&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Must See Horror Movies&lt;/title&gt;
&lt;/head&gt;  
&nbsp;
&lt;body&gt;
    &lt;h1&gt;Horror Movies of the Decade &lt;/h1&gt;
    (This is the title of the page that will be assigned a header by default in most WordPress themes.
    This header is always assigned to h1. Structure the rest of the content to follow what has been started)  
&nbsp;
    &lt;h2&gt;Horror Movies for 2012&lt;/h2&gt;
    (The list of 2012 horror movies will go here)  
&nbsp;
    &lt;h3&gt;2012 Cult Movies&lt;/h3&gt;
    (a sub-list of 2012 movies)  
&nbsp;
    &lt;h3&gt;2012 Sci Fi Horror Movies&lt;/h3&gt;
    (another sub-list of 2012 movies)  
&nbsp;
    &lt;h2&gt;Horror Movies for 2011&lt;/h2&gt;
    (The list of 2011 horror movies goes here)  
&nbsp;
    &lt;h2&gt;Horror Movies for 2010&lt;/h2&gt;
    (The list of 2010 horror movies goes here)  
&nbsp;
    &lt;h2&gt;Horror Movies for 2009&lt;/h2&gt;
    (The list of 2009 horror movies goes here)
&nbsp;
    &lt;h2&gt;Horror Movies for 2008&lt;/h2&gt;
    (The list of 2008 horror movies goes here)  
&nbsp;
    &lt;h4&gt;Why Use Our Horror Movies Reference &lt;/h4&gt;
    (This gets a new, lower header level due to the fact that this section of the page comes after those
    listing the movies, and it is not as important as the movie listings)
&lt;/body&gt;
&lt;/html&gt;</code></pre><h2>Use Navigation Links</h2><p>Finally, you need to have navigation links in your site design. These navigation links will allow users with disabilities to skip past the navigation bar or other menus and search boxes and jump to certain places on the page by clicking these links. Or, the user can quickly jump to desired sections on the site. These links need to appear wherever it is necessary for users to skip to meaningful content. Examples of what these links may say are:</p><ul><li>Skip to Main Content</li><li>Jump to Navigation Bar</li><li>Jump to Search</li></ul><p>Some WordPress themes may already provide such links. If this is the case, you will need to check to these links to see if you have to add any of your own. Other themes, however, will not provide navigation links. Thus, you will need to add these links yourself.</p><h2>Conclusion</h2><p>I will emphasize again that none of this will guarantee that your website will be 100% accessible.</p><p>However, if you employ these four techniques, then you can count on your WordPress site being more accessible than 90% of WordPress sites out there, and that you have addressed the issues that are raised by 90% of people who point out web inaccessibility.</p><p>People with disabilities will be able to better access your site, along with all of your other visitors. Since these visitors also include search robots, you can be assured that making your site accessible will also benefit your business model and help maximize your profit making potential.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/4-ways-to-make-your-wordpress-site-more-accessible/feed/</wfw:commentRss> <slash:comments>29</slash:comments> </item> <item><title>What&#8217;s New in WordPress 3.5</title><link>http://www.sitepoint.com/wordpress-35-whats-new/</link> <comments>http://www.sitepoint.com/wordpress-35-whats-new/#comments</comments> <pubDate>Wed, 05 Dec 2012 09:13:58 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Content management]]></category> <category><![CDATA[Open source]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[cms]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=61383</guid> <description><![CDATA[Craig looks at the new features you can expect in WordPress 3.5, due for release on December 5, 2012...]]></description> <content:encoded><![CDATA[<p></p><p>According to latest figures, WordPress powers one in five websites. WordPress is also used by more than half of all websites running a Content Management System. <em>(Yes, some people will argue WordPress isn&#8217;t a CMS, but they&#8217;re just being hypercritical. And wrong).</em> Finally, the 30 month-old 3.x edition is used on more than 95% of WordPress installations.</p><p>All going well, WordPress 3.5 will be released today. Here are the new features you can expect following your one-click upgrade&hellip;</p><h2>Interface Updates</h2><p>The existing layout and menus have been retained but the Welcome screen has been redesigned and simplified. Those of you with retina displays will appreciate the new icon set.</p><h2>New Media Uploader and Library</h2><p>The system for uploading, previewing and inserting images has been completely overhauled. It should be far easier to drag, drop and arrange galleries.</p><h2>New Twenty-Twelve Theme</h2><p>Twenty-Twelve is the first native theme to implement Responsive Web Design techniques. While a large selection of third-party responsive templates are available, many websites stick with the default &#8212; they&#8217;ll be mobile-friendly from now on.</p><p>The theme also includes a widget-enabled home page and the screen-legible Open Sans font from <a
href="http://www.google.com/webfonts">Google&#8217;s directory</a>. Finally, it implements an extended set of post types:<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><ul><li><strong>Standard</strong> &#8212; a standard blog post</li><li><strong>Aside</strong> &#8212; concise Tweet-like posts with no title</li><li><strong>Image</strong> &#8212; single images</li><li><strong>Link</strong> &#8212; links</li><li><strong>Quote</strong> &#8212; quotations</li><li><strong>Status</strong> &#8212; status updates</li></ul><h2>Favorite Plugins</h2><p>Any plugin can be marked as a &#8220;favorite&#8221; so it can be quickly installed and configured across all your WordPress installations.</p><h2>No More Links</h2><p>The Links facility has been banished. I never used it and I don&#8217;t know anyone who did. If that&#8217;s a deal-breaker for you, download the new <a
href="http://wordpress.org/extend/plugins/link-manager/">Link Manager plugin</a> to bring the functionality back.</p><h2>Miscellaneous Improvements</h2><p>Not enough? What about:</p><ul><li><a
href="http://oembed.com/">oEmbed</a> for easier media insertion from sites such as YouTube and Slideshare</li><li>better keyboard navigation</li><li>a new color picker</li><li>improved accessibility</li><li>mobile apps can integrate with XML-RPC (Remote Procedure Calls) which is now enabled by default</li><li>a faster Posts API</li><li>a new API to search through comments</li><li>right-to-left language support</li><li>UTF-8 encoding used by default.</li></ul><h2>Should I Upgrade?</h2><p>Almost certainly. But I&#8217;d recommend doing so after a thorough test of your site, templates and plugins. Issues rarely arise, but the WordPress development team cannot possibly test every configuration or combination of theme and plugins.</p><p>Those of a more nervous disposition may prefer to wait until version 3.5.1 which will undoubtedly fix any major compatibility issues. If past experience is anything to go by, it&#8217;ll be released within a few weeks.</p><p>Let us know if you have any successes or failures with your upgrade&hellip;</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/wordpress-35-whats-new/feed/</wfw:commentRss> <slash:comments>26</slash:comments> </item> <item><title>Win $500 Worth of Tweaks for Your Website</title><link>http://www.sitepoint.com/win-500-worth-of-tweaks-for-your-website/</link> <comments>http://www.sitepoint.com/win-500-worth-of-tweaks-for-your-website/#comments</comments> <pubDate>Wed, 21 Nov 2012 02:05:08 +0000</pubDate> <dc:creator>Ned Dwyer</dc:creator> <category><![CDATA[Browsers]]></category> <category><![CDATA[Community]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[competition]]></category> <category><![CDATA[contest]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[Tweaky]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=60699</guid> <description><![CDATA[Heads up: with our friends at Tweaky.com, we're giving away $500 worth of tweaks for one lucky SitePoint reader to revamp their website. ]]></description> <content:encoded><![CDATA[<p></p><p><img
src="http://blog.tweaky.com/wp-content/uploads/2012/11/Tweaky_Laptop4.png" alt="" /></p><p>Today we’re announcing an exclusive SitePoint competition to whet your appetite as we approach Christmas! Our friends at Tweaky.com are giving away $500 worth of tweaks for one lucky SitePoint user to revamp their site.</p><p>If you haven’t heard of Tweaky it’s about time you did. They are the world’s #1 marketplace for website customization. Tweaky allows any website owner to customize their site from just $39. They tweak everything from simple CSS changes through to complex tasks like server migration and browser caching.</p><p>To enter the competition, simply enter your email and website into Tweaky’s website checker tool and tell us in 25 words or less what you hate about your website. Do that and you’re in the running to win $500 worth of tweaks.</p><p>Tweaky’s tool will also generate a detailed report highlighting issues that are slowing down your site, along with recommendations on how you can fix them. Pretty nice and definitely useful for any website owner.</p><p>The competition closes midnight 17th December, so what are you waiting for? Get in the running to win $500 worth of free tweaks for your site today.</p><p>Unfortunately, this competition has now closed. Still worried about your site&#8217;s performance? Tweaky is here to help with any of your <a
href="https://www.tweaky.com">WordPress Customization</a>.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/win-500-worth-of-tweaks-for-your-website/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>16 of the Most Common WordPress Mistakes</title><link>http://www.sitepoint.com/16-of-the-most-common-wordpress-mistakes/</link> <comments>http://www.sitepoint.com/16-of-the-most-common-wordpress-mistakes/#comments</comments> <pubDate>Sat, 20 Oct 2012 13:00:26 +0000</pubDate> <dc:creator>Hugo Velasco</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=59810</guid> <description><![CDATA[Just as the sun rises in the east and sets in the west, there is one fact of life we can’t argue with&#8211;we all make mistakes. And while there isn’t a lot we can do to prevent them, we can learn from our mistakes. Even better, we can learn from other people’s mistakes! Here, I&#8217;ve outlined [...]]]></description> <content:encoded><![CDATA[<p></p><p>Just as the sun rises in the east and sets in the west, there is one fact of life we can’t argue with&#8211;we all make mistakes. And while there isn’t a lot we can do to prevent them, we can learn from our mistakes. Even better, we can learn from other people’s mistakes!</p><p>Here, I&#8217;ve outlined 16 of the most common mistakes that WordPress users and developers make. Brush up on what other people are doing wrong so you can prevent these same blunders on your own site.</p><h2>1. Missing Out on the Best Plugins</h2><p>It will take some time for you to get to know all of WordPress’s plugins. Through trial and error, you will find what is best for you. However, we’re going to make this little research project infinitely easier. You <em>must</em> have these plugins:</p><ul><li>Google XML Sitemaps</li><li>Contact Form 7</li><li>Akismet</li><li>All in One SEO Pack</li></ul><h2>2. Forgetting to Back Up Your Site</h2><p>Nothing works perfectly, especially in the world of technology. Crashes will happen. If you are unprepared, a very painful situation may be headed your way&#8211;loss of data. You can back up your site manually. Go to Tools, then Export&#8211;or to make life easier, use an automatic backup plugin like WP-DB-Backup.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h2>3. Using an Unfriendly Permalink Structure</h2><p>Your WordPress default setting is not search-friendly. To get the most bang for your SEO buck, make sure you use keywords in your permalink structure. Here is what you do:</p><ul><li>Go to Options</li><li>Select Permalinks in your Admin Panel</li><li>In the Custom Text box, enter “/%category%/%postname%/%post_id”</li></ul><h2>4. Using Only One Server</h2><p>If you are a WPWebHost user, you can skip this step. If you are a Non-WPWebHost user, continue reading.</p><p>Don’t underestimate the value of a Content Delivery Network (CDN)&#8211;it can really improve your reader’s experience. Here is what you do:</p><ul><li>Research CDNs like MaxCDN or Cloudflare</li><li>Copy your content onto several mirror servers around the world</li></ul><p>This will make it easier for a guest to view your page, no matter where they are visiting from. It decreases the load time because not all of the requests are being sent to the main web server.</p><h2>5. Not Consulting Analytics Programs</h2><p>Would you drive your car at night without headlights? No. Then why would you run a blog without consulting an analytics program? Google Analytics monitors website traffic and keeps tally of the keywords that lead to your site. Trying to write to a target audience without analytics is like throwing your money out the window.</p><h2>6. Not Integrating Webmaster Tools</h2><p>Without a little help, search engines don’t crawl very deep. If you want to get all your pages indexed, submit an XML sitemap to Google Webmaster tools. Taking advantage of webmaster tools also means you’ll be the recipient of lots of useful statistics.</p><h2>7. Ignoring Google Authorship Markup</h2><p>The purpose of Google Authorship Markup is to increase credibility and maximize exposure. Who wouldn’t want that? The process is simple and the result is a photo next to the meta description in the search results.</p><h2>8. Being Faceless</h2><p>You know what a Gravatar is, right? If not, a Gravatar, or Globally Recognized Avatar, is an image that appears beside a blog comment or discussion forum. It is an image that represents you across the entire internet. Just like Google Authorship, Gravatars lend credibility and attract attention. If you aren’t using a Gravatar, get one as soon as possible. The registration is a simple, one-time process that will have a big influence on your blog.</p><h2>9. Using the Default Favicon</h2><p>A favicon is the icon associated with your website. It will be displayed in the browser’s address bar, next to the page title in a tab, and beside the page name in a list of bookmarks. Most WordPress newbies use the favicon that came with the theme. However, if you want to look more professional, you really need to have a custom icon. Here is what you do:</p><ul><li>Search for a free favicon generator on the web</li><li>Create your file (usually 16 pixels by 16 pixels)</li><li>Go to the images section of your theme</li><li>Replace the default favicon with your custom design</li></ul><h2>10. Making Life Difficult for Mobile Users</h2><p>These days, everyone has a smartphone. Basically, if you expect to receive any traffic at all, you had better make sure your site is mobile-user friendly. You have two options. First, you can customize your site for mobile devices by using a plugin like WPtouch. Your other option is to use a WordPress theme that is responsive to smartphones, iPod touch and tablets.</p><h2>11. Using the cPanel File Manager for FTP transfers</h2><p>Shopping around for an FTP client takes time. However, FTP clients improve the quality of life for many blog owners. While the File Manager in the cPanel has a slow interface and often crashes (or closes) unexpectedly, anFTP client makes it easy to upload, download or change file permissions on your server.</p><h2>12. Overloading with Information</h2><p>You may think you have designed your site with the reader in mind. However, it&#8217;s also likely you may have designed your site with your wallet in mind. Readers like simplicity. Don’t overwhelm them with a super-cluttered sidebar; too many ads, widgets, and links are distracting. Restrict your sidebar to the most important pieces of information.</p><h2>13. Passing on Blog Authoring Tools</h2><p>Why, oh why, are you subjecting yourself to WordPress’s dashboard? Use a blog authoring tool! Tools like Windows Live Writer are designed to write blogs offline. You can pen your next post and then enhance it with simple-to-use formatting tools.</p><h2>14. Ignoring WordPress Updates</h2><p>WordPress is constantly releasing new updates. If a blog owner ignores these updates, the site will be opened up to security issues. There is a simple fix&#8211;don’t ignore the WordPress updates! These newer versions were created for a reason!</p><h2>15. Utilizing a Faulty Hosting Company</h2><p>If you are looking to save money, it may seem appealing to go with an ultra-low-price hosting company. However, many of these companies aren’t such a bargain after all. Their low price is a result of fewer features and unsatisfactory support. Instead of signing on the dotted line with the cheapest company you discover, consult an expert. Get some advice about which hosting options are best.</p><h2>16. Choosing a Defective Theme</h2><p>There are two things you should consider when choosing a theme&#8211;the ease of use for a beginner and the reputation of the theme company. After you have found a respectable company and a theme that will be easy to navigate, then you can worry about price. Choosing based on price alone could mean using a theme that isn’t compatible with your site (or you).</p><p>Well, what do you think? Have you made any of these mistakes? Have you learned a valuable lesson about WordPress that we didn’t mention? We’d love to receive your feedback!</p><p>If you enjoyed reading this post, you&#8217;ll love <a
href="https://learnable.com/">Learnable</a>; the place to learn fresh skills and techniques from the masters. Members get instant access to all of SitePoint&#8217;s ebooks and interactive online courses, like <a
href="https://learnable.com/courses/the-beginners-guide-to-web-design-with-wordpress-120">The Beginner&#8217;s Guide to Web Design with WordPress</a>.</p><p>Guest blogger Hugo Velasco is a website designer for Subtle Network. He enjoys helping clients avoid the same mistakes he made as a newbie!</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/16-of-the-most-common-wordpress-mistakes/feed/</wfw:commentRss> <slash:comments>40</slash:comments> </item> <item><title>How to Add Featured Image Thumbnails to Your WordPress Theme</title><link>http://www.sitepoint.com/how-to-add-featured-image-thumbnails-to-your-wordpress-theme/</link> <comments>http://www.sitepoint.com/how-to-add-featured-image-thumbnails-to-your-wordpress-theme/#comments</comments> <pubDate>Sat, 06 Oct 2012 14:56:01 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[featured image]]></category> <category><![CDATA[thumbnails]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=43170</guid> <description><![CDATA[Craig's latest WordPress tutorial describes how to add featured image thumbnails of any size to your theme files.]]></description> <content:encoded><![CDATA[<p></p><p>You may have noticed the &#8220;Featured Image&#8221; box when editing a post or page. It allows you to upload or select an associated image for the article. It generally appears as a thumbnail when viewing a list of posts, perhaps in a category index or search results.</p><p>Thumbnail support must be enabled within your theme. You could <a
href="http://www.sitepoint.com/wordpress-easy-administration-plugin-1/">add it to a plug-in</a> so it&#8217;s available to all themes but that may not be appropriate in every case. Therefore, you&#8217;ll need to open or create a &#8216;functions.php&#8217; file within your theme folder (wp-content/themes/<em>theme-name</em>/).</p><p>To add thumbnail support for all post types, append this command somewhere after the opening &lt;php:</p><pre><code>
add_theme_support('post-thumbnails');
</code></pre><p>Alternatively, you can enable thumbnails for just posts:</p><pre><code>
add_theme_support('post-thumbnails', array('post'));
</code></pre><p>or just pages:</p><pre><code>
add_theme_support('post-thumbnails', array('page'));
</code></pre><h2>Setting Thumbnail Sizes</h2><p>Default thumbnail sizes can be set in WordPress&#8217;s Settings &gt; Media screen. However, you can also set a default height and width in functions.php, e.g.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><pre><code>
set_post_thumbnail_size(100, 75);
</code></pre><p>This will produce thumbnails with 100px width and a 75px height (a pleasing 4:3 ratio). However, what happens when a user uploads an image with different aspect ratio &#8212; say 100 x 150? In this case, the whole image is proportionally reduced to fit the space and the resulting thumbnail is 50 x 75.</p><p>Alternatively, you can define hard-cropping by passing &#8216;true&#8217; as a third argument:</p><pre><code>
set_post_thumbnail_size(100, 75, true);
</code></pre><p>This will crop the image so it matches the aspect ratio. The resulting thumbnail will always be 100 x 75, but the top and bottom or left and right edges will be removed.</p><p><img
src="http://blogs.sitepointstatic.com/images/tech/547-wordpress-thumbnails-set.png" width="281" height="57" alt="WordPress Featured Image" class="right" /></p><p>The &#8220;Featured Image&#8221; box should now appear on your WordPress post/page edit screen. If it&#8217;s not there, check it&#8217;s enabled in &#8220;Screen Options&#8221; or review your functions.php code.</p><h2>Using Thumbnails</h2><p>Three main thumbnail commands can now be used within any WordPress loop. Typically, you&#8217;ll want to use them in files named index.php, category.php, archive.php, author.php, taxonomy.php or search.php:</p><ul><li><code>has_post_thumbnail()</code> returns &#8216;true&#8217; if a thumbnail has been set</li><li><code>the_post_thumbnail()</code> echos a string containing the thumbnail &lt;<code>img</code>&gt; tag</li><li><code>get_the_post_thumbnail()</code> returns a string containing the thumbnail &lt;<code>img</code>&gt; tag</li></ul><p>One of the simplest implementations is therefore:</p><pre><code>
if (has_post_thumbnail()) {
	the_post_thumbnail();
}
</code></pre><p>Or we could add a link and a default thumbnail if one isn&#8217;t available:</p><pre><code>
echo '&lt;a href=&quot;', get_permalink(), '&quot;&gt;';
if (has_post_thumbnail()) {
	the_post_thumbnail();
}
else {
	echo
		'&lt;img src=&quot;',
		get_bloginfo('template_directory'), '/images/thumb-default.png',
		'&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;thumbnail&quot; /&gt;';
}
echo '&lt;/a&gt;';
</code></pre><h2>Advanced Thumbnail Use</h2><p>Two optional arguments can be passed to <code>the_post_thumbnail()</code> and <code>get_the_post_thumbnail()</code>. The first is the size &#8212; either:</p><ol><li>a string containing the text &#8216;thumbnail&#8217;, &#8216;medium&#8217; or &#8216;large&#8217; as set in in WordPress&#8217;s Settings &gt; Media screen, or</li><li>an array with new width and height dimensions, e.g. array(120, 90)</li></ol><p>The second is an associative array containing the src, class, alt and title.</p><p>For example:</p><pre><code>
the_post_thumbnail(
	array(120, 90),
	array(
		'src' =&gt; 'image.jpg',
		'class' =&gt; 'thumbnail',
		'alt' =&gt; 'post thumbnail',
		'title' =&gt; 'my custom title'
	)
);
</code></pre><p>results in HTML such as:</p><pre><code>
&lt;img width=&quot;120&quot; height=&quot;90&quot; src=&quot;image.jpg&quot; alt=&quot;post thumbnail&quot; title=&quot;my custom title&quot; /&gt;
</code></pre><p>That&#8217;s about as complex as it gets. Have fun adding thumbnail support to all your WordPress themes.</p><p>If you enjoyed reading this post, you&#8217;ll love <a
href="https://learnable.com/">Learnable</a>; the place to learn fresh skills and techniques from the masters. Members get instant access to all of SitePoint&#8217;s ebooks and interactive online courses, like <a
href="https://learnable.com/courses/the-beginners-guide-to-web-design-with-wordpress-120">The Beginner&#8217;s Guide to Web Design with WordPress</a>.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/how-to-add-featured-image-thumbnails-to-your-wordpress-theme/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>10 Must-Know Skills for a WordPress Plugin Developer</title><link>http://www.sitepoint.com/10-must-know-skills-for-a-wordpress-plugin-developer/</link> <comments>http://www.sitepoint.com/10-must-know-skills-for-a-wordpress-plugin-developer/#comments</comments> <pubDate>Sat, 29 Sep 2012 13:00:40 +0000</pubDate> <dc:creator>Rakhitha Nimesh</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=59147</guid> <description><![CDATA[WordPress is the most powerful CMS framework available at the moment. It can be used to create highly flexible and extendable websites with very little work. I believe that the Plugins and Themes structure is the main reason behind its success as a CMS. There are around 21,000 plugins available for free on the official [...]]]></description> <content:encoded><![CDATA[<p></p><p>WordPress is the most powerful CMS framework available at the moment. It can be used to create highly flexible and extendable websites with very little work. I believe that the Plugins and Themes structure is the main reason behind its success as a CMS. There are around 21,000 plugins available for free on the official WordPress website.</p><p>I always prefer creating my own plugins whenever possible. I recommend you learn plugin development; you&#8217;ll be able to customize your site very easily and earn good money as a WordPress developer. In this article, I am going to discuss the most essential things you need to know about WordPress plugin development; I am assuming you have a basic knowledge of the WordPress folder structure here.</p><h2>1. Creating a Plugin</h2><p>The first step will be creating your own plugin folder in the <strong>/wp-content/plugins</strong> folder. Once the folder is created you should place your plugin files inside that folder. You should have a main file for your plugin. Files should be named in simple letters with hyphens (-) for separating words.</p><ul><li>Sample file name: <strong>wp-multi-slider.php</strong></li></ul><p>Inside your main file you should have the following comment structure in order for WordPress to identify your plugin.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><pre><code>
&lt;?php
/* Plugin Name:  Sample Name
Plugin URI: http://sitepoint.com/tutorials/wordpress-plugin-url
Description: Get email notifications when your favorite author publishes a post.
Version: 1.0
Author URI: http://www.sitepoint.com
Author: Rakhitha Nimesh
License: GPL2
*/ </code></pre><p>You will be able to see the plugin in the Dashboard Plugins section, as shown below.</p><p><a
href="http://www.sitepoint.com/?attachment_id=59270" rel="attachment wp-att-59270"><img
class="alignnone size-full wp-image-59270" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/09/wp-pluginview.jpg" alt="" width="600" height="55" /></a></p><h2>2. Plugin Activation/Deactivation</h2><p>Plugins can be activated by clicking <strong>Activate Link</strong> in the plugin list. In a simple plugin you don&#8217;t need to do anything on activation. But an advanced plugin will require tasks like initializing plugin options, creating plugin tables, etc. So let&#8217;s see how we can handle plugin activation and deactivation.</p><h3>Plugin Activation Hook</h3><p>WordPress provides a function called <code>register_activation_hook</code> which will be triggered on plugin activation. We can add a custom function to execute on plugin activation using this method as shown below.</p><pre><code>
function wp_sample_activation() {
}
register_activation_hook(__FILE__, 'wp_sample_activation');
</code></pre><p>You have to pass the path of the file that contains the activation function as the first parameter and the function name as the second parameter.</p><p>If the activation function is inside the main plugin file you can use <code>__FILE__ </code> as shown in the above code. You can do tasks like validations, initializations and table creations inside the activation function.</p><h3>Plugin Deactivation Hook</h3><p>We can handle the deactivation of a plugin with <code>register_deactivation_hook</code>, using similar syntax as with activation. You can clean up the plugin resources, options and tables inside the deactivation function.</p><pre><code>
function wp_sample_deactivation() {
}
register_deactivation_hook(__FILE__, 'wp_sample_deactivation'); </code></pre><h2>3. Creating Custom Tables</h2><p>The WordPress database table structure is very flexible and you can implement most of the custom functionalities using the available tables. But there may be occasions where you wish to include more advanced systems like shopping carts, task management systems, or booking systems.</p><p>In these cases, you need to know how and when to create custom tables. First, consider the requirements of your projects and try to use <strong>wp_options table</strong> and <strong>meta tables</strong> to store your project specific data. If you feel that the above tables are not structured enough to implement the required functionality, create custom tables using the following method.</p><pre><code>
global $wpdb;
$wpdb-&gt;query("DROP TABLE IF EXISTS {$wpdb-&gt;prefix}sample_table");
$sql1 = "CREATE TABLE {$wpdb-&gt;prefix}sample_table ( id int(11) NOT NULL AUTO_INCREMENT,
                                                       activation_code varchar(255) NOT NULL,
                                                       email varchar(75) NOT NULL,
                                                       status int(11) NOT NULL, PRIMARY KEY  (id) )
         ENGINE=InnoDB AUTO_INCREMENT=1;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql1);
</code></pre><p>First, check if the table exists before creating it. You can decide to drop and create the table on activation based on your requirements. You can see that I have used <code>{$wpdb-&gt;prefix} </code>before the table name. Generally, WordPress tables are prefixed with <code>wp_. </code>. This can be changed when you install the database; so you should not hardcode <code>wp_</code> as a prefix to provide increased flexibility.</p><p><strong>{$wpdb-&gt;prefix} </strong>will you give you the prefix defined for the current installation. So always use that syntax before the new table name you are creating.</p><p>Even though you can use the <strong>$wpdb-&gt;query</strong> function to create tables, it is recommended to use the <strong>dbDelta</strong> function as it compares the current table structure. It&#8217;s not loaded by default, so you need to include the file first.</p><h2>4. Including Scripts and Styles</h2><p>Even though you can just echo the scripts and styles anywhere, it is recommended to add scripts using the <code>wp_enqueue_script</code> function. This function checks if the files are already available and also the dependencies with other scripts. The following example illustrates the effective use of <code>wp_enque_script.</code></p><pre><code>
add_action('wp_enqueue_scripts', 'sample_scripts');
function sample_scripts() {
  wp_enqueue_script('jquery');
  wp_register_style('sample_style', plugins_url('styles.css', __FILE__));
  wp_enqueue_style('sample_style');
  wp_register_script('jqueryUICore', plugins_url('ui/jquery.ui.core.js', __FILE__),array(“jQuery”));
  wp_enqueue_script('jqueryUICore');
  $config_array = array(“sample_name”=&gt;”sample_value”]);
  wp_localize_script('jqueryUICore', 'sampleData', $config_array);
} </code></pre><p>You can first use <code>wp_register_style</code> to register the style file and <code>wp_enqueue_style</code> to include the file. A unique identifier and path to the style file has to be provided. Then include scripts using the <code>wp_enqueue_script</code> function. If it depends on other scripts, you can mention it as the third parameter. I have used <strong>jQuery</strong> as a dependency.</p><p>Finally, you can add data to be used inside specific scripts by using the <code>wp_localize_script </code>function. You can include the scripts whenever you prefer, but always use the <code>wp_enqueue_scripts</code> and <code>wp_enqueue_styles</code> functions.</p><p>Make sure to use the <code>admin_enqueue_script </code>action instead of <code>wp_enqueue_script </code>for the admin side.</p><h2>5. Creating Shortcodes</h2><p>Shortcodes are predefined blocks of codes which you can use anywhere. It is vital to learn about shortcodes as a plugin developer, since you can add dynamic behavior to custom pages with them.</p><p>You can create shortcodes using following syntax.</p><pre><code>
add_shortcode("shortcode_name", "shortcode_function");
function shortcode_function() {
  return “&lt;input type=’button’ value=’Share’ /&gt; “;
}</code></pre><p>Assign a shortcode name and function to the <code>add_shortcode </code>function. Then return the type of content you want to display in the browser inside the function. The above shortcode creates a simple HTML button.</p><p>Use the shortcode in pages, posts or plugins to display the button using the following syntax:</p><p><strong>[shortcode_name/]</strong></p><h2>6. Filtering Content</h2><p>It is essential to consider how to filter post or page content when you develop a blog-related plugin. Consider the example below.</p><pre><code>
function sample_content_filter($content) {
  $banners = “HTML for banners”;
  $author = “HTML for author info”;
  return $banners.$content.$author;
}
add_filter( 'the_content', 'sample_content_filter' );
</code></pre><p>Every time a page or post is viewed, the content will be passed to the function. You can modify, add or remove content as I have shown above.</p><p>You can also use WordPress conditional tags to filter the content for specific pages. The following code filters the content on a post detail page.</p><pre><code>
function sample_content_filter($content) {
  if(is_single()){
  return $banners.$content.$author;
  }
} </code></pre><h2>7. Working with Ajax</h2><p>Ideally, you should know how to use Ajax in WordPress to provide interactive content for users. jQuery&#8217;s Ajax functionality is an easy way of mastering this.</p><pre><code>
$.post("admin-ajax.php", { action:"sample_ajax_action" },
function(result, textStatus) {
}, "json");
</code></pre><p>The most important thing in the above Ajax request is the action. It will be used in the WordPress code to identify the request. Also, all the Ajax requests should be sent to the <strong>admin-ajax.php</strong> file.</p><pre><code>
function sample_ajax_action() {
echo json_encode($your_result_array); exit;
}
add_action('wp_ajax_nopriv_sample_ajax_action', 'sample_ajax_action');
add_action('wp_ajax_sample_ajax_action', 'sample_ajax_action');
 </code></pre><p>You can see the same action name used in Ajax is used here with <strong>wp_ajax_nopriv_</strong> and <strong>wp_ajax_ </strong>prefixes. <strong>wp_ajax_ </strong>is used for logged-in users, and <strong>wp_ajax_nopriv_</strong> is used for users who are not logged in.</p><h2>8. Writing SQL Queries</h2><p>In WordPress, we have to consider the security of our queries in order to prevent SQL injections. We can use the <code>prepare</code> method to filter the user data before applying it to the query. Always filter user-submitted data with the following code before processing.</p><pre><code>
$wpdb-&gt;query($wpdb-&gt;prepare("update wp_sample_table set status=1 where activation_code=%s and status=%d",$activationCode,$status));
</code></pre><p>As shown above, always assign escape characters to the SQL and variable values at the end to filter the data before executing in SQL.</p><h2>9. Adding Option Boxes</h2><p>WordPress provides a default set of fields such as <strong>title</strong>, <strong>content</strong>, <strong>image</strong>, and <strong>excerpt</strong> in the content creation screen. We need custom fields to add additional behavior. Even though we can use the custom fields section, it provides text boxes only. We need to add separate fields if we require checkboxes, radio buttons, drop downs and the like.</p><p>We can easily create option boxes to provide additional fields, as shown below.</p><pre><code>
add_action('add_meta_boxes', 'add_custom_fields_box');
function add_custom_fields_box() {
  add_meta_box('custom_fields_box_id', 'Custom Info', 'display_custom_info_box', 'post', 'normal', 'high');
}
function display_custom_info_box() {
global $post;
$html = "&lt;table&gt;&lt;tr&gt;&lt;td&gt;Custom Checkbox&lt;/td&gt;&lt;td&gt;&lt;input id='custom_checkbox' type='checkbox' name='custom_checkbox'  /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Custom Selecy&lt;/td&gt;&lt;td&gt;&lt;select name='custom_select'  &gt; &lt;option&gt;Option 1&lt;/option&gt; &lt;/select&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Custom Upload&lt;/td&gt;&lt;td&gt;&lt;input id='custom_file' type='file' name='custom_file'  /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;";
echo $html;
} </code></pre><p>Values of the fields will be saved to the <strong>wp_options</strong> table as custom fields. You should prefix your option field names with an <strong>underscore</strong> to prevent duplication with the custom fields section.</p><h2>10. Using Nonces for Plugin Security</h2><p>Security is major concern in creating WordPress plugins. You should not trust data provided by users, and you always need to validate data before executing. WordPress provides a concept called a <strong>nonce</strong> which creates a nonce value, or arbitrary number used only once, when a form is generated. Then we can check for the same nonce value once the form is submitted to ensure it is a valid request &#8212; or otherwise.</p><p>You can create a nonce value using the following code:</p><pre><code>
wp_nonce_field('sample_frm_nonce', 'sample_frm_nonce');
</code></pre><p>The first parameter is a unique identifier and the second parameter will be used as hidden form field name. Once the form is submitted, you can validate the nonce value using the code below.</p><pre><code>
if (!isset($_POST['sample_frm_nonce']) || !wp_verify_nonce($_POST['sample_frm_nonce'], 'sample_frm_nonce')){
  return;
} </code></pre><p>If the nonce is not validated, the request is not processed further.</p><p>The WordPress Plugin API is huge, and it is not easy to to cover everything it involves. What I&#8217;ve gone through here are just the 10 most common things you might need in the act of plugin creation. Feel free to suggest more concepts you might want to take into account as a plugin developer.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/10-must-know-skills-for-a-wordpress-plugin-developer/feed/</wfw:commentRss> <slash:comments>23</slash:comments> </item> <item><title>5 Funky WordPress Snippets to Customize Your Comments</title><link>http://www.sitepoint.com/5-funky-wordpress-snippets-to-customize-your-comments/</link> <comments>http://www.sitepoint.com/5-funky-wordpress-snippets-to-customize-your-comments/#comments</comments> <pubDate>Sat, 22 Sep 2012 13:00:08 +0000</pubDate> <dc:creator>Avi Milstein</dc:creator> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=58837</guid> <description><![CDATA[First the phrase was “there&#8217;s an app for that”. Now, the prevailing sentiment is “there&#8217;s a plugin for that” — which isn&#8217;t always a good thing. Many of the customizations you envision for your WordPress comments section can easily be made in your theme files, so you can get the polished comments section you want [...]]]></description> <content:encoded><![CDATA[<p></p><p>First the phrase was “there&#8217;s an app for that”. Now, the prevailing sentiment is “there&#8217;s a plugin for that” — which isn&#8217;t always a good thing. Many of the customizations you envision for your WordPress comments section can easily be made in your theme files, so you can get the polished comments section you want without bloating your site with even more plugins.</p><p>Not a programmer? You don&#8217;t have to be. Below, you&#8217;ll find simple codes with clear customization instructions. If you&#8217;re having problems, check out the tips for suggestions on how to correct them.<br
/> <em>Please note that this was written for the Twenty Eleven theme, so if your site is based on another theme, some file names may be different.</em></p><h2>Display the Number of Comments/Trackbacks</h2><p>Most templates begin their comments section with a message on how many comments there are. But what if you also want to display a comment tally somewhere else on the post, like the top? This code snippet lets you place a comment tally and message anywhere in the single page loop, and customize which message comes back for zero, one, and multiple responses.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p><strong>Template file:</strong></p><p>content-single.php</p><p><strong>Raw Code: </strong></p><pre><code>&lt;?php comments_number( 'no responses', 'one response', '% responses' ); ?&gt;.</code></pre><p><strong>How to Use it:</strong></p><p>The raw code shows the most basic messages to display for zero, one, and multiple messages. The following example shows the message wrapped in a <code>p</code> tag with a short message (“Join the discussion!”) preceding the dynamic text. Simply switch out the raw code messages for what you want to say. Perhaps you want to be more conversational, like below:</p><pre><code>&lt;p&gt; Join the discussion! &lt;?php comments_number( 'You get to have the first comment!', 'One comment so far - what can you add?', '% people have commented - add your two cents!' ); ?&gt; &lt;/p&gt; </code></pre><p><strong>Example output:</strong></p><p>no comments: “You get to have the first comment!”</p><p>one comment: “One comment so far – what can you add?”</p><p>multiple comments: “3 people have commented – add your two cents!”</p><p><strong>Tips:</strong></p><ul><li>If the code breaks your page, check to see if you accidentally put apostrophes in the string text. If so, use the following HTML code to display apostrophes: <code>&amp;rsquo;</code></li><li>Building on this knowledge, you can easily tweak the way your comments section displays its text. Just open your comments.php file and search for the text that is currently displaying (default for TwentyEleven begins with &#8220;One thought on&#8230;&#8221;, and replace the string text with your own.</li></ul><p><strong>Learn more about this code:</strong></p><p><a
href="http://codex.wordpress.org/Function_Reference/comments_number" class="broken_link">http://codex.wordpress.org/Function_Reference/comments_number</a></p><h2>Customize Your Default Avatar</h2><p>Many blog visitors aren&#8217;t registered on Gravatar, so their avatar will show whatever your default is set as. If your comments section needs a little more personality than the ever-present Mystery Man, why not create one unique to your site?</p><p><strong>Template file:</strong></p><p>functions.php</p><p><strong>Raw Code: </strong></p><pre><code>add_filter( 'avatar_defaults', 'new_default_avatar' ); function new_default_avatar ( $avatar_defaults ) { $new_avatar_url = get_bloginfo( 'template_directory' ) . '/images/new_default_avatar.png'; $avatar_defaults[$new_avatar_url] = 'My Custom Avatar'; return $avatar_defaults; }</code></pre><p><strong>How to Use it:</strong></p><p>Create your image at 60px by 60px, and upload it to the images folder in your theme.</p><p>In the code, replace the image path and file name (&#8216;/images/new_default_avatar.png&#8217;) with your own. If you want to name your default avatar, you can do so by replacing &#8220;Your New Default Avatar&#8221; with your chosen name. This name will only show up in your settings page, which we&#8217;re about to go to.</p><p>On your Dashboard, go to Settings &gt; Discussion, where you should see your new custom avatar. Select it, click Save, and enjoy!</p><p><strong>Tips:</strong></p><ul><li>If you must place your image somewhere other than the main template directory, or for some reason it won&#8217;t link properly, try replacing <code>get_bloginfo( 'template_directory' ) . '/images/new_default_avatar.png';</code> with the full (http:// and all) URL leading to that image.</li><li>If you&#8217;d like to style the avatar with CSS, open your stylesheet and add a style for:  <code>.commentlist .avatar {}</code></li></ul><p><strong>Learn more about this code:</strong></p><p><a
href="http://codex.wordpress.org/How_to_Use_Gravatars_in_WordPress" class="broken_link">http://codex.wordpress.org/How_to_Use_Gravatars_in_WordPress</a></p><h2>Remove URL or Other Fields from Contact Form</h2><p>The default fields in most contact forms are Name, Email, Website, and Comment. While all of those fields have excellent reasons for being there, some would prefer to leave out certain ones — most famously the website field, which spammers often try to take advantage of.</p><p>This easy amendment to your functions.php file will take care of those unwanted fields in a flash!</p><p><strong>Template file:</strong></p><p>functions.php</p><p><strong>Raw Code: </strong></p><pre><code>add_filter('comment_form_default_fields', 'remove_url'); function remove_url($val) { $val['url'] = ''; return $val; }</code></pre><p><strong>How to use it:</strong></p><p>This code, pasted as is, will remove the website field. Other fields can be removed by replacing &#8216;url&#8217; with &#8216;email&#8217; or &#8216;author&#8217; (name) in all three places it exists in the code.</p><p><strong>Learn more about this code:</strong></p><p><a
href="http://codex.wordpress.org/Function_Reference/comment_form" class="broken_link">http://codex.wordpress.org/Function_Reference/comment_form</a><strong></strong></p><h2>Keep Your Blog from Pinging Itself</h2><p>It&#8217;s nice to get trackbacks from sites that have linked to your article. It&#8217;s not nice to get pinged every time you link within your own website. Before you reach for that plugin, try adding this simple snippet to your functions.</p><p><strong>Template file:</strong></p><p>functions.php</p><p><strong>Raw Code: </strong></p><pre><code>function disable_self_ping( &amp;$links ) { foreach ( $links as $l =&gt; $link ) if ( 0 === strpos( $link, get_option( 'home' ) ) ) unset($links[$l]); } add_action( 'pre_ping', 'disable_self_ping' );</code></pre><p><strong>How to Use it:</strong></p><p>Simply paste the code at the end of your functions.php file. It doesn&#8217;t get much simpler!</p><p><strong>Learn more about this code:</strong></p><p><a
href="http://wp-snippets.com/disable-self-trackbacks/">http://wp-snippets.com/disable-self-trackbacks/</a><strong></strong></p><h2>Change “Leave a Reply” Text</h2><p>If “Leave a Reply” sounds little cold and impersonal to you, you might consider changing it up with this code:</p><p><strong>Template file:</strong></p><p>comments.php</p><p><strong>Raw Code: </strong></p><pre><code>&lt;?php comment_form(array('title_reply'=&gt;'Put in Your Two Cents')); ?&gt;</code></pre><p><strong>How to Use it:</strong></p><p>In your theme folder&#8217;s comments.php file, search for the <code>&lt;?php comment_form(); ?&gt;</code> line close to the bottom. Replace it with the raw code above.</p><p>Now, simply change out &#8216;Put in Your Two Cents&#8217; with whatever text you want to show there.</p><p><strong>Learn more about this code:</strong></p><p><a
href="http://wp-snippets.com/disable-self-trackbacks/">http://wp-snippets.com/disable-self-trackbacks/</a><strong></strong></p><p>Have fun with these snippets; hopefully they give your comments area that extra zing!</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/5-funky-wordpress-snippets-to-customize-your-comments/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Speed Up Your WordPress Site With a CDN</title><link>http://www.sitepoint.com/speed-up-your-wordpress-site-with-a-cdn/</link> <comments>http://www.sitepoint.com/speed-up-your-wordpress-site-with-a-cdn/#comments</comments> <pubDate>Mon, 03 Sep 2012 13:00:03 +0000</pubDate> <dc:creator>Jacco Blankenspoor</dc:creator> <category><![CDATA[CloudSpring]]></category> <category><![CDATA[Amazon CloudFront]]></category> <category><![CDATA[CDN]]></category> <category><![CDATA[cloudfront]]></category> <category><![CDATA[Rackspace files]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://cloudspring.com/?p=2273</guid> <description><![CDATA[Have you ever imagined speeding your WordPress website by implementing a Content Delivery Network (CDN)? This tutorial illustrates how the CDN configuration using  Amazon CloudFront and Rackspace Cloud Files (with Akamai CDN) speeds up the WordPress website. Before going forward, if you are not aware about CDN, then this article will provide a quick glance around CDN fairy tales. [...]]]></description> <content:encoded><![CDATA[<p></p><p>Have you ever imagined speeding your WordPress website by implementing a Content Delivery Network (CDN)? This tutorial illustrates how the CDN configuration using  Amazon CloudFront and Rackspace Cloud Files (with Akamai CDN) speeds up the WordPress website. Before going forward, if you are not aware about CDN, then <a
href="http://cloudspring.com/content-delivery-networks-cdn-get-to-the-edge/" target="_blank">this article</a> will provide a quick glance around CDN fairy tales.</p><h2>Setting up W3 Total Cache<strong></strong></h2><p>Before starting, you should have working WordPress Installation. After this, install <a
href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache plugin</a>.You will see a new tab in your sidebar, called “Performance”. To configure your CDN, start with the “General” section. There are a few steps you should take care of:-</p><ul><li>Minify: Check “Enable”, and select “Manual” as minify mode.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2286" rel="attachment wp-att-2286"><img
class="alignnone size-full wp-image-2286" src="http://cloudspring.com/files/2012/08/2.1.Minify-e1345990603131.jpg" alt="" width="598" height="219" /></a></p><ul><li>CDN: Check “Enable”, and set the CDN Type to Self-hosted for now (we’ll change this to Amazon/Rackspace later on).</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2285" rel="attachment wp-att-2285"><img
class="alignnone size-full wp-image-2285" src="http://cloudspring.com/files/2012/08/2.2.-CDN-e1345990662913.jpg" alt="" width="600" height="211" /></a><div
id='div-gpt-ad-1354739799360-6' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1354739799360-6'); });</script> </div></p><p>Hit the “Save all settings” button, and proceed to the “Minify” section. Now take the following actions:</p><ul><li>General: Enable “Rewrite URL structure”.</li><li>HTML &amp; XML: Enable “HTML minify settings”.</li><li>JS: Enable “JS minify settings”, check the boxes as shown in the screenshot, and add your .JS files (you can find these by searching for them in your source code of your front-end).</li><li>Use only the template files, no Adsense or Analytics code or something like that. Use “Blocking” in the embed location drop-down if the script is needed to load the page, otherwise use “Non-Blocking”.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2283" rel="attachment wp-att-2283"><img
class="alignnone size-full wp-image-2283" src="http://cloudspring.com/files/2012/08/3.1.JS-minify-e1345990696434.jpg" alt="" width="600" height="285" /></a></p><ul><li>CSS: Enable “CSS minify settings”, and again check the boxes as shown in the screenshot. Add your CSS files (which you can find the same way as the .JS files).</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2284" rel="attachment wp-att-2284"><img
class="alignnone size-full wp-image-2284" src="http://cloudspring.com/files/2012/08/3.2.-CSS-minify-e1345990726592.jpg" alt="" width="600" height="274" /></a></p><p>After that, save all your settings again and proceed to the CDN section. Here you need to take these steps:</p><ul><li>General: Check all the box from “Host attachments” to “Import external media library attachments” to have full control over content.</li><li>Configuration: Leave these unattended for now, this is where you will fill in your Amazon or Rackspace details.</li><li>Advanced:Check the first three boxes, and the last one Set cookie domain to “domainname.com”.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2282" rel="attachment wp-att-2282"><img
class="alignnone size-full wp-image-2282" src="http://cloudspring.com/files/2012/08/4.-Advanced-e1345990776933.jpg" alt="" width="600" height="200" /></a></p><p>Save all settings. You will see some red and yellow messages on top of your W3 Total Cache settings screen. We will deal with these later, because first you need to setup up Amazon CloudFront or Rackspace Cloud Files as your CDN. <strong>Setting up Amazon CloudFront as your CDN </strong>Let’s start with Amazon CloudFront. If you haven’t done already, signup for Amazon Web Services and login to your account. When logged in, you should do a separate signup for S3 and CloudFront. Now head back to your WordPress installation, open the “General” section of W3 Total Cache, and where you first selected “Self-hosted”, now choose “Amazon CloudFront” under “Origin Pull” (this means the CDN will extract the necessary files from your site). Click “Save all settings”.</p><p><a
href="http://cloudspring.com/?attachment_id=2277" rel="attachment wp-att-2277"><img
class="alignnone size-full wp-image-2277" src="http://cloudspring.com/files/2012/08/5.5.-CDN-CloudFront-e1345990819141.jpg" alt="" width="600" height="190" /></a></p><p>To get it working, take these steps:</p><ul><li>Open the CDN section again, and scroll to “Configuration”. Fill in your “Access key ID” and “Secret key”. These keys can be find in “My Account” in the Amazon AWS portal, and then select “Security Credentials”.</li></ul><table
border="0" cellspacing="0" cellpadding="0"><tbody><tr><td
valign="top" width="384"> <a
href="http://cloudspring.com/?attachment_id=2276" rel="attachment wp-att-2276"><img
class="alignnone size-full wp-image-2276" src="http://cloudspring.com/files/2012/08/5.6.-My-Account.jpg" alt="" width="204" height="186" /></a></td><td
valign="top" width="384"> <a
href="http://cloudspring.com/?attachment_id=2275" rel="attachment wp-att-2275"><img
class="alignnone size-full wp-image-2275" src="http://cloudspring.com/files/2012/08/5.7.-Sec.Cred_.jpg" alt="" width="204" height="186" /></a></td></tr></tbody></table><ul><li>In the “Access Credentials”, you will find your “Access Key ID” and (after you click “Show”) your “Secret Access Key”. Now copy these into your WordPress CDN configuration.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2307" rel="attachment wp-att-2307"><img
class="alignnone size-full wp-image-2307" src="http://cloudspring.com/files/2012/08/5.9.Config.Access-e1345990940361.jpg" alt="" width="600" height="326" /></a></p><ul><li>Click on “Create distribution”, and if your credentials are right, you will see this notice:</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2306" rel="attachment wp-att-2306"><img
class="alignnone size-full wp-image-2306" src="http://cloudspring.com/files/2012/08/5.10.CreateDist.jpg" alt="" width="425" height="35" /></a></p><ul><li>You will now see a new hostname filled in, which looks something like:</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2305" rel="attachment wp-att-2305"><img
class="alignnone size-full wp-image-2305" src="http://cloudspring.com/files/2012/08/5.11.CFCNAME.jpg" alt="" width="274" height="35" /></a></p><ul><li>Wait till your CloudFront distribution is deployed, which can be verified in the AWS Management Console at Amazon, in the CloudFront section.</li></ul><table
border="0" cellspacing="0" cellpadding="0"><tbody><tr><td
valign="top" width="396"> <a
href="http://cloudspring.com/?attachment_id=2281" rel="attachment wp-att-2281"><img
class="alignnone size-full wp-image-2281" src="http://cloudspring.com/files/2012/08/5.1.-AWS-Mgt-Console.jpg" alt="" width="224" height="197" /></a></td><td
valign="top" width="379"><a
href="http://cloudspring.com/?attachment_id=2303" rel="attachment wp-att-2303"><img
class="alignnone size-full wp-image-2303" src="http://cloudspring.com/files/2012/08/5.13.-Select-CF.jpg" alt="" width="204" height="186" /></a></td></tr><tr><td
valign="top" width="396"> <a
href="http://cloudspring.com/?attachment_id=2302" rel="attachment wp-att-2302"><img
class="alignnone size-full wp-image-2302" src="http://cloudspring.com/files/2012/08/5.14a-Inprogress.jpg" alt="" width="302" height="36" /></a></td><td
valign="top" width="379"> <a
href="http://cloudspring.com/?attachment_id=2301" rel="attachment wp-att-2301"><img
class="alignnone size-full wp-image-2301" src="http://cloudspring.com/files/2012/08/5.14b-Deployed.jpg" alt="" width="302" height="36" /></a></td></tr><tr><td
valign="top" width="396">While “InProgress” you will have to wait.</td><td
valign="top" width="379">Once you see this, you’re good to go.</td></tr></tbody></table><ul><li>To make sure, use the “Test CloudFront distribution” button to test.</li><li>Your files are automatically pulled into the CloudFront CDN (this happens when your distribution is “InProgress”). After the distribution is &#8220;InProgress&#8221;, import your attachments into the media library. There’s a button on top of the CDN section to do this, called “Importing attachments into the Media Library”. Press this, and click “Start” in the pop-up that follows. After uploading is done, close it and save configuration.</li><li>To see if it’s really working, log out from WordPress and open the site again. In the source code you should see lines like:</li></ul><table
border="0" cellspacing="0" cellpadding="0"><tbody><tr><td
valign="top" width="768"> <a
href="http://cloudspring.com/?attachment_id=2318" rel="attachment wp-att-2318"><img
class="alignnone size-full wp-image-2318" src="http://cloudspring.com/files/2012/08/5.15aMinifyCSS1.jpg" alt="" width="600" height="25" /></a></td></tr><tr><td
valign="top" width="768"><em>This is your minified CSS file, loaded from CloudFront</em></td></tr><tr><td
valign="top" width="768"> <a
href="http://cloudspring.com/?attachment_id=2317" rel="attachment wp-att-2317"><img
class="alignnone size-full wp-image-2317" src="http://cloudspring.com/files/2012/08/5.15bCFImage1.jpg" alt="" width="600" height="25" /></a></td></tr><tr><td
valign="top" width="768"><em>This is an header image, loaded from CloudFront.</em></td></tr></tbody></table><h2><strong>Setting up Rackspace Cloud Files as your CDN</strong></h2><p>With W3 Total Cache you can also choose for Rackspace Cloud Files, with Akamai as your CDN provider. First, make sure you have a Rackspace Cloud account. After that, in the “General” section of W3 Total Cache, scroll to the CDN configuration, and select “Rackspace Cloud Files” as CDN Type. You can only choose for “Origin push”, which means you have to upload the files yourself (the plugin helps you in this).</p><p><a
href="http://cloudspring.com/?attachment_id=2296" rel="attachment wp-att-2296"><img
class="alignnone size-full wp-image-2296" src="http://cloudspring.com/files/2012/08/6.3.-Rackspace-CDN-type.jpg" alt="" width="589" height="251" /></a></p><p>Hit “Save all settings”, and take the following actions:</p><ul><li>Go to the CDN section, and scroll to the configuration.</li><li>Fill in your Rackspace Cloud username (which you choose when signing up).</li><li>Insert your API key. You can retrieve this by logging in at Rackspace.com into “The Rackspace Open Cloud”, and selecting “API keys” after logging in.</li></ul><table
border="0" cellspacing="0" cellpadding="0"><tbody><tr><td
valign="top" width="384"> <a
href="http://cloudspring.com/?attachment_id=2298" rel="attachment wp-att-2298"><img
class="alignnone size-full wp-image-2298" src="http://cloudspring.com/files/2012/08/6.1-Login-Rackspace.jpg" alt="" width="216" height="126" /></a></td><td
valign="top" width="384"> <a
href="http://cloudspring.com/?attachment_id=2295" rel="attachment wp-att-2295"><img
class="alignnone size-full wp-image-2295" src="http://cloudspring.com/files/2012/08/6.4.-API-keys.jpg" alt="" width="197" height="184" /></a></td></tr></tbody></table><ul><li>If you haven’t got an API key already, make a new one. Click on “Show Key”, and copy it.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2294" rel="attachment wp-att-2294"><img
class="alignnone size-full wp-image-2294" src="http://cloudspring.com/files/2012/08/6.5.-Show-key.jpg" alt="" width="443" height="35" /></a></p><ul><li>Now go back to your WordPress installation, and insert the API key into your CDN configuration API key field.</li><li>Keep the location to “US” (you can change this to UK, but it doesn’t matter).</li><li>Fill in a container name (should only be a unique name in your account), and click on “Create container”. If you did it well, you will see this:</li><li>To be sure, click on “Test Cloud Files upload, and make sure you pass the test.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2292" rel="attachment wp-att-2292"><img
class="alignnone size-full wp-image-2292" src="http://cloudspring.com/files/2012/08/6.7.-Test-passed.jpg" alt="" width="450" height="38" /></a></p><ul><li>Hit the “Save all settings button”.</li><li>Now scroll to the top, and you see a whole bunch of notices.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2291" rel="attachment wp-att-2291"><img
class="alignnone size-full wp-image-2291" src="http://cloudspring.com/files/2012/08/6.8.-CDN-notices-e1345991608794.jpg" alt="" width="600" height="95" /></a></p><ul><li>You basically have to click them all, starting with “Export the media library”, than uploading all your files, and empty both the page cache and minify cache.</li><li>That’s it! The plugin already made sure the CDN function is turned on for your files. And to make sure it’s working, check again after you log out of WordPress, and look for something like this in the source code:</li></ul><table
border="0" cellspacing="0" cellpadding="0"><tbody><tr><td
valign="top" width="768"> <a
href="http://cloudspring.com/?attachment_id=2320" rel="attachment wp-att-2320"><img
class="alignnone size-full wp-image-2320" src="http://cloudspring.com/files/2012/08/6.9.-CDN-CSS1.jpg" alt="" width="600" height="50" /></a></td></tr><tr><td
valign="top" width="768"><em>Your minified CSS file loaded from Rackspace Cloud Files</em></td></tr><tr><td
valign="top" width="768"> <a
href="http://cloudspring.com/?attachment_id=2319" rel="attachment wp-att-2319"><img
class="alignnone size-full wp-image-2319" src="http://cloudspring.com/files/2012/08/6.10.-CDN-image1.jpg" alt="" width="600" height="25" /></a></td></tr><tr><td
valign="top" width="768"><em>Your image loaded from Rackspace Cloud Files</em></td></tr></tbody></table><ul><li>You can also always login into your “Files” at your Rackspace Cloud account, and open your container.</li></ul><p><a
href="http://cloudspring.com/?attachment_id=2321" rel="attachment wp-att-2321"><img
class="alignnone size-full wp-image-2321" src="http://cloudspring.com/files/2012/08/6.11.-Rackspace-container1.jpg" alt="" width="600" height="60" /></a></p><h2><strong>Conclusion</strong></h2><p>As you can see, setting up a CDN for your WordPress blog is fairly simple. W3 Total Cache makes it very easy and fast, and as a result your site can load much faster.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/speed-up-your-wordpress-site-with-a-cdn/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>3 of the Best WordPress Plugins to Make Your Site Mobile-Friendly</title><link>http://www.sitepoint.com/wordpress-mobile-plugins/</link> <comments>http://www.sitepoint.com/wordpress-mobile-plugins/#comments</comments> <pubDate>Sun, 12 Aug 2012 00:48:37 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[Mobile Tutorials & Articles]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://blogs.sitepoint.com/?p=36620</guid> <description><![CDATA[Craig reviews three of the best WordPress plugins which help you create mobile versions of your website.]]></description> <content:encoded><![CDATA[<p></p><p>The mobile web is growing exponentially. If your website doesn&#8217;t support mobile phones and tablets now, you can guarantee it&#8217;ll become increasingly important over the coming years.</p><p>But what if you own one of the 13 million sites running on WordPress? I recently required a plugin which:</p><ol><li>worked on WordPress 3.1</li><li>could be used without registration</li><li>could be installed on a development server</li><li>offered mobile device detection as well as custom themes</li><li>wasn&#8217;t a system which simply forwarded users to an online mobilization service.</li></ol><p>Surprisingly, there are very few plugins which match this criteria. Fortunately, I found 3 good options which could help you mobilize your website.</p><h2 style="clear:both">1. <a
href="http://wordpress.org/extend/plugins/wp-mobile-detector/">WP Mobile Detector</a></h2><p><img
src="http://blogs.sitepointstatic.com/images/tech/508-wordpress-mobile-plugins-detector.jpg" width="300" height="188" alt="WP Mobile Detector" class="imgright" /></p><p>WP Mobile Detector from <a
href="http://websitez.com/wordpress-mobile/">Websitez.com</a> provides a simple way to adapt your site for mobiles in a couple of clicks. Unlike other plugins which target a handful of popular gadgets, WP Mobile Detector supports more than 5,000 web-enabled phones, smartphones, tablets and small-screen devices. The other features are no less impressive:<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><ul><li>9 mobile themes are included</li><li>content is automatically formatted and images are resized for the target device</li><li>WordPress widgets are supported</li><li>multilingual sites can be created</li><li>the plugin records access statistics to help you identify traffic from basic and advanced mobiles.</li></ul><p>The <a
href="http://wordpress.org/extend/plugins/wp-mobile-detector/">free version of WP Mobile Detector</a> is available from <a
href="http://wordpress.org/extend/plugins/wp-mobile-detector/">WordPress.org</a>. A professional edition featuring a real-time interactive theme editor is available from <a
href="http://websitez.com/wordpress-mobile/">Websitez.com</a>. Prices start from $49.95.</p><h2 style="clear:both">2. <a
href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/">WordPress Mobile Pack</a></h2><p><img
src="http://blogs.sitepointstatic.com/images/tech/508-wordpress-mobile-plugins-pack.jpg" width="240" height="483" alt="WordPress Mobile Pack" class="imgright" /></p><p>The WordPress Mobile Pack is a comprehensive plugin which gives fine-grained control over your mobile website. The most popular devices can be identified by user agent or domain mapping. A single elegant theme is provided although it&#8217;s available in four different color schemes.</p><p>The WordPress Mobile Pack is a great plugin, although I suspect some people may be overwhelmed by the array of options distributed across several pages. Now and again, I also found it switched me to mobile view while using the administration panels.</p><p>The free <a
href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/">WordPress Mobile Pack</a> is available from <a
href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/">WordPress.org</a>.</p><h2 style="clear:both">3. <a
href="http://wordpress.org/extend/plugins/mobilepress/">MobilePress</a></h2><p><img
src="http://blogs.sitepointstatic.com/images/tech/508-wordpress-mobile-plugins-press.jpg" width="240" height="360" alt="WordPress MobilePress" class="imgright" /></p><p>Finally, we have MobilePress. Although WordPress.org reports it&#8217;s compatible up to version 2.8.6, I didn&#8217;t have any trouble installing and running it in v3.1.</p><p>MobilePress is the simplest plugin here and provides few options. However, it&#8217;s one of the easiest to use and test since you can force your site into mobile view rather than using a real mobile device or domain mapping.</p><p>Two mobile themes are provided although I couldn&#8217;t see much difference between them? Fortunately, help is provided for developers who want to create their own alternatives.</p><p>MobilePress is developed by <a
href="http://aduity.com/" class="broken_link">Aduity</a>, a company providing advertising solutions for mobile phones. You don&#8217;t need to use that feature but it&#8217;s available should you require it.</p><p>The free <a
href="http://wordpress.org/extend/plugins/mobilepress/">MobilePress plugin</a> is available from <a
href="http://wordpress.org/extend/plugins/mobilepress/">WordPress.org</a> and <a
href="http://mobilepress.co.za/">mobilepress.co.za</a>.</p><p>Have you discovered better WordPress mobile plugins? All comments welcome.</p><p>If you enjoyed reading this post, you&#8217;ll love <a
href="https://learnable.com/">Learnable</a>; the place to learn fresh skills and techniques from the masters. Members get instant access to all of SitePoint&#8217;s ebooks and interactive online courses, like <a
href="https://learnable.com/courses/the-beginners-guide-to-web-design-with-wordpress-120">The Beginner&#8217;s Guide to Web Design with WordPress</a>.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/wordpress-mobile-plugins/feed/</wfw:commentRss> <slash:comments>19</slash:comments> </item> <item><title>Get Tweeting and win a Kindle Fire at Web Directions Code!</title><link>http://www.sitepoint.com/get-tweeting-and-win-a-kindle-fire-at-web-directions-code/</link> <comments>http://www.sitepoint.com/get-tweeting-and-win-a-kindle-fire-at-web-directions-code/#comments</comments> <pubDate>Tue, 22 May 2012 03:40:52 +0000</pubDate> <dc:creator>Tom Museth</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[Community]]></category> <category><![CDATA[CSS3]]></category> <category><![CDATA[Design]]></category> <category><![CDATA[HTML5 Tutorials & Articles]]></category> <category><![CDATA[twitter]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=54794</guid> <description><![CDATA[At SitePoint we live and breathe web tech &#8230; and we love our ebooks. Combining these two passions is a challenge we relish, whether we&#8217;re releasing an all-encompassing guide to the world of WordPress (like The WordPress Anthology), an analysis of cutting-edge design approaches (say, The Principles of Beautiful Web Design) or an introduction to [...]]]></description> <content:encoded><![CDATA[<p></p><p>At SitePoint we live and breathe web tech &#8230; and we love our ebooks. Combining these two passions is a challenge we relish, whether we&#8217;re releasing an all-encompassing guide to the world of WordPress (like <em>The WordPress Anthology</em>), an analysis of cutting-edge design approaches (say, <em>The Principles of Beautiful Web Design</em>) or an introduction to the latest web development standards and methods (for instance, <em>HTML5 &amp; CSS3 For the Real World</em>).</p><p>Which is why we decided we ought to share these passions with our treasured SitePoint community &#8211; especially those of you who are attending the bound-to-be-awesome Web Directions Code conference, taking place in Melbourne on Wednesday, May 23 and Thursday, May 24. We&#8217;re sending a whole bunch of SitePoint staffers along to this two-day festival of all things JavaScript and HTML5 (check out the <a
title="Web Directions Code" href="http://code12melb.webdirections.org/" target="_blank">program</a>) where we&#8217;ll be attending excellent talks from the likes of Max Wheeler, Ryan Seddon and Rob Hawkes, to name a few. But our crew are also going to be hoping you&#8217;ll hook up with them and enter our SitePoint Twitaway Competition! Check out the details on the <a
title="SitePoint Twitaway Competition" href="http://www.sitepoint.com/wdc/" target="_blank">Twitaway Competition page</a>.</p><p>Here&#8217;s how it works.</p><ul><li>When you&#8217;re at the conference, look out for a SitePoint staffer (you can find us wandering around in our T-shirts, probably armed to the teeth with books, mugs and other SitePoint gear we&#8217;re itching to give away). Who&#8217;ll be there? Louis, Tom, Di, Alex, Harley and Ole. We&#8217;re waiting to meet you.</li><li>Grab one of us &#8230; but be gentle.</li><li>Take a photo of yourself with said SitePointer.</li><li>Send a unique, funny tweet, with your photo and the hashtag <strong>#lovesitepoint</strong>.</li><li>That&#8217;s it &#8230; unless, of course, you want to stick around and have a chat with us!</li></ul><p>This will put you in the running for our great giveaway: a Kindle Fire, which we&#8217;ll hand over to the winner on the Thursday afternoon, and happily load up with a whole bunch of SitePoint ebooks.</p><p>But wait &#8230; &#8216;cos there&#8217;s more. Everyone who sends a tweet with a photo and the <strong>#lovesitepoint</strong> hashtag will win an ebook anyway. Why? Well, because you deserve it. And we want you to be awesome developers &#8230; something we hope we can give you a hand with when you choose one ebook from the following: <em>The WordPress Anthology</em>, <em>The Principles of Beautiful Web Design</em>, or <em>HTML5 &amp; CSS3 For the Real World</em>.</p><p>The details are all on the <a
title="SitePoint Twitaway Competition" href="http://www.sitepoint.com/wdc/" target="_blank">promotion page</a>. All you have to do is get to Web Directions Code, hunt us down and get tweeting!</p><p>&nbsp;</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/get-tweeting-and-win-a-kindle-fire-at-web-directions-code/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>SitePoint Podcast #155: Conferences and CodePoet at South By Southwest</title><link>http://www.sitepoint.com/podcast-155-conferences-and-codepoet-at-south-by-southwest/</link> <comments>http://www.sitepoint.com/podcast-155-conferences-and-codepoet-at-south-by-southwest/#comments</comments> <pubDate>Fri, 23 Mar 2012 18:13:47 +0000</pubDate> <dc:creator>Louis Simoneau</dc:creator> <category><![CDATA[Podcast]]></category> <category><![CDATA[CodePoet]]></category> <category><![CDATA[Conferences]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=52999</guid> <description><![CDATA[Episode 155 of The SitePoint Podcast is now available! This week Kevin Dees (@kevindees) has two more interviews for us from South By South West. He interviews firstly Christopher Schmitt (@teleject) and Ari Styles (@ari4nne) of e4h.tv on conferences, and then Evan Soloman (@evansolomon) who works for Automatic as a Growth Engineer on WordPress.com and specifically CodePoet [...]]]></description> <content:encoded><![CDATA[<p></p><div><p>Episode 155 of The SitePoint Podcast is now available! This week Kevin Dees (<a
href="http://twitter.com/kevindees">@kevindees</a>) has two more interviews for us from South By South West. He interviews firstly Christopher Schmitt (<a
href="http://twitter.com/teleject">@teleject</a>) and Ari Styles (<a
href="http://twitter.com/ari4nne">@ari4nne</a>) of <a
href="http://e4h.tv/">e4h.tv</a> on conferences, and then Evan Soloman (<a
href="http://twitter.com/evansolomon">@evansolomon</a>) who works for Automatic as a Growth Engineer on WordPress.com and specifically CodePoet too.</p><h2>Listen in Your Browser</h2><p>Play this episode directly in your browser &#8212; just click the orange “play” button below:</p><h2>Download this Episode</h2><p>You can download this episode as a standalone MP3 file. Here’s the link:</p><ul><li><a
href="http://media.libsyn.com/media/sitepoint/sitepointpodcast155.mp3">SitePoint Podcast #155: Conferences and CodePoet at South By Southwest</a> (MP3, 31:58, 30.7MB)</li></ul><h2>Subscribe to the Podcast</h2><p>The SitePoint Podcast is on iTunes! <a
href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=296180681&amp;s=155441">Add the SitePoint Podcast to your iTunes player</a>. Or, if you don’t use iTunes, you can <a
href="http://www.sitepoint.com/blogs/?feed=podcast">subscribe to the feed directly</a>.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h2>Episode Summary</h2><p>Kevin, Christopher and Ari cover conferencing including the different ways of running conferences, the benefits of those different ways and how to get the most from conferences. Kevin then talks with Evan about his work as a Growth Engineer at Automatic, and specifically the new development work taking place on CodePoet and how that will work for people who build websites for people with WordPress.</p><p>Browse the full list of links referenced in the show at <a
href="http://delicious.com/sitepointpodcast/155">http://delicious.com/sitepointpodcast/155</a>.</p><h2>Interview Transcript</h2><p><strong>Kevin:</strong> Hi and welcome to the SitePoint Podcast. I’m Kevin Dees and today I have two interviews for you recorded remotely from South by Southwest. In the first of these interviews I speak with Ari Styles and Christopher Schmitt from Environments for Humans about web conferences and how you can get involved.</p><p>So I’m here with Christopher Schmitt and Ari Styles, hello guys.</p><p><strong>Ari:</strong> Hey!</p><p><strong>Christopher:</strong> Hey, Kevin, how’s it going?</p><p><strong>Kevin:</strong> So this is my first like remote interview, so pardon the audio quality if it’s not the best.</p><p><strong>Ari:</strong> He’s taken it on the road.</p><p><strong>Kevin:</strong> Yes. But I’m making up for that with some awesome guests to talk with me about conferences.</p><p><strong>Christopher:</strong> Where, where are they?</p><p><strong>Ari:</strong> (Laughs)</p><p><strong>Kevin:</strong> They just left, dang it, end of interview.</p><p><strong>Ari:</strong> Sorry, you’re going to have to talk to us I guess.</p><p><strong>Kevin:</strong> Well, since I’m stuck with you guys, you both do online conferences, the Environments for Humans, and you also do a conference called the In Control, and that’s in Orlando; it’s been in Orlando for how long now?</p><p><strong>Christopher:</strong> This is our third year, but we have been doing In Control for four years, the first year was in Cincinnati, and then for the last three years been in Orlando. Well, actually we go with &#8212; we work with AIGA, which is a graphic design professional network in America, and so we work with the AIGA Orlando chapter to have a web design kind of program not only for the community in Orlando but nationwide, actually they’re international, in fact, a lot of international attendees come in for the content. And In Control, it’s a two-day conference, it’s one track, we have keynotes on both days, but what makes In Control a little bit different is that Ari and I we really want to make sure that attendees get takeaways, they’re actionable, and that we actually kind of do something mean to our speakers who aren’t doing keynotes, and that makes you have sessions that are about an hour and forty minutes long.</p><p><strong>Kevin:</strong> Right. Which is very unique to the conference world.</p><p><strong>Christopher:</strong> Yeah, there’s workshops for sure, they’ve got three six hours or maybe longer, you add more days to them, and sessions are sometimes an hour, but they’re not really an hour, they’re usually like forty minutes and then some Q&amp;A, and then if you have some technical difficulties with the speaker setting it up and getting everything ready. Or sometimes now some sessions are like thirty minutes long, which is okay and works for TED, but TED conferences they usually like work hard, speakers beforehand, so they get a nice compact presentation.</p><p><strong>Kevin:</strong> So you’re giving the speakers at your conference a little bit &#8212; you give them a target topic but you give them more free reign over what they’re going to talk about.</p><p><strong>Christopher:</strong> Yeah, like we don’t tell them what to do, we just said okay, and, in fact, it’s a huge undertaking; as a speaker I speak at conferences too, and I’ve been doing it for a long time, and I just know how much of an undertaking it is, how much time it takes, and we wouldn’t have them speaking if we didn’t trust that they didn’t know what to do.</p><p><strong>Ari:</strong> Right, right.</p><p><strong>Christopher:</strong> And not every speaker can do an hour and forty minute talk, so it’s like it’s very &#8212; we take our time with due diligence to find speakers that we think people will want to listen to but also can handle that load. And the reason why we want to do &#8212; find the speakers speakers is because we want to make sure speakers don’t feel rushed getting through a slide deck, you know, some speakers take a lot of time with slide decks, put a lot of content in them, and speakers sometimes feel rushed like oh, man, I got five minutes left, ten minutes left to go; twenty slides, let’s go, man, so they have to narrow it down. So we make sure they don’t feel rushed, and I think that’s &#8211;</p><p><strong>Ari:</strong> And that a question gets answered.</p><p><strong>Christopher:</strong> Yeah, yeah. And also like with the longer time we hope that the audience feels that, well, we have an hour to go, I should be okay asking a question here. And so we really want In Control to facilitate more speaker and attendee time together through &#8211;</p><p><strong>Kevin:</strong> So that collaboration, right, that interaction you want to bring that out in the conferences.</p><p><strong>Christopher:</strong> Exactly.</p><p><strong>Kevin:</strong> I think that’s really great. The irony of this interview is kind of that we’re at South by Southwest.</p><p><strong>Ari:</strong> Yes.</p><p><strong>Kevin:</strong> So, you know we’re in the &#8212; I guess the Hampton Inn, right, so you can hear a little bit of background noise coming in here; I think that’s really fun. But I wanted to ask you, Ari, a little bit &#8212; you’ve been involved in South by Southwest before, right, and that’s kind of what pulled you into this conference thing. With that experience in mind, when we’re talking about this conference thing, not to make like specifically about Environments for Humans or the In Control conference, which are awesome, and I think that’s really great, but I also want to bring out like the importance for people to think about coming to a conference, right, because you know I have a few friends that they’re just now starting to come into the conference scene, like they’re thinking about it, they’re finally attending and seeing results. What would you say having the background from South by and now doing your own conference with Chris, like what are some of the things that people need to think about when they’re doing the conference themselves?</p><p><strong>Ari:</strong> I would say that, well, to begin with South by sends its employees to different conferences, so that’s kind of what made me start thinking about it, and then Christopher speaks at a lot of conferences, so we came away with a lot of opinions about conferences and that sort of thing. I think it’s so important for people building the Web right now to think about what they want to get out of a conference because there’s, you know, you can come at it from a continuing education approach, you can come at it from an inspiration approach, you know there’s lots of different ways to look at it. We are really focused on practical takeaways from everything that we’re doing, you know, I have this fantasy that people will come to our conference and come away with a bullet list of things they can do, to get, to make their job easier and be able to go home earlier and have a life, you know, everybody kind of has their reason for what they do and that’s mine. And so because of that we really emphasize the practical takeaways, but in some cases people need that inspiration, you know, they need to go to kind of a more inspiration based conference to get the motivation to just keep on keeping on. And so &#8211;</p><p><strong>Kevin:</strong> You hear a lot of that here at South by and others, like In Control I heard a lot of that as well, where people were like this just gave me that spark I needed to keep going, you know.</p><p><strong>Ari:</strong> Right, because for so many people it’s an uphill battle, and I completely understand that coming from the non ideal world.</p><p><strong>Kevin:</strong> And it’s constantly changing so fast, right, I mean you’ve experienced that, you’ve written, Chris, you wrote the CSS Cookbook, right?</p><p><strong>Christopher:</strong> Hmm-mm, Cookbook, and then also HTML5 Cookbook, and I’ve been into the Web since ’93, so it’s changed a little bit.</p><p><strong>Kevin:</strong> Just a little bit, a smidgeon.</p><p><strong>Christopher:</strong> Just a little bit. So it’s constantly changing, and with things changing so fast you have to &#8212; it’s like somewhere you can be an apprentice, if you want to use that example if you don’t mind, you learn a craft, learn a trade, you can’t just do the same thing for forty years, you know, fifty years, whatever, so you have to constantly be learning how to do things better and faster too. I mean it’s amazing things like GitHub and Git, like actually GitHub.</p><p><strong>Kevin:</strong> What are those services just to clarify?</p><p><strong>Christopher:</strong> Well, Git is a service that allows for version control, and GitHub is built on Git but allows a social dynamic to source code, so they say it’s kind of a clearinghouse for people’s code, so when they want they want to open source code they put it out there on GitHub, people can do a search against it and they can find like probably a code solution to almost any problem that they’ve come across. And it’s constantly updated with open source volunteers and programmers who just update stuff for projects, bug fixes, and I think jQuery’s now all on GitHub, Paul Irish, all his stuff that he does is on GitHub.</p><p><strong>Kevin:</strong> HTML5 Boilerplate, iI think CakePHP, so there’s a lot of really good projects out there, and that goes with the dynamic that the Web is rapidly changing.</p><p><strong>Christopher:</strong> Exactly.</p><p><strong>Kevin:</strong> And conferences help you to keep up with those things and build interaction, not just with the code itself but with the people behind it, and I think that’s something really valuable. Could you guys maybe talk about some of the people that you’ve brought into your conferences and some of the ways that those people interact with the people that come to the conferences that pay for the tickets and, you know, how that helps that community and helps people learn, could you talk a little bit about that.</p><p><strong>Ari:</strong> Well, we see a different dynamic because we’re doing two different, very different types of conferences, you know, it’s almost like we’re developing two different products really.</p><p><strong>Kevin:</strong> Talk a little bit about the online side.</p><p><strong>Ari:</strong> Well, the online conferences we focus on one topic for an entire day, so it’s seven or eight hours of material on one topic, be it a coding language like CSS or a framework like jQuery or a content management system, that sort of thing.</p><p><strong>Kevin:</strong> And this is your summit, these are your summits?</p><p><strong>Ari:</strong> Yes, these are the online summits that we do. So we use Adobe Connect for that, people tune in, they can watch the speakers speak, see the slides, there’s a chat room built in, plus we usually have something like a Twitter backchannel, and people who attend will also have the chance to review recordings later, and they also get copies of the slides. So it’s really &#8212; it’s a huge boon, continuing Ed type of a thing.</p><p><strong>Kevin:</strong> Do they interact with the speakers while in the chats and everything?</p><p><strong>Ari:</strong> Yes, they can ask questions direct to the speaker.</p><p><strong>Kevin:</strong> So just like a real conference, right.</p><p><strong>Ari:</strong> Right, exactly. In fact, we actually see people ask more questions in the online format, and I’m not sure if it’s that little anonymity factor that makes people feel comfortable. We warn speakers expect a lot of questions because that’s what usually happens, people feel comfortable doing that.</p><p><strong>Christopher:</strong> And we’re totally okay with that, we really want that to happen.</p><p><strong>Ari:</strong> Yes, yes.</p><p><strong>Christopher:</strong> That’s like one of the benefits I think that we try to install into the online conferences is that you want those questions to be asked, because if you’re asking the question chances are someone else wants that questioned answered.</p><p><strong>Ari:</strong> Needs that.</p><p><strong>Christopher:</strong> And doesn’t even know that they want it answered.</p><p><strong>Ari:</strong> Right. And that’s also one of the great things about it being a live event too, it’s hard to pull together a live event, but we feel like it’s so worth it, I mean people can go back and watch the recordings, and we do have a handful of people that buy the ticket and just watch the recordings later because they’re too busy that day or something goes on.</p><p><strong>Kevin:</strong> Which is a powerful point, right, which is even if you don’t have time in the day, maybe you can’t travel, right, so the online gives you the chance if you can’t travel, you don’t have that budget, you can at least step into the conference world in a digital aspect. And if you can’t even do that then you have the recordings, right, and then you also have your In Control which is the physical conference, and I had the privilege of attending that this year, I thought it was really great, I think the way that you lined everything up you kind of tied the first day really well together, you talked about HTML and CSS and JavaScript, then you wrapped it up at the end of it, here’s your workflow, here’s how you’re going to use all the tools.</p><p><strong>Ari:</strong> It’s more strategic as it goes on.</p><p><strong>Kevin:</strong> The application level is very high, I thought it was really great, and then the second day you got into sort of the meta things, you know, the inspirational factor; I thought it was really well put together.</p><p><strong>Christopher:</strong> Yeah, we try to create that as much as possible because speaking at other conferences where there’s multi-tracks &#8211;</p><p><strong>Kevin:</strong> Like South by.</p><p><strong>Christopher:</strong> Which is a totally different beast from like ten years ago, but even smaller conferences where like you don’t want the HTML5 or HTML session to be on the last day, last talk, right, that’s a foundation for the Web, you want that at the very beginning so they can build on that, and that’s how we approach In Control is that once we give you something it’s for the foundation of the next thing we add onto it, and so we go HTML, CSS, jQuery and then the Web Workflow the first day just to give you those tools for building it the first day, and then the second day we’re like okay let’s look at some more kind of soft science but strategic tools that you might use. So this year we did a lot of content strategy, mobile design.</p><p><strong>Ari:</strong> Hmm-mm, because of that progression we get people that are kind of like what I like to think of as advanced beginners where they’re wanting to learn more about the craft, they’re already doing this but they want to have a beginning to end feeling about their craft. We also have a lot of people that are managers that are trying to understand all the things that they’re having to take care of, and then the online summits because we’re focusing on one topic at a time we tend to see a lot more intermediate to advanced attendees. And we’re occasionally blown away by just how much the attendees know, and the speakers are sometimes too with some of the questions that they get.</p><p><strong>Kevin:</strong> It’s a communal thing, right, that’s what the conference &#8212; I think that’s at the root of it; if there’s anything you take away it’s that at the heart of a conference it’s about community, right, there’s no other real reason to meet together like that, you can learn beyond a shadow of a doubt something like what people are talking about in books, online, but the real reason you come to a conference is to network, to meet people and build those connections, because those connections are going to be your portfolio for the future, and they’re going to be able to plug you into new ideas, also inspire you.</p><p><strong>Christopher:</strong> It’s about people.</p><p><strong>Ari:</strong> Right.</p><p><strong>Kevin:</strong> Exactly.</p><p><strong>Ari:</strong> Pull you out of the cave (laughs).</p><p><strong>Kevin:</strong> I like one of the things you said as well which was you have managers come, right, these conferences in general, generalizing here, aren’t just for the Web nerds, they’re for anybody in the space who wants to know a little bit more, who wants to be a little bit more connected, and I think what you guys are doing is great, I think you guys have so much more to share that you probably could. So, to wrap things up just a little bit, I know we’ve already talked a little bit about In Control, if you guys could maybe talk about yourselves, where people can find you and contact you about learning a little more about these things.</p><p><strong>Ari:</strong> Oh, sure, sure, sure. Well, my name is Ari Styles, once again, and our site <a
href="http://e4h.tv/">e4h.tv</a>, and I’m on Twitter, I always like draw it out for people because it’s <a
href="http://twitter.com/ari4e">@ari4e</a>, because my name was taken so I had to improvise there.</p><p><strong>Kevin:</strong> The number 4, right?</p><p><strong>Ari:</strong> Right, the number 4, right, the number 4, so that’s me.</p><p><strong>Christopher:</strong> I’m Christopher Schmitt, and I’m on &#8212; <a
href="http://christopherSchmitt.com/">christopherSchmitt.com</a> is my blog, which I neglect to my own peril, but I’m also on Twitter, I ‘twit’ a lot at <a
href="http://twitter.com/teleject">@teleject</a>; I’m, again, e4h.tv, and also <a
href="http://incontrolconference.com/">incontrolconference.com</a> is where you find our conferences, face-to-face conferences. Also our big conferences for online are <a
href="http://csssummit.com and/" class="broken_link">csssummit.com and</a> also <a
href="http://accessibilitysummit.com/">accessibilitysummit.com</a>.</p><p><strong>Kevin:</strong> That’s the one I really &#8212; I haven’t spent enough time with Accessibility, and I really need to check that one out sometime soon.</p><p><strong>Ari:</strong> Yeah, that one is really popular, we’ve had some in the past that are UXsummit, CSSsummit, accessibility, jQuery, and we also have a JavaScript one that’s more about optimizing your code as well. So all of those have been really successful in the past, they’re going to repeat this year, and then we also always try a few new ones.</p><p><strong>Christopher:</strong> Yeah, try to fold in a couple extra ones every year.</p><p><strong>Ari:</strong> See what sticks.</p><p><strong>Kevin:</strong> That’s awesome. Well, guys, thank you so much, and if you didn’t take anything away take this away, go to conferences, network, meet people and be inspired.</p><p><strong>Ari:</strong> That’s right, be open to new experiences.</p><p><strong>Christopher:</strong> Definitely.</p><p><strong>Kevin:</strong> Awesome, thanks guys.</p><p><strong>Christopher:</strong> Thanks, Kevin.</p><p><strong>Ari:</strong> Thank you.</p><p><strong>Kevin:</strong> In this next interview I speak with Evan Solomon from WordPress about the new CodePoet and what WordPress has planned.</p><p>So I’m here with Evan Solomon from WordPress, welcome Mr. Evan.</p><p><strong>Evan:</strong> Thank you.</p><p><strong>Kevin:</strong> Or is it Mr. Solomon, which one?</p><p><strong>Evan:</strong> Ah, I don’t really like Mr. at all. I guess Mr. Evan sounds a little more not like Mr.</p><p><strong>Kevin:</strong> (Laughs), so you have been at WordPress for a year, right?</p><p><strong>Evan:</strong> I’ve been at Automatic for a year as of tomorrow, and I’ve been building stuff at WordPress for a few years before that, but just joined Automatic about a year ago.</p><p><strong>Kevin:</strong> That’s awesome. You have an interesting story about how you came to WordPress because it started, in a way, here in South by Southwest, right?</p><p><strong>Evan:</strong> It did, actually I got my offer letter to join the company from Matt, Matt sent it to me from the WordPress party at South by Southwest 2011, and then here I am at South by Southwest 2012, so it’s a nice kind of circular anniversary I guess.</p><p><strong>Kevin:</strong> Yeah, that’s awesome. Well, welcome to the SitePoint Podcast, and just to give some people context about what you do, what has been your experience and what have you done at WordPress so far up to this point, and then we’ll get into what you’re working on now, which I’m really excited to talk about.</p><p><strong>Evan:</strong> Sure. So I’ve been a WordPress user for four or five year, kind of grew into doing more and more of it. My title at Automatic is Growth Engineer, and so I work partially on <a
href="http://wordpress.com/">wordpress.com</a> a lot around kind of experimentation analytics, so doing things like AB testing and just kind of instrumenting user behavior across the site and working with a few teams to do that.</p><p><strong>Kevin:</strong> Is this in the plugins and on the website?</p><p><strong>Evan:</strong> So this is primarily on <a
href="http://wordpress.com/">wordpress.com</a> for users just within .com, so we build features as plugins, and we’ve released a lot, and I want to do more of what we’ve built at open source plugins, but the stuff we’re doing on .com is just kind of within the user environment of wordpress.com.</p><p><strong>Kevin:</strong> That’s very cool. So when you first started you came in as a PHP developer or what were you doing in that?</p><p><strong>Evan:</strong> My title is Growth Engineer, like I said, which is sort of a weird title, I do a mix; the way I explain it is a little bit of kind of programming, just traditional writing, plugins and things, a little bit of data analysis, so when we run experiments or tests or get data back helping us kind of parse it and makes sense of it, and then a little bit of marketing, so talking to customers and kind of building out visions for products and things like that.</p><p><strong>Kevin:</strong> That’s very cool. With all this stuff that you’ve been doing with WordPress you’re now moving into this thing that has to do with poetry, or code as poetry, as you say. So what is this product, what’s it called and what are you excited about, like why are you excited about this product?</p><p><strong>Evan:</strong> So WordPress has a tagline, just code as poetry, and we sort of built a brand around that called CodePoet, and there’s been a couple iterations of the site there, it’s <a
href="http://codepoet.com/">codepoet.com</a>, and essentially it’s been a directory of WordPress developers, so if you want to find someone to build a plugin, build a theme, we help you do it, but it was primarily focused on a relatively small number of people doing really big projects. And what we’re doing now is trying to sort of for version 3 expand that, we want to make it a resource for everyone building on WordPress, there’s thousands or ten of thousands of people doing that, and we think we can help them in a few ways where Automatic has a big advantage.</p><p><strong>Kevin:</strong> Would this be something people had to pay for, is this like a premium thing; I don’t know how much you can really get into right now, but it’s a question people might be interested in that sort of thing.</p><p><strong>Evan:</strong> Sure, so we haven’t launched yet, it won’t be like a paid membership or anything, it’ll be open, it’ll be I guess in a sense limited; we want it to be focused on people who are building WordPress sites for other people, so consultants, freelancers, things like that.</p><p><strong>Kevin:</strong> How do you verify that kind of information?</p><p><strong>Evan:</strong> You know at this point we’re just not really worrying too much about it, it’s sort of like we’re focusing on all our communication about it to those people, and if other people slip in, I mean there’s nothing secret, we tend to open source everything we do, so there’s very few secrets, but that’s kind of who we’re focused on building stuff for.</p><p><strong>Kevin:</strong> Okay, so it’s a community driven thing.</p><p><strong>Evan:</strong> Community driven thing, there’s no membership fee or anything like that, we want to give away &#8212; we have a lot of stuff we want to give away for free. At some point we very well may have premium features or sell plugins or things like that, but there’s not going to be like an upfront fee to join or anything like that.</p><p><strong>Kevin:</strong> Is there anything out there, I’m not aware of anything currently as far as &#8212; I know there’s things like the Stack Overflow, jobs boards and that kind of thing; how is that different from things that already exist in the space?</p><p><strong>Evan:</strong> Yeah. So there’s a ton of stuff in the space, there’s a Stack Exchange site, a Reddit site, WPTavern, tons of just WordPress specific educational sites, it’s a really fragmented market. And the way we want to be different is we’re going to focus really just on the ways that Automatic being a large scale, probably the biggest WordPress company in the world, that we can kind of actually have an advantage with that scale. So we’re not going to be a client service company, we’re not going to build websites for people, we want to take kind of the expertise and experience and the ways that our scale can be leveraged and use that to give back and add value to people building sites with WordPress. Not just because it’s a good thing to do, which it is hopefully, but we, you know, WordPress growing and more people building on it is good for us, it’s good for them, it’s a very kind of mutually beneficial kind of thing.</p><p><strong>Kevin:</strong> Okay. And so what marketplaces, you said freelancers and developers, that kind of thing, is this for .org stuff too or is this specifically for like .com marketplace?</p><p><strong>Evan:</strong> It’s specifically for .org.</p><p><strong>Kevin:</strong> Okay, .org.</p><p><strong>Evan:</strong> I guess in theory you could use .com for this sort of thing, but by and large the people building sites for other people are using .org, they’re freelancers and consultants and agencies and things like that, and 99.something percent of those are .org. So we won’t limit anyone from .com, but we’re mostly focused on people using WordPress open source to do this.</p><p><strong>Kevin:</strong> What was the inspiration like? What made you guys say hey we need to create this new product, this thing for people to come in and sign up? You said that you did see there was kind of a fragmentation all over the place, there was nothing really specific, and then also I guess this is a different .com, right, so now why not just jobs.wordpress.com or something to that effect?</p><p><strong>Evan:</strong> So I mean we have <a
href="http://automatic.com/jobs/" class="broken_link">automatic.com/jobs</a> for hiring, so we’re perfectly happy to hire people into wordpress.com, and we sort of had a job directory, or consultant directory; the need that we saw, there’s the fragmentation, which is a problem, we hear tons of questions: how do I get started developing themes, how do I find a resource for this? And it’s hard to point people to a hundred different places, and we know from surveys and data and talking to people that there are tens of thousands of jobs created by WordPress from developers to hosting to content creators, all kinds of stuff. And we only had a way really to work with a very, very small portion of those, and it’s in our best interest for WordPress to grow and for those people to get better and recruit more people, and we think that there are some places we can provide value, expertise from technical things we can make. And so that was really the confluence is that there’s a huge opportunity with a number of people, a place we thought we could provide value, and a market we just weren’t really in, we didn’t have a good way to communicate with yet. They’re the people who we should have a relationship with as kind of a huge WordPress company in the space, but we had just sort of gone all around the edges and they were being served, or are being served, in a sort of fragmented way that we think we can at least help. We don’t want to replace Stack Exchange, we don’t want to replace Reddit, we just want to augment it and make it easier.</p><p><strong>Kevin:</strong> So you chose the new domain, right, I’m correct in thinking this is a whole &#8212; you chose that because you want this to be its own beast in a way.</p><p><strong>Evan:</strong> So, <a
href="http://codepoet.com/">codepoet.com</a> actually until a couple days ago had a directory, that’s now on <a
href="http://directory.codepoet.com/">directory.codepoet.com</a>, but it’s separate from wordpress.com, it’s separate from <a
href="http://automatic.com/">automatic.com</a>, because it has its own brand, we don’t want to confuse it with thinking that we’re trying to make people use wordpress.com or trying to hire them at Automatic, we’re not trying to change the businesses as they exist, we’re trying to build a resource for those people. So the branding is very much around that idea of clarifying who it’s for and what we’re trying to do.</p><p><strong>Kevin:</strong> That’s awesome. So you have Code Poetry, and you have people coming in, but you mentioned something else in the midst of everything which was you said learning. What do you mean by learning, are there going to be tutorial linkups on this site as well; I mean what’s going on in that space?</p><p><strong>Evan:</strong> So one of the first products that we’re thinking about building and that we’re prototyping right now are &#8212; we’re calling them eBooks, but essentially short form one-two-three page content. It’s easier to think about it in terms of where we think the market is sort of broken is that if someone asks you let’s say how do I start building themes, a very fundamental theme thing you should learn about if you’re a WordPress developer, you point them to the codex, which has great resources, you can point them to the code obviously, which is great, you can point them to the various Q&amp;A sites, the educational sites, but all of a sudden I’ve talked about five places, and I don’t know that any one of those is the right place to start. And WordPress is growing so quickly that there’s such a wide disparity in experience, so people who have been doing it for years, like you and like me, and there are people who have been doing it for four months and they just don’t know a whole lot yet, and they don’t have the experience. And so what we want to do is make a clear path to success for the most important things in WordPress, build a theme, build a plugin, understand child themes, set up hosting, deal with clients, how do you negotiate contracts, what should be thinking about in terms of maintenance.</p><p><strong>Kevin:</strong> So there’s more than just the code layer and the design layer, there’s also the business layer as well.</p><p><strong>Evan:</strong> We want to help people who are running businesses on WordPress, and that is everything from code to design to business to &#8212; there’s lots of things that go into that, it’s not just how do you write better code, that’s part of it, but it’s really how can we use the scale of Automatic to help you grow your business, help you grow WordPress which helps us.</p><p><strong>Kevin:</strong> Right. The ultimate question after learning all about Code Poetry, or CodePoet in your case, or code as poetry, the ultimate goal in this is for people to get connected, to learn things, and then to actually implement. What would be the way that someone would come into this network and use it to help themselves, would they put links to their websites on there, like what’s the interaction like from the programmer to the potential client, or whoever they may be interacting with in that space?</p><p><strong>Evan:</strong> So at some point there may be some sort of a directory or public phasing thing, but really that’s a longer term possible idea for us. The way it can be implemented we hope is that we want to make it like an obvious choice for a place to help you learn about running a business on WordPress. An analogy that I’ve used is I use TurboTax to do my taxes, I’m not a tax professional, it’s not something where I’m an expert, but it is a go-to resource for me; when I need help with that I go to TurboTax, it turns out to be once a year because that’s how taxes work. We think CodePoet can act in some ways like that, you’re running a WordPress business, we’re not trying to create a site where you’re necessarily going to be on it everyday, it’s not going to be Reddit or Stack Exchange, although we might implement some of the things we can learn from there, but we want to make it an obvious place to start, and an obvious place that if you’re not using it to grow your WordPress business you’re doing it wrong essentially. And that’s our goal is to make a resource that focuses on the places we can be helpful, let other people handle the places we can’t, and just add as much value as possible to the stuff that we think we have some expertise in.</p><p><strong>Kevin:</strong> Right. For those that are looking at this or hearing about it and they may have something similar to you, what is &#8212; is there a way for them to plug into this so they don’t lose their market share, their business to WordPress in the space, or do you feel like this is different enough to where people don’t really have to worry about it so much? But even if they don’t need to worry about it like how could they use this so it doesn’t break their business model?</p><p><strong>Evan:</strong> Yeah, sure, no. I think the places where there’s good resources available we would rather use that, point people to that, have you contribute to CodePoet, whatever might work. We don’t want to reinvent the wheel, like I said, we’re not &#8212; we want to focus on the relatively small number of areas, depending on how you define the world of WordPress, where we can have the most leverage possible. We have a pretty small team, you know, we’re not going to try and reinvent every WordPress site out there; if you have a great, let’s say just for example tutorial for setting up a local development environment, we’ll link to that, or you can contribute to CodePoet, or whatever might work.</p><p><strong>Kevin:</strong> And that’s relevant in the documentation of WordPress as well, there are many articles that you’ll go to and at the bottom of the page there will be a list of related links; I know securing WordPress has a lot of links on that, and other more specific things, but the security side I think has a really good list of links.</p><p><strong>Evan:</strong> Yeah. No, I mean it’s core to obviously WordPress’ philosophy of kind of open source and freely sharing information, and from out point of view it’s just not &#8212; and not to insult content farms too much, but that’s not where we think we can spend our time most productively is just figuring out what content is popular and writing it ourselves, it’s not a good use of our team. We want to use the expertise we have that’s unique, we want to provide the technical solutions we can that are unique, and we want to point you in the right direction. We’re not going to become a WordPress university that’s going to teach you everything you ever want to do, we want to get you started on a good path, give you like the high-level important points, maybe something to take away, and then if there’s more point you to the resources that are right for specific things.</p><p><strong>Kevin:</strong> Exactly. Basically generate good questions for people, help them create better questions instead of &#8212; like I know when I first got into WordPress I had trouble installing it, and so I had all these questions but they weren’t really the right questions, they weren’t &#8212; like I didn’t think about okay I’m trying to install WordPress on Windows with IIS, and so I was like, ah, WordPress is broken, no, I’m using IIS and not Apache which the tutorial I was looking at was going through, so &#8211;</p><p><strong>Evan:</strong> And I think the reason for that is that the information is so fragmented that everywhere you go assumes you’ve read something else, how to tell what often.</p><p><strong>Kevin:</strong> Or you’re using a specific set of hardware.</p><p><strong>Evan:</strong> Exactly. And so what we want is &#8212; there’s a real gap we think in the starting point, whether it’s starting with WordPress or starting with a specific part of WordPress, there’s not a good place to start, economical source you might say, and that’s what we think we can help and aggregate all this expertise, all this existing content, technical solutions we can build to help stuff, all that can flow into giving you a good place to start and to always come back to when you need new information, new resources to run your business on WordPress.</p><p><strong>Kevin:</strong> Yeah. CodePoet sounds awesome, like it sounds like it’s totally open like you can totally come in, right.</p><p><strong>Evan:</strong> I hope so. I think it’s good market, I know WordPress is growing fast.</p><p><strong>Kevin:</strong> Right. So it’s not a commercial solution, you don’t have to pay for CodePoet, right, so anybody can come in and learn and get involved.</p><p><strong>Evan:</strong> Yep.</p><p><strong>Kevin:</strong> I think that is awesome. I think the fact that you’re trying to bridge the new people to the veterans and everything, I think that’s awesome, and I think that’s really, really great. So like the stuff you’re doing totally two thumbs up from me.</p><p><strong>Evan:</strong> Thank you.</p><p><strong>Kevin:</strong> I’m sure people listening to this will be super happy to hear that WordPress is kind of building this out; hopefully folks will link to this. What should they do to share this with the community and get what you’re doing out there? I know the launch date isn’t quite here yet, maybe you can talk a little bit about that too so people can kind of work off of this, because this is up and coming, this hasn’t happened yet.</p><p><strong>Evan:</strong> That’s right, yeah, so we’re planning on launching in the next month or two let’s say, right now if you go to codepoet.com you can drop your email address in, and what we’re really focused on is getting feedback from customers, so we’re building a little bit of these sort of ideas that we have, and we want to get that out to people as soon as possible, get feedback, launch something, iterate on it. So to get involved I guess, or to kind of know what’s going on, signup, if you’re a web developer, consultant, freelancer building WordPress sites, tell other friends or do those things, we’re not focused on end user stuff right now, I don’t think we will be. It’s really focused on people building sites for other people, and we want feedback, we want people who are going to be able to look at stuff we’re working on and say this is useful or this would be more useful, and that’s really our goal right now.</p><p><strong>Kevin:</strong> That’s awesome. So I can’t wait to see this, and thanks so much for coming on, Evan.</p><p><strong>Evan:</strong> Thanks for having me.</p><p><strong>Kevin:</strong> Yeah.</p><p><strong>Evan:</strong> Cheers.</p><p><strong>Kevin:</strong> And thanks for listening to the SitePoint Podcast. If you have any questions or thoughts about today’s show please get in touch. You can find SitePoint on Twitter <a
href="http://twitter.com/sitepointdotcom">@sitepointdotcom</a>, that’s sitepointd-o-t-c-o-m. You can find me on Twitter at <a
href="http://twitter.com/kevindees">@kevindees</a>, and if you’d like to leave comments about today’s show check out the podcast at <a
href="http://sitepoint.com/podcast/">sitepoint.com/podcast</a>; you can subscribe to the show there as well. This episode of the SitePoint Podcast was produced by Karn Broad, and I’m Kevin Dees, bye for now.</p><p>Theme music by <a
href="http://www.belikewater.ca/">Mike Mella</a>.</p><p>Thanks for listening! Feel free to let us know how we’re doing, or to continue the discussion, using the comments field below.</p></div><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/podcast-155-conferences-and-codepoet-at-south-by-southwest/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <enclosure
url="http://media.libsyn.com/media/sitepoint/sitepointpodcast155.mp3" length="30693169" type="audio/mpeg" /> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 42/81 queries in 0.323 seconds using memcached
Object Caching 2008/2219 objects using memcached

Served from: www.sitepoint.com @ 2013-05-13 13:33:07 --