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

<channel>
	<title>Daniel Hanly</title>
	<atom:link href="http://www.danielhanly.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danielhanly.com</link>
	<description>Web Designer / App Enthusiast</description>
	<lastBuildDate>Wed, 20 Mar 2013 11:28:06 +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>Including Custom Fonts in iOS</title>
		<link>http://www.danielhanly.com/blog/tutorial/including-custom-fonts-in-ios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=including-custom-fonts-in-ios</link>
		<comments>http://www.danielhanly.com/blog/tutorial/including-custom-fonts-in-ios/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 11:25:52 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[custom fonts]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[x-code]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=555</guid>
		<description><![CDATA[In the past, there was only the facility to include fonts already bundled with your device. Now however, Apple have responded to feedback and given access to developers to add new custom fonts to their application. Custom fonts can obviously provide a much higher level of customisation in your app! Custom fonts are something that, [...]]]></description>
				<content:encoded><![CDATA[<p>In the past, there was only the facility to include fonts already bundled with your device. Now however, Apple have responded to feedback and given access to developers to add new custom fonts to their application. Custom fonts can obviously provide a much higher level of customisation in your app!</p>
<p>Custom fonts are something that, as a designer, we cherish. Often, we&#8217;ll have to dig deeply to find the best font for our designs.</p>
<h2>Acquiring the Custom Font</h2>
<p>The best format for the custom font is TTF</p>
<p>If you can&#8217;t get a TTF variation of your custom font, there&#8217;s a number of font converters that&#8217;ll do the job for you. I&#8217;ve used<a title="Free Online Font Converter" href="http://www.freefontconverter.com/" target="_blank"> Free Online Font Converter </a>in the past with some success.</p>
<p>So you need to make sure you&#8217;ve added your TTF font file to your project by clicking <strong>File &gt;&gt; Add Files&#8230;</strong></p>
<div id="attachment_558" class="wp-caption aligncenter" style="width: 240px"><a href="http://www.danielhanly.com/wp-content/uploads/2013/03/Screen-Shot-2013-03-20-at-10.56.45.png" rel="lightbox[555]" title="Custom Fonts in Project Directory"><img class="size-full wp-image-558" title="Custom Fonts in Project Directory" alt="Custom Fonts in Project Directory" src="http://www.danielhanly.com/wp-content/uploads/2013/03/Screen-Shot-2013-03-20-at-10.56.45.png" width="230" height="59" /></a><p class="wp-caption-text">The font added to my project. I&#8217;ve created a Fonts group to keep them organised</p></div>
<h2>Adding the Custom Fonts Array to Your PLIST</h2>
<p>You need to &#8216;activate&#8217; the custom fonts within your Info.plist file.</p>
<p>The key you need to add is called &#8216;<strong>Fonts provided by application</strong>&#8216;, or &#8216;<strong>UIAppFonts</strong>&#8216; if you&#8217;re viewing via Source Code.</p>
<p>Add the full name of the custom fonts file including the extension to this plist.</p>
<div id="attachment_559" class="wp-caption aligncenter" style="width: 494px"><a href="http://www.danielhanly.com/wp-content/uploads/2013/03/Screen-Shot-2013-03-20-at-11.00.00.png" rel="lightbox[555]" title="Adding the Custom Fonts in the Info.plist - PLIST view"><img class="size-full wp-image-559" title="Adding the Custom Fonts in the Info.plist - PLIST view" alt="Adding the Custom Fonts in the Info.plist - PLIST view" src="http://www.danielhanly.com/wp-content/uploads/2013/03/Screen-Shot-2013-03-20-at-11.00.00.png" width="484" height="57" /></a><p class="wp-caption-text">Adding the Custom Fonts in the Info.plist &#8211; PLIST view</p></div>
<p>&nbsp;</p>
<div id="attachment_560" class="wp-caption aligncenter" style="width: 317px"><a href="http://www.danielhanly.com/wp-content/uploads/2013/03/Screen-Shot-2013-03-20-at-11.03.28.png" rel="lightbox[555]" title="Adding the Custom Fonts in the Info.plist - Source Code view"><img class="size-full wp-image-560" title="Adding the Custom Fonts in the Info.plist - Source Code view" alt="Adding the Custom Fonts in the Info.plist - Source Code view" src="http://www.danielhanly.com/wp-content/uploads/2013/03/Screen-Shot-2013-03-20-at-11.03.28.png" width="307" height="55" /></a><p class="wp-caption-text">Adding the Custom Fonts in the Info.plist &#8211; Source Code view</p></div>
<h2>Including the Custom Font via UIFont</h2>
<p>You&#8217;re now able to use the custom font as a UIFont in the same way that you&#8217;d use any of the system fonts.</p><pre class="crayon-plain-tag">[UIFont fontWithName:@"OpenDyslexic-Regular" size:16.0];</pre><p>It&#8217;s great that Apple are finally allowing developers to add additional customisations to their apps, it&#8217;s about time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/including-custom-fonts-in-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Tools &amp; Skills: My Top 5</title>
		<link>http://www.danielhanly.com/blog/tutorial/wordpress-tools-skills-my-top-5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-tools-skills-my-top-5</link>
		<comments>http://www.danielhanly.com/blog/tutorial/wordpress-tools-skills-my-top-5/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 13:03:47 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[skills]]></category>
		<category><![CDATA[structure]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=532</guid>
		<description><![CDATA[WordPress can be a complex Content Management System, not necessarily in it&#8217;s size or function; but seeing a completed and fully customised WordPress can bear little resemblance to the original &#8216;vanilla&#8217; installation. This is because WordPress can be customised to such a degree that it matches pretty much any requirement exactly; so as a Web [...]]]></description>
				<content:encoded><![CDATA[<p>WordPress can be a complex Content Management System, not necessarily in it&#8217;s size or function; but seeing a completed and fully customised WordPress can bear little resemblance to the original &#8216;vanilla&#8217; installation.</p>
<p>This is because WordPress can be customised to such a degree that it matches pretty much any requirement exactly; so as a Web Developer, it makes WordPress the perfect CMS. I can hone my skills in a specific CMS, to attain expert status, and I can then use that CMS to serve a huge range of clients.</p>
<p>There are certain tools and skills that I rely heavily on when developing with WordPress, and here I hope to catalogue them for future use, and even for your use throughout your WordPress development.</p>
<h2>5: Organisation of Functions and Theme Directory</h2>
<p>Arguably the most important aspect of development for large WordPress installations.</p>
<p>Usually, when I&#8217;m creating a theme, my first step will be organisation of my theme&#8217;s directory. I&#8217;ll create an &#8216;images&#8217; folder to hold all the static, theme images (like company logo, or header banner, or static background), then a &#8216;scripts&#8217; file where I&#8217;ll do the majority of my customisation, and lastly a plugins directory; not plugins in the WordPress sense, but things like JQuery plugins, external WordPress libraries and things of that nature.</p>
<p>This allows me to stay focused from a development point of view. Keeping my assets organised is a big part of my theme development.</p>
<p>I&#8217;m a big fan of code cleanliness and my problem with the functions.php file is that it&#8217;s just a single file. Sometimes there will be some quite drastic modifications to the internal functions of your template that you&#8217;ll find your functions.php file reading in at upwards of 1000 lines. This simply won&#8217;t do.</p>
<p>In the &#8216;scripts&#8217; directory that I mentioned previously, I&#8217;ll create different files for different purposes. For example, if I&#8217;m working with custom post types and taxonomies, I&#8217;ll create a php file specifically for that purpose. I may, by the end of the development journey, have between 4 and 10 of these files in the scripts directory.</p>
<p>My functions.php file will then only hold &#8216;include&#8217; statements for the specific script files.</p>
<p>The biggest advantage of this, is that if I have to amend a specific function, I&#8217;ll know exactly where it is, instead of trawling through hundreds of lines and 50 or so separate functions to find the one I want.</p>
<h2>4: Visual Form Builder</h2>
<div class="wp-caption aligncenter" style="width: 690px"><img class="" alt="Visual Form Builder for WordPress" src="http://s-plugins.wordpress.org/visual-form-builder/assets/screenshot-2.png?rev=598594" width="680" height="370" /><p class="wp-caption-text">Visual Form Builder Screenshot</p></div>
<p><a title="WordPress Plugin Directory: Visual Form Builder" href="http://wordpress.org/extend/plugins/visual-form-builder/" target="_blank">Visual Form Builder</a> is exactly what it says on the tin, it allows you to visually build forms for quick and easy deployment across your WordPress site. It almost serves as a storage and data collection tool for your installation.</p>
<p>It has a number of features that sets it apart from other form building plugins such as allowing you to select different validation methods on a field by field basis.</p>
<p>One of the main &#8216;winning&#8217; features of Visual Form Builder is it&#8217;s ability to store submissions and allow easy export. This means that contact forms are able to keep a record of submissions, and the CSV export tool allows future analysis of the data.</p>
<p><a title="Visual Form Builder for WordPress" href="http://wordpress.org/extend/plugins/visual-form-builder/" target="_blank">Download Visual Form Builder for WordPress</a></p>
<h2>3: Toolbox Theme</h2>
<div class="wp-caption aligncenter" style="width: 310px"><img class="" alt="Toolbox Theme for WordPress" src="http://wp-themes.com/wp-content/themes/toolbox/screenshot.png" width="300" height="225" /><p class="wp-caption-text">Toolbox Screenshot</p></div>
<p>Depending entirely on the complexity of your WordPress installation, it may make more sense to develop onto a base theme by creating a <a title="WordPress Codex for Child Themes" href="http://codex.wordpress.org/Child_Themes" target="_blank">Child Theme</a>. More often than not, I&#8217;ll do this based on the Toolbox theme.</p>
<p>This theme provides a semantic baseplate for your own theme development. Usually, with development, whenever I need to customise an aspect of the theme, I&#8217;ll copy the file into my child theme and make minor modifications, keeping the semantic mark-up intact.</p>
<p>I always find that themes I&#8217;ve developed with the Toolbox parent always fare a little better with regard to SEO. I can develop themes much faster with the aid of Toolbox.</p>
<p><a title="Toolbox Theme for WordPress" href="http://wordpress.org/extend/themes/toolbox" target="_blank">Download the Toolbox Theme for WordPress</a></p>
<h2>2: WordPress SEO by Yoast</h2>
<p>I&#8217;ve been using this plugin for a while now and it&#8217;s so useful and beneficial for websites! Comparing two websites of similar scale, one with and one without the plugin produces some stark results; you&#8217;ll see a noted boost in the arrival of visitors from search engines almost immediately.</p>
<p>It&#8217;s fully equipped to take you through global website settings (permalink settings, sitemap configuration, registering with Google/Bing/Alexa webmaster tools), right down to allowing you to customise your content on an individual post basis.</p>
<p>I&#8217;ve written a post previously about writing content that specifically satisfies the WordPress SEO plugin by Yoast, called <a title="Yoast for Writing SEO Friendly Content" href="http://www.danielhanly.com/blog/tutorial/yoast-writing-seo-friendly-content/">Yoast for Writing SEO Friendly Content</a>.</p>
<h2>1: Gizburdt&#8217;s WordPress Cuztom Helper</h2>
<p>The WordPress Cuztom Helper has been a firm addition to my WordPress arsenal for a while now.</p>
<p>Essentially, it streamlines the registration of Custom Post Types, right down to taxonomies and meta boxes in a simple, easy to use manner.</p>
<p>The below code is to register a custom post type without the use of the helper:</p><pre class="crayon-plain-tag">register_post_type( 'product',
		array(
			'labels' =&gt; array(
				'name' =&gt; __( 'Products' ),
				'singular_name' =&gt; __( 'Product' )
			),
		'public' =&gt; true,
		'has_archive' =&gt; true,
		)
	);
register_taxonomy(
		'category',
		'product',
		array(
			'label' =&gt; __( 'Category' ),
			'rewrite' =&gt; array( 'slug' =&gt; 'category' ),
		)
	);</pre><p>Now with the Helper:</p><pre class="crayon-plain-tag">$product = new Cuztom_Post_Type( 'Product', array(
    'has_archive' =&gt; true,
));
$product-&gt;add_taxonomy('Category', array(
    'rewrite' =&gt; array( 'slug' =&gt; 'category' )
));</pre><p>Obviously, this streamlines the process quite a bit, but the magic really comes into effect when you try and add Meta Boxes from the range of custom types that Gizburdt has developed.</p>
<p>You can download and use the helper, and even contribute to it&#8217;s development on it&#8217;s <a title="WordPress Cuztom Helper" href="https://github.com/Gizburdt/Wordpress-Cuztom-Helper">Github page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/wordpress-tools-skills-my-top-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Custom Delegate</title>
		<link>http://www.danielhanly.com/blog/tutorial/creating-a-custom-delegate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-a-custom-delegate</link>
		<comments>http://www.danielhanly.com/blog/tutorial/creating-a-custom-delegate/#comments</comments>
		<pubDate>Mon, 24 Dec 2012 14:39:01 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=526</guid>
		<description><![CDATA[Custom Delegates are one of the best ways of communicating amongst a series of classes in iOS. I always forget how to add custom delegates correctly, so here I go documenting it for future reference. I hope this guide is able to help others as well as myself. Setting up your Custom Delegate Here&#8217;s the [...]]]></description>
				<content:encoded><![CDATA[<p>Custom Delegates are one of the best ways of communicating amongst a series of classes in iOS. I always forget how to add custom delegates correctly, so here I go documenting it for future reference. I hope this guide is able to help others as well as myself.</p>
<h2>Setting up your Custom Delegate</h2>
<p>Here&#8217;s the scenario. I want my UITableViewCell subclass to effectively communicate with it&#8217;s containing UITableViewController. The intention is that a button within the DocumentTableCell will trigger a modal view controller on UITableViewController, as the DocumentTableCell doesn&#8217;t have access to this method. This is a perfect scenario for the use of a delegate.</p>
<p>First of all, I need to define my delegate method within my DocumentTableCell.h:</p><pre class="crayon-plain-tag">@protocol DocumentTypeDelegate
- (void)buttonAction;
@end</pre><p>I also need to create a custom delegate property on this class which makes a reference to the protocol name I just defined:</p><pre class="crayon-plain-tag">@property (nonatomic, weak) id &lt;DocumentTypeDelegate&gt; delegate;</pre><p></p>
<h2>Using Your Custom Delegate Method</h2>
<p>Once you&#8217;ve successfully defined your method, you can add the actual method function to any view controller you want.</p>
<p>In your UITableViewController, ensure you&#8217;ve imported your DocumentTableCell.h to the page and also, give the interface declaration the name of your protocol like so:</p><pre class="crayon-plain-tag">#import "DocumentTableCell.h"

@interface DocumentTypeViewController : UITableViewController &lt;DocumentTypeDelegate&gt;{</pre><p>Now, in the corresponding .m file, you need to ensure the delegate is linked up properly. In my case, where I&#8217;ve used the DocumentTableCell, I&#8217;ve added a reference to the custom delegate property:</p><pre class="crayon-plain-tag">DocumentTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[DocumentTableCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}

cell.delegate = self; //this is the important line</pre><p>Now all I have to do is write the actual function for the method within my uitableviewcontroller implementation file.</p><pre class="crayon-plain-tag">- (void)buttonAction{
    NSLog(@"Success");
}</pre><p></p>
<h2>Summary</h2>
<p>This is an effective method of controlling communication between several classes. It keeps it all neatly kept and organised.</p>
<p>This isn&#8217;t the only method of communicating between classes, there are many different ways that serve different situations &#8211; I personally tend to use this one a lot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/creating-a-custom-delegate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Delegate error with ARC</title>
		<link>http://www.danielhanly.com/blog/discoveries/custom-delegate-error-with-arc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=custom-delegate-error-with-arc</link>
		<comments>http://www.danielhanly.com/blog/discoveries/custom-delegate-error-with-arc/#comments</comments>
		<pubDate>Mon, 05 Nov 2012 10:43:30 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[arc]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[properties]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=520</guid>
		<description><![CDATA[When Apple introduced ARC (automatic reference counting), it meant a great deal of change for much of our existing code. New errors seem to crop up every time we convert an older project across to the new format. This particular error concerned some custom delegates that we&#8217;d set up to handle communication between a UIPopOverController [...]]]></description>
				<content:encoded><![CDATA[<p>When Apple introduced ARC (automatic reference counting), it meant a great deal of change for much of our existing code. New errors seem to crop up every time we convert an older project across to the new format. This particular error concerned some custom delegates that we&#8217;d set up to handle communication between a UIPopOverController (with it&#8217;s child UITableViewController) and a UIViewController.</p><pre class="crayon-plain-tag">Existing ivar '_delegate' for property 'delegate' with assign attribute must be __unsafe_unretained</pre><p>It&#8217;s a quick fix, but it took some digging.</p>
<h2>Fixing your Delegate</h2>
<p>I had mine declared as a property:</p><pre class="crayon-plain-tag">@property (nonatomic, assign) id&lt;SettingsChoiceDelegate&gt;delegate;</pre><p>Note the &#8216;nonatomic, assign&#8217; properties.</p>
<p>In order to replicate this functionality (as close as) in ARC, you should use &#8216;strong&#8217; to make the error miraculously disappear:</p><pre class="crayon-plain-tag">@property (nonatomic, strong) id&lt;SettingsChoiceDelegate&gt;delegate;</pre><p>Credit for solution: <a href="http://stackoverflow.com/questions/7205064/custom-delegate-not-working">Stack Overflow</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/discoveries/custom-delegate-error-with-arc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>404 on Permalinks for Custom Post Types</title>
		<link>http://www.danielhanly.com/blog/tutorial/404-on-permalinks-for-custom-post-types/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=404-on-permalinks-for-custom-post-types</link>
		<comments>http://www.danielhanly.com/blog/tutorial/404-on-permalinks-for-custom-post-types/#comments</comments>
		<pubDate>Tue, 23 Oct 2012 09:28:41 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[custom post types]]></category>
		<category><![CDATA[permalinks]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=517</guid>
		<description><![CDATA[404&#8242;s on Custom Post Type permalinks gets me every time! So, this is gonna be a short one to fix, but saves hours in time Googling solutions. Go to your permalink settings after you&#8217;ve created your custom post type. Choose Default as your choice. Save. Choose your previous setting as your choice. Save. Done. Why [...]]]></description>
				<content:encoded><![CDATA[<p>404&#8242;s on Custom Post Type permalinks gets me every time! So, this is gonna be a short one to fix, but saves hours in time Googling solutions.</p>
<p>Go to your permalink settings after you&#8217;ve created your custom post type.</p>
<p>Choose Default as your choice.</p>
<p>Save.</p>
<p>Choose your previous setting as your choice.</p>
<p>Save.</p>
<p>Done.</p>
<h2>Why does this work?</h2>
<p>Basically, whenever a permalink setting is selected it saves to the database. By deselecting your option and re-selecting it in this way, you effectively flush the rewrite rules.</p>
<p>There&#8217;s a function in WordPress that does this automatically &#8211; <a href="http://codex.wordpress.org/Function_Reference/flush_rewrite_rules">flush_rewrite_rules()</a> &#8211; however you don&#8217;t really want to do this on every page load &#8211; if you&#8217;re getting 404&#8242;s on Permalinks to Custom Post Types then you&#8217;ll only need to do it once.</p>
<p>Think of it as a hard-refresh for your permalinks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/404-on-permalinks-for-custom-post-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theme Options Disappearing After Migration?</title>
		<link>http://www.danielhanly.com/blog/discoveries/theme-options-disappearing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=theme-options-disappearing</link>
		<comments>http://www.danielhanly.com/blog/discoveries/theme-options-disappearing/#comments</comments>
		<pubDate>Wed, 19 Sep 2012 16:47:36 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Discoveries]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=512</guid>
		<description><![CDATA[My Theme Options decided to no longer work after upload and migration to a live server. I could access the Theme Options page, but I couldn&#8217;t reference any Theme Options from my scripts or even from within the Theme Options page &#8211; i.e. it wouldn&#8217;t save. I searched for ages to find a solution, digging [...]]]></description>
				<content:encoded><![CDATA[<p>My Theme Options decided to no longer work after upload and migration to a live server.</p>
<p>I could access the Theme Options page, but I couldn&#8217;t reference any Theme Options from my scripts or even from within the Theme Options page &#8211; i.e. it wouldn&#8217;t save.</p>
<p>I searched for ages to find a solution, digging through my htaccess files and my WordPress Network settings (in my case it was set up as a network of sites), I even tried looking through my server settings and switched to a new server.</p>
<h2>I Found A Solution to the Theme Options Debacle</h2>
<p>I have to credit <strong><a href="http://profiles.wordpress.org/users/sayontan/">Sayontan Sinha</a> </strong>on the WordPress forums for this fix.</p>
<p>Basically, Sayontan explained that when Theme Options are entered to the database, they aren&#8217;t encoded with the usual key=&gt;value style approach, but more of a type:length:value.</p>
<p>This length variable was the crux of my problem.</p>
<p>Let&#8217;s take an example from my database:</p><pre class="crayon-plain-tag">s:9:"headerurl";s:58:"http://path/to/old/url/wp-content/uploads/2012/08/logo.png";</pre><p>s:9: is the length of the string &#8220;headerurl&#8221;</p>
<p>s:58: is the length of the string &#8220;http://path/to/old/url/wp-content/uploads/2012/08/logo.png&#8221;</p>
<p>The issue is that when I migrated my database, I did a search for &#8220;path/to/old/url&#8221; and replaced it with &#8220;brand/spanking/new/url&#8221;</p>
<p>Now, my problem is that &#8220;http://path/to/old/url/wp-content/uploads/2012/08/logo.png&#8221; has less characters than &#8220;http://brand/spanking/new/url/wp-content/uploads/2012/08/logo.png&#8221;</p>
<p>Essentially, what I&#8217;m doing is telling my theme that &#8220;http://brand/spanking/new/url/wp-content/uploads/2012/08/logo.png&#8221; has 58 characters, but it doesn&#8217;t, it has 65 characters.</p>
<p>Because ALL theme options of a particular type are stored together, any error causes the whole set of data to become corrupted.</p>
<p>I had to manually update my database so:</p><pre class="crayon-plain-tag">s:9:"headerurl";s:65:"http://brand/spanking/new/url/wp-content/uploads/2012/08/logo.png";</pre><p>Fixed!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/discoveries/theme-options-disappearing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ER Browser &#8211; Web Browser for Visual Impairment</title>
		<link>http://www.danielhanly.com/work/er-browser/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=er-browser</link>
		<comments>http://www.danielhanly.com/work/er-browser/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 17:01:00 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[dyslexia]]></category>
		<category><![CDATA[easy read]]></category>
		<category><![CDATA[er browser]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[web browser]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=502</guid>
		<description><![CDATA[The ER Browser is a iPhone and iPad web-browser designed to help those with vision and reading difficuly navigate the web. You can use the ER Browser app to re-format any page you are viewing with the tap of a button which strips it down to its bare bones. ER Browser Themes The ER Browser iPhone and iPad apps come equipped [...]]]></description>
				<content:encoded><![CDATA[<p>The <strong>ER</strong> Browser is a iPhone and iPad web-browser designed to help those with vision and reading difficuly navigate the web.</p>
<p>You can use the <strong>ER</strong> Browser app to re-format any page you are viewing with the tap of a button which strips it down to its bare bones.</p>
<h2>ER Browser Themes</h2>
<p>The <strong>ER</strong> Browser iPhone and iPad apps come equipped with several themes designed specifically to benefit those with dyslexia and allows you to apply these themes directly to any page on the web. Your browsing experience is no longer limited by specific designs.</p>
<p><img class="aligncenter" title="Easy Read Theme Colours Preview" src="http://erbrowser.co.uk/img/grid.png" alt="Easy Read Theme Colours Preview" width="545" height="171" /></p>
<h2>Colour Overlay Treatment</h2>
<p>Colour overlay testing is a standard, widely accepted way of assisting those with dyslexia or Meares Irlen syndrome. Placing coloured sheets of plastic over reading material and even opticians prescribing coloured lenses has been proven to improve the reading and understanding for those with dyslexia or Meares Irlen syndrome.</p>
<p>The <strong>ER</strong> Browser allows you to emulate the colour overlay tests by instantly converting any web page to a standard, coloured output. We&#8217;ve also taken into account the contrast between background and text colours to hopefully improve reading ability.</p>
<h3>The ER Browser can be used to improve the users&#8217; reading ability on any website</h3>
<h2>User Involvement</h2>
<p>The <strong>ER</strong> Browser is an organic project. We aim to learn from and build upon any comments or features requested by our users. We&#8217;re committed to delivering a solution that is user-led, so we&#8217;d appreciate learning how we can improve your experience.</p>
<h3><a title="ER Browser" href="http://erbrowser.co.uk/">Visit the Website and Download it now!</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/work/er-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theme Options Pages in WordPress</title>
		<link>http://www.danielhanly.com/blog/tutorial/wordpress-theme-options/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-theme-options</link>
		<comments>http://www.danielhanly.com/blog/tutorial/wordpress-theme-options/#comments</comments>
		<pubDate>Fri, 17 Aug 2012 13:22:04 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[theme options]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=481</guid>
		<description><![CDATA[When developing WordPress themes, you can open a portion of your code for user-customisation on a Theme Options page. This is how it&#8217;s done. The basics of Theme Options is that you can create an options array to store a certain amount of data, then whilst developing your theme, you can account for these changes. [...]]]></description>
				<content:encoded><![CDATA[<p>When developing WordPress themes, you can open a portion of your code for user-customisation on a Theme Options page. This is how it&#8217;s done.</p>
<p>The basics of Theme Options is that you can create an options array to store a certain amount of data, then whilst developing your theme, you can account for these changes.</p>
<h2>Adding A Theme Options Menu Item</h2>
<p>On a Theme that has Theme Options available, you are able to hover over &#8216;Appearance&#8217; and see additional entries. Here&#8217;s an example:</p>
<p><a href="http://www.danielhanly.com/wp-content/uploads/2012/08/Screen-Shot-2012-08-17-at-13.03.21.png" rel="lightbox[481]" title="Screen Shot 2012-08-17 at 13.03.21"><img class="aligncenter size-full wp-image-484" title="Screen Shot 2012-08-17 at 13.03.21" src="http://www.danielhanly.com/wp-content/uploads/2012/08/Screen-Shot-2012-08-17-at-13.03.21.png" alt="" width="298" height="103" /></a></p>
<p>The menu item doesn&#8217;t necessarily have to say Theme Options; the Twenty Ten theme has two options; &#8216;Header&#8217; and &#8216;Background&#8217;.</p>
<p>The first thing that you need to do is create a &#8216;theme-options.php&#8217; in your theme directory (it can be named whatever you choose really, but I&#8217;ll be using theme-options.php thoughout).<br />
Then at the very top of your functions.php file, add this line.</p><pre class="crayon-plain-tag">require_once ( get_stylesheet_directory() . '/theme-options.php' );</pre><p>This tells your functions.php file to include whatever is in the theme-options.php file. I like to keep the theme options separate for clarity.</p>
<p>Now open theme-options.php and add this:</p><pre class="crayon-plain-tag">add_action('admin_menu', 'theme_options_add_menu_item');

function theme_options_menu_item() {
    add_theme_page('Theme Options', 'Theme Options', 'edit_theme_options', 'theme_options', 'theme_options_build_page');
}</pre><p>The basics of the above area, is creating a function to run on the &#8216;admin_menu&#8217; pre-defined function.<br />
Within this function we can add our menu item.</p>
<p>In the &#8216;add_theme_page&#8217; function the arguments are as follows:</p>
<ul>
<li>Page Title &#8211; this is the full title of the page</li>
<li>Menu Title &#8211; usually the same, but can be an abbreviated version</li>
<li>Capability &#8211; this is for administrative permissions. &#8220;edit_theme_options&#8221; means that anybody who is allowed to change theme options, can access this menu item.</li>
<li>Slug &#8211; simple, the menu slug.</li>
<li>Function &#8211; the function you wish to execute when the menu is clicked.</li>
</ul>
<p>We&#8217;ll be looking deeper into &#8216;theme_options_build_page&#8217; soon.</p>
<h2>Setting Up the Theme Options array</h2>
<p>The theme options array is the way in which your theme options are stored in the database. This impacts how Theme Options are stored, how they&#8217;re accessed on the Theme Options page and how they&#8217;re accessed through the front-end.</p>
<p>We need to add another action now, but this time we want to attach a function to the &#8216;admin_init&#8217; action &#8211; so it runs automatically when admin pages are accessed.</p><pre class="crayon-plain-tag">add_action('admin_init', 'theme_options_init');

function theme_options_init() {
    register_setting('my_options', 'my_theme_options', 'theme_options_validate');
}</pre><p>Normally, when you register a setting, you do it on an individual option by option basis. However, I prefer to create all options under an array, so I can access them all with one call if I want to.</p>
<p>In the &#8216;register_setting&#8217; function the arguments are as follows:</p>
<ul>
<li>Group Name &#8211; this is what you&#8217;re calling your options. You give them a unique name so you can make multiple groups if necessary</li>
<li>Options Name &#8211; this is the name of your option. In my case, the name of the array</li>
<li>Sanitise Function &#8211; this is a function you will create (or utilise) to prepare your data for database submission. <a title="Sanitization - Preventing Code Injection" href="http://en.wikipedia.org/wiki/Data_sanitization#Preventing_code_injection">More information on sanitisation.</a></li>
</ul>
<p>I&#8217;ve created a function to sanitise the Theme Options data.<br />
This function will be specific to whatever options you choose to make available, but I&#8217;ll add mine to the end of this post so you can see how I&#8217;ve handled it.</p>
<p>At this stage, we can access a &#8216;Theme Options&#8217; menu item and modify a &#8216;my_theme_options&#8217; array which will hold all my data.</p>
<h2>The Theme Options Form</h2>
<p>We now add a HTML form to the &#8216;theme_options_build_page&#8217; that we mentioned earlier.</p>
<p>This HTML form will allow our admin user to directly access the variables we want them to.</p><pre class="crayon-plain-tag">function theme_options_build_page() {

}</pre><p>Everything contained in the above function will be executed when our menu item &#8216;Theme Options&#8217; is pressed.</p>
<p>We can create any sort of HTML form here, though I like to keep it matching the familiar WordPress feel, so I like to use their pre-defined elements.</p><pre class="crayon-plain-tag">if (!isset($_REQUEST['settings-updated']))
    $_REQUEST['settings-updated'] = false;
?&gt;
&lt;div class="wrap"&gt;
    &lt;?php
    screen_icon();
    echo "&lt;h2&gt;" . get_current_theme() . 'Theme Options' . "&lt;/h2&gt;";
    ?&gt;

    &lt;?php if (false !== $_REQUEST['settings-updated']) : ?&gt;
        &lt;div class="updated fade"&gt;&lt;p&gt;&lt;strong&gt;&lt;?php echo 'Options saved'; ?&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;?php endif; ?&gt;

    [FORM GOES HERE]
&lt;/div&gt;</pre><p>Above is the initial setup for the form. First we need to access a variable called settings-updated which is the variable that WordPress uses to generate the neat little &#8216;Options Saved&#8217; message boxes.</p>
<p>The above code  opens a div called &#8220;wrap&#8221; which is styled by WordPress, and places into it a page title, &#8216;settings updated&#8217; div (also styled by WordPress) and your form.</p>
<p>I want to allow two changes, a &#8216;Primary Colour&#8217; and a &#8216;Header URL&#8217;.</p>
<p>Here is my form:</p><pre class="crayon-plain-tag">&lt;form method="post" action="options.php"&gt;

            &lt;?php settings_fields('my_options'); ?&gt;
            &lt;?php $options = get_option('my_theme_options'); ?&gt;

            &lt;table class="form-table"&gt;

                &lt;tr valign="top"&gt;
                    &lt;th scope="row"&gt;&lt;?php echo 'Primary Colour'; ?&gt;&lt;/th&gt;
                    &lt;td&gt;
                        &lt;input id="my_theme_options[primarycolor]" class="regular-text" type="text" name="my_theme_options[primarycolor]" value="&lt;?php esc_attr_e($options['primarycolor']); ?&gt;" /&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr valign="top"&gt;
                    &lt;th scope="row"&gt;Upload Header Logo&lt;/th&gt;
                    &lt;td&gt;
                        &lt;input id="my_theme_options[headerurl]" type="text" size="36" name="my_theme_options[headerurl]" value="&lt;?php esc_attr_e($options['headerurl']); ?&gt;" /&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
            &lt;p class="submit"&gt;
                &lt;input type="submit" class="button-primary" value="&lt;?php _e('Save Options', 'a1theme'); ?&gt;" /&gt;
            &lt;/p&gt;
        &lt;/form&gt;</pre><p>Open the form with the action &#8216;options.php&#8217; this ensures that all options are submitted to the wp-admin file &#8216;options.php&#8217; &#8211; no further action required by us. That pre-existing file handles it all.</p>
<p>All classes and formatting, I tried to emulate from WordPress&#8217; own forms, just to keep it all consistent and familiar.</p>
<p>The main lines of note are the options setting fields (below).<br />
They allow the form to connect to the database of options.</p><pre class="crayon-plain-tag">&lt;?php settings_fields('my_options'); ?&gt;
&lt;?php $options = get_option('my_theme_options'); ?&gt;</pre><p>After adding the form, you should successfully be able to access the Theme Options page, and view/edit/update the options you&#8217;ve defined (ensure you&#8217;ve added the sanitisation function at the bottom of the page to clean the output for database submission).</p>
<h2>Doing Something with our Theme Options</h2>
<p>In my header.php file, I would like to add my header image and define some additional styles, to include the primary colour option.</p>
<p>The first line I add at the top, tells the file to read the options we set up earlier. From this point we can access the variables directly.</p><pre class="crayon-plain-tag">$options = get_option('my_theme_options');</pre><p>Now, I can add some CSS styles to take advantage of the output.<br />
Underneath the wp_head(); declaration, I can add a style tag:</p><pre class="crayon-plain-tag">&lt;style&gt;
#branding{
    background:url('&lt;?php echo $options['headerurl']; ?&gt;');
}
h1, h2, h3 {
    color: &lt;?php echo $options['primarycolor']; ?&gt;;
}
&lt;/style&gt;</pre><p>I inject PHP directly into the HTML/CSS Style declaration. Now the primarycolor variable, we set earlier, affects the header tags and the branding  div on our page has a background image of the headerurl variable.</p>
<h2>Sanitisation Function</h2>
<p></p><pre class="crayon-plain-tag">function theme_options_validate($input) {

    // Say our text option must be safe text with no HTML tags
    $input['primarycolor'] = wp_filter_nohtml_kses($input['primarycolor']);
    $input['headerurl'] = wp_filter_nohtml_kses($input['headerurl']);

    return $input;
}</pre><p>Now, the user can use Theme Options to define a primary colour for the headers and add a url for an image to their header.</p>
<p>Hopefully, now you know the basics, you&#8217;ll be able to experiment and build upon it!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/wordpress-theme-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Edge: Embedding Animations in a Page</title>
		<link>http://www.danielhanly.com/blog/tutorial/adobe-edge-embedding-animations-page/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-edge-embedding-animations-page</link>
		<comments>http://www.danielhanly.com/blog/tutorial/adobe-edge-embedding-animations-page/#comments</comments>
		<pubDate>Mon, 23 Jul 2012 17:10:39 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=453</guid>
		<description><![CDATA[Adobe Edge is a brand new piece of software from Adobe, which is currently still in Preview stage. It implements many of the features I&#8217;m used to in Adobe Flash, but exports exclusively as HTML5 animation. You can download the Adobe Edge preview on the Adobe Website. Adobe has been the victim of some criticism [...]]]></description>
				<content:encoded><![CDATA[<p>Adobe Edge is a brand new piece of software from Adobe, which is currently still in Preview stage. It implements many of the features I&#8217;m used to in Adobe Flash, but exports exclusively as HTML5 animation.<br />
You can download the Adobe Edge preview on the <a href="http://labs.adobe.com/technologies/edge/">Adobe Website</a>.</p>
<p>Adobe has been the victim of some criticism lately, namely at the hands of the late Steve Jobs, who refused to support Adobe Flash on Apple&#8217;s iPhone and iPad products. This meant that Adobe had to come up with something good which allowed them to stay at the top of the food chain with regard to industry software &#8211; Adobe Edge is their answer.</p>
<p>My only issue is that Adobe Edge still a little raw (to be expected from preview level software), and there&#8217;s a distinct lack of Adobe Edge Documentation for me to gain insight from. Most of what I know of Adobe Edge is based upon self-teaching and youtube videos.</p>
<p>I&#8217;m not going to talk about creating animations in Adobe Edge, because I didn&#8217;t feel I had any trouble with that side of things; but I am going to speak about what to do after these animations have been exported.</p>
<h2>Prior to Exporting your Adobe Edge Animation</h2>
<p>Here are some guidelines I came up with to ensure your animation is ready for the web. Much of this will be automatic (I hope) in the full release of Adobe Edge, but at present, it&#8217;s a manual task.</p>
<ol>
<li>Ensure there are no spaces in any of the asset names &#8211; this prevents some browsers &#8216;missing out&#8217; some assets</li>
<li>Ensure you have named your file appropriately &#8211; again no spaces</li>
<li>Ensure you have named your composition ID &#8211; this helps when managing each animation through CSS, it prevents names like EDGE-26107024</li>
<li>Ensure you have applied a poster image to the &#8216;Down-level Stage&#8217; &#8211; this stage is what&#8217;s displayed to those without the capability to play the animation</li>
</ol>
<p><img src="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-23-at-18.05.02.png" alt="" title="Renaming Adobe Edge assets" width="218" height="303" class="aligncenter size-full wp-image-465" /></p>
<p>Ensure all these items are looked at before saving the document and you&#8217;ll have a much easier time of implementing the Adobe Edge animation.</p>
<h2>Embedding an Adobe Edge Animation</h2>
<p>Once an Adobe Edge animation has been exported, you&#8217;ll find several important files.</p>
<ul>
<li>A pre-loader file</li>
<li>An Actions File</li>
<li>An animation File</li>
<li>a HTML file</li>
<li>an Image directory</li>
<li>an includes directory</li>
</ul>
<p>The easiest way to embed an animation is by opening the html file, taking the javascript path from the head and the &#8216;stage&#8217; div from the body and copying it over to your own web-page.</p>
<p>The javascript file declares the pre-loader and the pre-loader declares all the other files, simple.</p>
<p><strong>Note: NAME YOUR STAGE ID</strong><br />
This is essential for multiple animations, with IDs that clash between the animations, you&#8217;ll find that only one of them plays at any one time.</p>
<p>Speaking of multiple animations, you&#8217;ll only ever need a single &#8216;edge_includes&#8217; directory, because </p>
<p></p><pre class="crayon-plain-tag">&lt;div id="appropriate-stage-id" class="animation-name"&gt;
&lt;/div&gt;</pre><p> </p>
<p>The animation should play provided all your paths are how Adobe Edge wants you to have your paths, but this is never the case&#8230; Read on.</p>
<h2>Inconsistent Paths</h2>
<p>I was adding my animations to a fairly large website with a strict structure. I couldn&#8217;t drop the animations in the root, as Adobe Edge had expected, so none of my assets linked.</p>
<p>I edited the Preloader and Animation file to give relative paths to the resources and updated my pre-loader declaration in my html file but this only worked for pages on this level of navigation. i.e. the animation worked on &#8216;/&#8217; but not on &#8216;/about-us/&#8217; because it was trying to read the files from &#8216;/about-us/animations/&#8217; instead of &#8216;/animations/&#8217;</p>
<p>I had to first modify my &#8216;animation_edgePreload.js&#8217; file and add a variable declaration to the &#8216;root&#8217; of my website to the top of the file.</p>
<p></p><pre class="crayon-plain-tag">var rt = '/';</pre><p> </p>
<p>At the bottom of the file, you&#8217;ll see a path location for each of the other important inclusions. I modified it as so:</p>
<p></p><pre class="crayon-plain-tag">aLoader = [
    { load: rt+"animations/edge_includes/jquery-1.7.1.min.js"},
    { load: rt+"animations/edge_includes/jquery.easing.1.3.js"},
    { load: rt+"animations/edge_includes/edge.0.1.6.min.js"},
        {test: !hasJSON, yep:rt+"animations/edge_includes/json2_min.js"},
          { load: rt+"animations/my-animation/animation_edge.js"},
          { load: rt+"animations/my-animation/animation_edgeActions.js"}];</pre><p> </p>
<p>And even closer to the bottom:</p>
<p></p><pre class="crayon-plain-tag">dlContent={
   dom: [
   {
      rect: [0,0,720,85],
      id: 'Poster',
      fill: ['rgba(0,0,0,0)',rt+'animations/my-animation/images/Poster.png'],
      type: 'image',
      tag: '<a href="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-23-at-18.05.02.png"><img src="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-23-at-18.05.02.png" alt="" title="Renaming Adobe Edge assets" width="218" height="303" class="aligncenter size-full wp-image-465" /></a>'
   }]};//simpleContent</pre><p> </p>
<p>The preceding &#8216;/&#8217; that I&#8217;d earlier declared always points to the root of my website. If I wanted to store my animations elsewhere, I could modify this line and it should propagate across the file and make the correct linkages.</p>
<p>This should ensure that I have all the included files in the correct locations.</p>
<p>Now for the images.</p>
<p>In the &#8216;animation_edge.js&#8217; file, you&#8217;ll need to modify the top line to point to the correct images directory. Precede it with a &#8216;/&#8217; again to ensure it points from the root, because relative paths in Adobe Edge are shockingly bad at being consistent.</p>
<p></p><pre class="crayon-plain-tag">var im='/animations/my-animation/images/';</pre><p></p>
<p>Also, I&#8217;ve noticed that if you&#8217;ve used any assets in symbols you&#8217;ll need to edit these separately because the &#8216;im&#8217; variable isn&#8217;t applied to them. You&#8217;ll need to do this manually in each case:</p>
<p></p><pre class="crayon-plain-tag">dom: [
   {
      transform: [[10]],
      id: 'image',
      type: 'image',
      rect: [-10,0,752,83],
      fill: ['rgba(0,0,0,0)',im+'image.png'] //originally was fill: ['rgba(0,0,0,0)','images/image.png']
   },</pre><p> </p>
<h2>Embedding Animations with WordPress</h2>
<p>The most difficult part about embedding Adobe Edge animations in WordPress is staying true to the file structure. Everything else should be quite easy.</p>
<p>Instead of linking the pre-loader file with a html script declaration, consider using &#8216;wp_enqueue_script&#8217; instead. This is always a safer way to manage script inclusions:</p>
<p></p><pre class="crayon-plain-tag">wp_enqueue_script('animation', home_url() . '/animations/my-animation/animastion_edgePreload.js');</pre><p> </p>
<h2>The future of Adobe Edge</h2>
<p>Hopefully, the next stage in Adobe Edge should include a much more comprehensive pathing system, so to eliminate all this manual effort, and hopefully management of assets should be tightened up.</p>
<p>All in all, this software is very comprehensive and allows you to achieve a great deal with your animations. One or two little issues are bringing it down, but hey, it&#8217;s a preview version so Adobe are forgiven!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/adobe-edge-embedding-animations-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yoast for Writing SEO Friendly Content</title>
		<link>http://www.danielhanly.com/blog/tutorial/yoast-writing-seo-friendly-content/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yoast-writing-seo-friendly-content</link>
		<comments>http://www.danielhanly.com/blog/tutorial/yoast-writing-seo-friendly-content/#comments</comments>
		<pubDate>Fri, 20 Jul 2012 13:44:10 +0000</pubDate>
		<dc:creator>Daniel Hanly</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[yoast]]></category>

		<guid isPermaLink="false">http://www.danielhanly.com/?p=426</guid>
		<description><![CDATA[WordPress SEO by Yoast is an SEO suite for your WordPress Installation. I&#8217;ve been using Yoast&#8217;s SEO Plugin on all websites I&#8217;ve made. It&#8217;s impressive Page Analysis tools allow me to write more relevant content. Yoast is the highly informative website of SEO Specialist Joost de Valk. Since I began using this plugin, the &#8216;Yoast&#8217; [...]]]></description>
				<content:encoded><![CDATA[<p>WordPress SEO by Yoast is an SEO suite for your WordPress Installation.<br />
I&#8217;ve been using Yoast&#8217;s SEO Plugin on all websites I&#8217;ve made. It&#8217;s impressive Page Analysis tools allow me to write more relevant content.</p>
<p>Yoast is the highly informative website of SEO Specialist <a href="http://yoast.com/">Joost de Valk</a>. Since I began using this plugin, the &#8216;Yoast&#8217; marque gives me a feeling of superior quality and knowledge.</p>
<h2>Yoast&#8217;s Green Lighting</h2>
<p><img src="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-20-at-13.01.25.png" alt="" title="Yoast SEO Green Light" width="107" height="38" class="aligncenter size-full wp-image-429" /></p>
<p>The above image is the fabled Yoast &#8216;Green Light&#8217;. It means your page has the maximum SEO impact.<br />
Attaining this Green Light often means rewriting or re-wording your content. The Yoast SEO Plugin will watch, and advise you on the best choices for your content.</p>
<h2>The Google Description</h2>
<p>A &#8216;WordPress SEO by Yoast&#8217; metabox sits on the post editing page. The General tab concerns how your website appears in Search Results. To begin analysing your content for this, you must first define a &#8216;Focus Keyword&#8217;.</p>
<p>The Focus Keyword of your article is a keyword that gives your post &#8216;context&#8217;. The keyword for this article is &#8216;Yoast&#8217;, and it allows the reader to immediately know which plugin I&#8217;m reviewing. It&#8217;s apparent, by the search listing what this article is about.</p>
<p><img src="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-20-at-13.05.04.png" alt="" title="The General Tab" width="913" height="536" class="aligncenter size-full wp-image-431" /></p>
<p>It&#8217;s clear that I&#8217;ve used the Focus Keyword where advised. This allows people to know exactly what my article is about.</p>
<p>You may decide to re-word any of the options to best represent the content contained within.</p>
<p>Reword the heading if your &#8216;chars left&#8217; value shows a minus. Try to stay within the character limit, so no part of the article&#8217;s context is hidden by ellipses. (&#8230;)</p>
<h2>Yoast&#8217;s Page Analysis Tab</h2>
<p>The Yoast Page Analysis tab is really where the magic happens.</p>
<p><img src="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-20-at-13.18.02.png" alt="" title="Page Analysis" width="932" height="517" class="aligncenter size-full wp-image-438" /></p>
<p><strong>Not all of criteria here will be immediately relevant to your page.</strong> However, every effort should be made to get a &#8216;Green Light&#8217;. </p>
<p>Above, you can see, I need to work on my readability.<br />
The <a href="http://en.wikipedia.org/wiki/Flesch-Kincaid_readability_test#Flesch_Reading_Ease">Flesch</a> Score needs improvement.</p>
<p>The Flesch score concerns sentence size. it&#8217;s better to have less words per sentence.<br />
This doesn&#8217;t mean just unnecessarily punctuating, but rather writing your sentences to be more concise in their representative structure. Say more, with less words.<br />
Sometimes, it&#8217;s best to really analyse what you want to say in each sentence/paragraph.</p>
<p>Consider your audience against the below table to gauge your score.<br />
<img src="http://www.danielhanly.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-20-at-13.41.55.png" alt="" title="Screen Shot 2012-07-20 at 13.41.55" width="395" height="113" class="aligncenter size-full wp-image-450" /></p>
<p>These guidelines want you to really look at your content, and suggests methods for improvement. Using the keyword regularly, adding properly marked images, outbound links, word limit; all contribute to a higher SEO impact.</p>
<p>So, reaching the end of this article, it&#8217;s now become my job to review and improve. Back to the top&#8230;</p>
<p><a href="http://wordpress.org/extend/plugins/wordpress-seo/">WordPress SEO</a> by Yoast.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielhanly.com/blog/tutorial/yoast-writing-seo-friendly-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
