<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>design is philosophy</title>
	
	<link>http://www.designisphilosophy.com</link>
	<description>WordPress, Expression Web, CSS, other stuff</description>
	<lastBuildDate>Wed, 08 Feb 2012 18:56:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PinkYellowMediaBlog" /><feedburner:info uri="pinkyellowmediablog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://www.designisphilosophy.com/?pushpress=hub" /><item>
		<title>Simple video embedding with custom fields in WordPress – YouTube</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/m6AWkjIxnuo/</link>
		<comments>http://www.designisphilosophy.com/tutorials/simple-video-embedding-with-custom-fields-in-wordpress-youtube/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 18:53:53 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1772</guid>
		<description><![CDATA[One of my primary goals when building WordPress themes for my clients is to make it as easy as possible for them to post and manage content. And though video embedding has become much simpler over the years, controlling the &#8230; <a href="http://www.designisphilosophy.com/tutorials/simple-video-embedding-with-custom-fields-in-wordpress-youtube/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.designisphilosophy.com/wp-content/uploads/2012/02/custom-field1.png"><img src="http://www.designisphilosophy.com/wp-content/uploads/2012/02/custom-field1.png" alt="Creating a custom video field in WordPress" title="Creating a custom video field in WordPress" width="603" height="292" class="aligncenter size-full wp-image-1779" /></a>One of my primary goals when building WordPress themes for my clients is to make it as easy as possible for them to post and manage content. And though video embedding has become much simpler over the years, controlling the video content can still be a bit of a pain, especially if you can&#8217;t remember the width of your content or if you have an index page where you want to showcase video thumbnails rather than the actual video.</p>
<p>To simplify the process I usually resort to a <a title="WPAlchemy custom meta boxes" href="http://www.farinspace.com/wpalchemy-metabox/" target="_blank">custom meta box</a> but the technique works just as well with custom fields.</p>
<p>This is the first of two tutorials on this topic and here I&#8217;ll be focusing on YouTube videos and oEmbed. The next tutorial will be on self-hosted videos and VideoJS.</p>
<h2>Auto-Embedding YouTube videos with a custom field</h2>
<p>Consider the following scenario: You have a design that calls for videos to be embedded outside of the main content, for example by placing it above the headline. This is becoming more and more common, and provides both a better user experience and easier access to the important content in the post. The problem of course is that regular video embedding puts the video in the post body, and that&#8217;s not what we want. Enter the custom field option.</p>
<p>First thing first: In the post you want to present the video, create a new custom field with the name <code>video_url</code> and the value set to a normal YouTube video ID (the illegible part at the end of the video URL).</p>
<p>Now you have a custom field carrying the YouTube video value. The next step is to dump it into your theme so WordPress can display it. For this we&#8217;re going to use the built in <a href="http://codex.wordpress.org/Embeds" title="oEmbed and WordPress" target="_blank">oEmbed functionality</a> in WordPress which when used normally lets you dump in a YouTube URL and then automagically inserts the embed code. But in our case we&#8217;re adding the URL dynamically in the theme so we are going to use the <a href="http://codex.wordpress.org/Function_Reference/wp_oembed_get" title="wp_oembed_get() WordPress function" target="_blank">wp_oembed_get()</a> function a function. The end result is the code you see below:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// Get the video URL and put it in the $video variable</span>
<span style="color: #000088;">$videoID</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'video_url'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Echo the embed code via oEmbed</span>
<span style="color: #b1b100;">echo</span> wp_oembed_get<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'http://www.youtube.com/watch?v='</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$videoID</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>The code above places the embed code dynamically generated from the YouTube URL wherever the code is placed in your theme (this of course has to go inside the loop).</p>
<h2>Making it conditional</h2>
<p>Normally I wrap the code above in divs to control the behavior and place the video where I want it. Because I&#8217;m neurotic about clean code I insist on always using conditionals in cases like this to avoid leaving empty divs lying around when no video was added through the custom field. With the conditional added the code gets a bit expanded, but works the same way:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// Get the video URL and put it in the $video variable</span>
<span style="color: #000088;">$videoID</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'video_url'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Check if there is in fact a video URL</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$videoID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;div class=&quot;videoContainer&quot;&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Echo the embed code via oEmbed</span>
	<span style="color: #b1b100;">echo</span> wp_oembed_get<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'http://www.youtube.com/watch?v='</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$videoID</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/div&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Now the video will display wherever you place the code on the provision a video URL was actually added with a custom field. </p>
<h2>Getting a video thumbnail from YouTube</h2>
<p>So far we&#8217;ve just made a fancy way of embedding videos, and it might seem a bit superfluous to do so seeing as you can just add the video right in the post body. But there&#8217;s a reason you may want to do it this way: What if you want to make an index page of all your video posts but you want to show the video thumbnail directly from YouTube instead of the video itself? To do this you need the video ID and you also need a bit of PHP magic. </p>
<p>The code below goes inside the loop on an index page and produces the video thumbnail wrapped in a link to the post:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #666666; font-style: italic;">// Calls up the YouTube video thumbnail or, if no URL is provided, the featured image from WordPress</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Add a container and a link around the video</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;div class=&quot;tinyVideoThumb&quot;&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;a href=&quot;'</span> <span style="color: #339933;">.</span> get_permalink<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot; title=&quot;Go to '</span> <span style="color: #339933;">.</span> the_title<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot; rel=&quot;bookmark&quot;&gt;'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$video_url</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// if there is a video URL</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Get the video URL from custom field</span>
	<span style="color: #000088;">$videoID</span> <span style="color: #339933;">=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'video_url'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
	<span style="color: #666666; font-style: italic;">// Query YouTube for video meta data</span>
	<span style="color: #000088;">$thumb_query_url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://gdata.youtube.com/feeds/api/videos/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$videoID</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'?v=2&amp;alt=jsonc'</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Decode the json data from YouTube and put it in a readable format</span>
	<span style="color: #000088;">$json</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$thumb_query_url</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Echo out the thumbnail, give it height and weight and set the alternate description to post title</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;img src=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$json</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">thumbnail</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sqDefault</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot; width=&quot;60&quot; height=&quot;45&quot; alt=&quot;'</span> <span style="color: #339933;">.</span> the_title<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/a&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/div&gt;'</span><span style="color: #339933;">;</span>				
&nbsp;
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// else use the standard featured image</span>
&nbsp;
	the_post_thumbnail<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tinyThumb'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'alt'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$postTitle</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$postTitle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>The above of course only works for YouTube videos, and only if they are entered with the full URL and none of the other junk that often comes along with YouTube video URLs. You could make a strict rule to only plug in the actual YouTube video ID in the field. If so you could omit the substr() function.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/tutorials/simple-video-embedding-with-custom-fields-in-wordpress-youtube/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/tutorials/simple-video-embedding-with-custom-fields-in-wordpress-youtube/</feedburner:origLink></item>
		<item>
		<title>Using the time tag in WordPress and when parsing RSS feeds</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/TA8f4Sci5oc/</link>
		<comments>http://www.designisphilosophy.com/tutorials/using-the-time-tag-in-wordpress-and-when-parsing-rss-feeds/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 03:10:02 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1767</guid>
		<description><![CDATA[The &#60;time&#62; tag is a little used but very effective little HTML element that allows you to embed additional information to dates and times in your content. The idea is that in addition to the actual text that shows the &#8230; <a href="http://www.designisphilosophy.com/tutorials/using-the-time-tag-in-wordpress-and-when-parsing-rss-feeds/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The &lt;time&gt; tag is a little used but very effective little HTML element that allows you to embed additional information to dates and times in your content. The idea is that in addition to the actual text that shows the visitor the time, you can provide the browser, search engines and other computers with actual time information they can understand. Very cool.</p>
<p>For a recent project I had to parse time tags both from WordPress and from an RSS feed. After some mucking about I found what I think is the optimal solution, so to save you some time I&#8217;ve put it all together for you.</p>
<h2>Date stamp for WordPress using the &lt;time&gt; tag</h2>
<p>WordPress can output the publishing date and time in pretty much any configuration you want. For the time tag to work you need the datetime variable to show the time in a specific format that looks like this:</p>
<p>2012-01-30T18:55:21+08:00</p>
<p>That&#8217;s year, month, date, time (international) and an optional time zone reference. I&#8217;m in Vancouver, Canada so that&#8217;s GMT+8 hours.</p>
<p>Using the <a href="http://codex.wordpress.org/Function_Reference/get_the_date" title="get_the_date at the WordPress Codex" target="_blank">get_the_date()</a> function in WordPress you can get this time format and any other. In this case I wanted the format &#8220;Jan. 30, 2012&#8243;.</p>
<p>The end result:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;time class=&quot;entry-date&quot; datetime=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> get_the_date<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'c'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; pubdate&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> get_the_date<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'M. j, Y'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/time&gt;</pre></div></div>

<h2>Date stamp when parsing RSS feeds using the &lt;time&gt; tag</h2>
<p>For the project I also needed to parse an RSS feed and show the details of each item in an index page. RSS feeds output the date in a standardized format, but it is rather unsightly:</p>
<p>2012-01-30T23:00:00+00:00</p>
<p>I needed to get this parsed to match the example above. To do so I used a <a href="http://www.handyphp.com/index.php/PHP-Resources/Handy-PHP-Functions/reformat_date.html" title="Reformat Date with PHP" target="_blank">handy PHP function provided by Handy PHP called Reformat Date</a>. This function uses the <a href="http://php.net/manual/en/function.strtotime.php" title="strtotime PHP function" target="_blank">strtotime()</a> PHP function to reformat dates into anything you want simply and easily.</p>
<p>First I added the function itself to the functions.php file in my theme like this (notice I append the name of the theme at the front of the function name to avoid any future clashes should WordPress decide to bake this feature in):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Reformat date for RSS feed</span>
<span style="color: #000000; font-weight: bold;">function</span> theme_reformat_date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$date</span><span style="color: #339933;">,</span> <span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Function written by Marcus L. Griswold (vujsa)</span>
<span style="color: #666666; font-style: italic;">// Can be found at http://www.handyphp.com</span>
<span style="color: #666666; font-style: italic;">// Do not remove this header!</span>
&nbsp;
    <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #339933;">,</span> <span style="color: #990000;">strtotime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$date</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$output</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Second I grabbed the RSS feed using WordPress&#8217; native RSS import function (I&#8217;ll write about that in a separate post but it&#8217;s pretty straight forward) and then I parsed the data. </p>
<p>Note: In an RSS feed the time is contained in each item under the handle pubdate so to get the raw time I use $item['pubdate'].</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;time class=&quot;entry-date&quot; datetime=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> theme_reformat_date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pubdate'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'c'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; pubdate&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> theme_reformat_date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pubdate'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'M. j, Y'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/time&gt;</pre></div></div>

<p>Note that the date has to be reformatted twice, once for machine readable output (&#8216;c&#8217;) and once for the human readable output (&#8216;M. j, Y&#8217;).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/tutorials/using-the-time-tag-in-wordpress-and-when-parsing-rss-feeds/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/tutorials/using-the-time-tag-in-wordpress-and-when-parsing-rss-feeds/</feedburner:origLink></item>
		<item>
		<title>Can WordPress really do that? Slides from my WordCamp Victoria 2012 presentation</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/0XEdFn5JTkA/</link>
		<comments>http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that-slides-from-my-wordcamp-victoria-2012-presentation/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 21:00:47 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Speaking Engagements]]></category>
		<category><![CDATA[wordcamp]]></category>
		<category><![CDATA[wordcamp victoria]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1757</guid>
		<description><![CDATA[Can WordPress really do that? A case study of vierderduer.no]]></description>
			<content:encoded><![CDATA[<div style="width:553px" id="__ss_11044025"><object id="__sse11044025" width="553" height="460"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wordcampvictoria2012-vierderduer-120114132658-phpapp02&#038;stripped_title=can-wordpress-really-do-that-a-case-study-of-vierderduerno-11044025&#038;userName=mor10" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse11044025" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wordcampvictoria2012-vierderduer-120114132658-phpapp02&#038;stripped_title=can-wordpress-really-do-that-a-case-study-of-vierderduerno-11044025&#038;userName=mor10" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="553" height="460"></embed></object></div>
<p><a href="http://www.slideshare.net/mor10/can-wordpress-really-do-that-a-case-study-of-vierderduerno-11044025" title="Can WordPress really do that? A case study of vierderduer.no">Can WordPress really do that? A case study of vierderduer.no</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that-slides-from-my-wordcamp-victoria-2012-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that-slides-from-my-wordcamp-victoria-2012-presentation/</feedburner:origLink></item>
		<item>
		<title>Can WordPress really do that? A preview of my 2012 WordCamp Victoria talk</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/FNXfXramqTQ/</link>
		<comments>http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 23:07:23 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Speaking Engagements]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[like]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1745</guid>
		<description><![CDATA[It all started with a simple yet befuddling question: &#8220;Can you create a WordPress site that sends SMS messages to users when things change?&#8221; My initial thought was that this could easily become the most annoying website in the world, &#8230; <a href="http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1751" title="Vi er der du er - application" src="http://www.designisphilosophy.com/wp-content/uploads/2011/12/vierderduerapplication.png" alt="Vi er der du er - application" width="199" height="380" />It all started with a simple yet befuddling question: &#8220;<em>Can you create a WordPress site that sends SMS messages to users when things change?</em>&#8221; My initial thought was that this could easily become the most annoying website in the world, but upon closer inspection it was a stroke of pure genius.</p>
<p>To ring in 2012 I&#8217;m bringing something completely different to <a title="WordCamp Victoria" href="http://2012.victoria.wordcamp.org/" target="_blank">WordCamp Victoria</a>. If you&#8217;ve seen my live talks previously you know they are usually either neck deep in live code or conceptual presentations on theoretical ideas. This time will be different:</p>
<p>My talk, entitled &#8220;<a title="WordCamp Victoria 2012 speakers" href="http://2012.victoria.wordcamp.org/speaker-biographies/" target="_blank">Can WordPress really do that? A case study of vierderduer.no</a>&#8221; will be focussed around one of the most interesting and challenging WordPress projects I&#8217;ve ever been involved in, the building of a site called &#8220;<a title="Vi er der du er - A WordPress site like no other" href="http://www.vierderduer.no" target="_blank">Vi er der du er</a>&#8221; (&#8220;We are where you are&#8221;) for Norwegian bank SpareBank1. I was brought on as an outside contractor by <a title="Netlife Research" href="http://netliferesearch.com/" target="_blank">Netlife Research</a>, one of the largest and most well renowned web dev houses in Norway, to make their crazy ideas and designs into a real-life site. I say crazy because this is a site that does things so far out of the ordinary even I have a hard time figuring out how we got where we are today.</p>
<p>What makes the site so interesting is that it uses Facebook Likes as a voting system to help raise money for organizations. The more likes an organization gets, the more money the bank gives them. And along the way the organization gets SMS messages telling them about the status of their application and how much money they have raised.</p>
<p>But that&#8217;s just the tip of the iceberg. This site has so many hidden features and backend customizations I&#8217;m not sure I&#8217;ll be able to cover them all in a measly one hour. But I&#8217;ll try.</p>
<p>The talk (which I have yet to prepare) will be a nice break from my regular stuffing-code-down-your-throat approach. I&#8217;ll talk about how the site came about, the many challenges and solutions implemented and how you can take my hard learned lessons and use them to make your custom WordPress themes more effective and easier to manage. More importantly though I&#8217;ll spend the hour helping you break free of the well established preconceptions about what WordPress can and cannot do. If you ask me there is no limit. And in this talk I&#8217;ll prove it.</p>
<p>So, if you haven&#8217;t already bought a ticket, head on over to the <a title="2012 WordCamp Victoria" href="http://2012.victoria.wordcamp.org/" target="_blank">WordCamp Victoria</a> site and grab yours. See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/events/speaking-engagements-events/can-wordpress-really-do-that/</feedburner:origLink></item>
		<item>
		<title>Improving SEO Using Accessibility Techniques – New Lynda.com course</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/IlySf9gSnlo/</link>
		<comments>http://www.designisphilosophy.com/lynda-com/improving-seo-using-accessibility-techniques-new-lynda-com-course/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 00:19:37 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Lynda.com]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1740</guid>
		<description><![CDATA[Want to bring more people to your website, play nice with social media and&#160;allow everyone to access your fabulous content, regardless of how they choose to do so? If so you should check out my newest course on lynda.com, Improving &#8230; <a href="http://www.designisphilosophy.com/lynda-com/improving-seo-using-accessibility-techniques-new-lynda-com-course/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><iframe width="546" height="307" src="http://www.youtube.com/embed/t8X_cUjGAQo?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Want to bring more people to your website, play nice with social media <em>and</em>&nbsp;allow everyone to access your fabulous content, regardless of how they choose to do so? If so you should check out my newest course on lynda.com, <a title="Improving SEO Using Accessibility Techniques tutorial with Morten Rand-Hendriksen on lynda.com" href="http://www.lynda.com/home/DisplayCourse.aspx?lpk2=89051&#038;utm_medium=affiliate&#038;utm_source=ldc_affiliate&#038;utm_content=524&#038;utm_campaign=CD2270&#038;bid=524&#038;aid=CD2270&#038;opt=" target="_blank">Improving SEO Using Accessibility Techniques</a>. This course grew out of a realization that though SEO and Accessibility seem to be at the opposite ends of the &#8220;stuff I code for and care about&#8221; spectrum, they are actually two peas in a pod. And they are also sharing that pod with a third pea called &#8220;Web Standards&#8221;. Or, to put it slightly less cryptically, accessibility, SEO and web standards go hand in hand &#8230; in hand. And by applying all three in your web development process you end up with sites that are not only easier to access for people who use keyboard navigation and text-to-speech browsers, but also other non-standard visitors like Google, Bing, Facebook, G+ and so on.</p>
<p>Check out the video above for a primer and go watch the&nbsp;<a title="Improving SEO Using Accessibility Techniques tutorial with Morten Rand-Hendriksen on lynda.com" href="http://www.lynda.com/home/DisplayCourse.aspx?lpk2=89051&#038;utm_medium=affiliate&#038;utm_source=ldc_affiliate&#038;utm_content=524&#038;utm_campaign=CD2270&#038;bid=524&#038;aid=CD2270&#038;opt=" target="_blank">Improving SEO Using Accessibility Techniques</a>&nbsp;course on lynda.com to get your sites up to snuff and get more visitors in the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/lynda-com/improving-seo-using-accessibility-techniques-new-lynda-com-course/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/lynda-com/improving-seo-using-accessibility-techniques-new-lynda-com-course/</feedburner:origLink></item>
		<item>
		<title>The value of women in tech</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/8QX3FuqQOzI/</link>
		<comments>http://www.designisphilosophy.com/my-opinion/the-value-of-women-in-tech/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 04:09:34 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[My Opinion]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1729</guid>
		<description><![CDATA[The video above shines a light on an important topic. It may seem like a purely lexical trick &#8211; referring to women as &#8216;women&#8217; rather than &#8216;girls&#8217; &#8211; but it is so much more. Considering females constitute more than half &#8230; <a href="http://www.designisphilosophy.com/my-opinion/the-value-of-women-in-tech/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><iframe width="546" height="307" src="http://www.youtube.com/embed/TUvRPmL61SI?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The video above shines a light on an important topic. It may seem like a purely lexical trick &#8211; referring to women as &#8216;women&#8217; rather than &#8216;girls&#8217; &#8211; but it is so much more. Considering females constitute more than half of the world population and that in the western world at least, the female work force is both better educated and more skilled than the male counterpart, referring to them in a manner that properly indicates their age and maturity is vital.</p>
<p>But the issue goes much deeper than that: Even though many consider womens&#8217; lib to be a thing of the past and feminism to be dead, women are still not treated as equal to men. This manifests itself in lower wages, lower positions and lower overall value in the work force. And this is especially true in the tech sector.</p>
<p>Why it is so is a mystery to me, but it is likely rooted in two main predispositions:</p>
<ol>
<li>Men don&#8217;t see women as equal</li>
<li>Women don&#8217;t see themselves as valuable</li>
</ol>
<p>Both of these ideas are fatally flawed and rooted in biasses that belong in the 17th century, not 2011. And to rid ourselves of them we all need to start thinking differently about gender in the workplace.</p>
<p>Consider James Chartrand &#8211; famed writer for Copyblogger and other online publications. When he published the article &#8220;<a title="Why James Chartrand wears womens' underpants - a must read" href="http://www.copyblogger.com/james-chartrand-underpants/" target="_blank">Why James Chartrand wears women&#8217;s underpants</a>&#8221; in 2009 it created a&nbsp;furore. James announced he was actually a she and was writing under a male pseudonym to gain respect. Her (yes, it&#8217;s confusing) claim was that as a man she had an easier time finding work and was paid more than as a woman.</p>
<p>Panzer Feminists and women&#8217;s lib (and anti-lib) opinionators world wide went ballistic on James for a variety of reasons. That itself was not a surprise. However, there were a group of arguments coming usually from women that really stuck out to me. I like to call them the head-burried-in-the-sand arguments. They came in two varieties:</p>
<ol>
<li>James is doing the women of the world a disservice by pretending to be a man. In fact, she is furthering the gender bias and worsening the situation. James should have her woMan card revoked.</li>
<li>James is delusional. There is no gender bias in tech. Her woes were caused by her inferior writing and obvious self-loathing.</li>
</ol>
<p>Both of these claims are, in my opinion, ludicrous. James did not do women a disservice or damage womens&#8217; lib or feminism by doing what she did. In fact, by pretending to be a man she proved beyond any doubt there <em>is</em>&nbsp;a severe gender bias in the tech world. And by going public she made it impossible to ignore. And to the claim that there is no gender bias in tech? Get real. Of course there is. And it&#8217;s worse than most other industries. Don&#8217;t believe me? Check out <a title="I regularly hire woman for 65% to 75% of what males make" href="http://deedls.visibli.com/share/1KGKCT" target="_blank">this piece from Redit</a>&nbsp;posted some 5 months ago entitled&nbsp;&#8221;<a title="I regularly hire woman for 65% to 75% of what males make" href="http://deedls.visibli.com/share/1KGKCT" target="_blank">I regularly hire woman for 65% to 75% of what males make</a>&#8220;. A sobering piece of hard reality right there.</p>
<p>This last piece also highlights that often overlooked women devaluing themselves issue I mentioned earlier: Women, through cultural bias and lack of inbred arrogance will often sell themselves short either because they think they&#8217;re not worth more or because they think they&#8217;re not skilled enough. Men on the other hand will almost invariably oversell both their value and their skills. As a result there is an artificial gap created by honesty vs bravado. The only way to get past that dear&nbsp;oestrogen&nbsp;enriched human entities, is to start demanding what you deserve. Otherwise you&#8217;re just playing weak cards in an attempt to be well liked. And just like in poker, that won&#8217;t work if you have any plans of winning.</p>
<h2>So what do we do now?</h2>
<p>Inequality for women or between the sexes is nothing new. The sad thing is it continues today. So we have to do something about it. And bizarre as it may sound, it starts with the language we use. Just like you would never refer to me as a &#8216;boy&#8217;, you should never refer to a female over the age of 18 as a &#8216;girl&#8217;. She is a &#8216;woman&#8217;. And that goes for all you other women out there. I know &nbsp;you think it&#8217;s cute to call yourselves &#8216;girls&#8217;, but you&#8217;re not girls, and by doing so you are selling yourselves short. Girls are females between the ages of 0 and about what&#8230; 14? 16?. Anything older than that and they are either &#8216;young women&#8217; or &#8216;women&#8217; proper.</p>
<p>Try applying this simple rule: When referring to a female, if she were a male, would you call her a &#8220;boy&#8221; or a &#8220;man&#8221;? If &#8216;boy&#8217;, go with &#8216;girl&#8217;. If &#8216;man&#8217;, go with &#8216;woman&#8217;. That&#8217;s what this linguistic differential is for: to distinguish based on age as well as gender.</p>
<p>Once that&#8217;s settled, let&#8217;s start talking about not referring to people based on their gender but rather their skill set. But that&#8217;s a whole different argument.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/my-opinion/the-value-of-women-in-tech/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/my-opinion/the-value-of-women-in-tech/</feedburner:origLink></item>
		<item>
		<title>Wise words to live by</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/H3GwMjJQx-M/</link>
		<comments>http://www.designisphilosophy.com/quotes/wise-words-to-live-by/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 17:00:29 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Quotes]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1722</guid>
		<description><![CDATA[&#8220;If you&#8217;re only focusing on the next thing you&#8217;re going to learn, you&#8217;ll always feel like a student, never a dancer.&#8221; When she said it it was part of a conversation, little more than a fleeting thought put into words. &#8230; <a href="http://www.designisphilosophy.com/quotes/wise-words-to-live-by/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;If you&#8217;re only focusing on the next thing you&#8217;re going to learn, you&#8217;ll always feel like a student, never a dancer.&#8221;</p></blockquote>
<p>When she said it it was part of a conversation, little more than a fleeting thought put into words. But it struck me that not only was there profound meaning and wisdom in that sentence, but there was universality. Swap out &#8220;dancer&#8221; with any other word and you see what I mean.</p>
<p>&#8220;She&#8221; in this case is the teacher of the Argentine Tango weekend intensive Angela and I attended this weekend. You find the wisest words to live by in the strangest places.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/quotes/wise-words-to-live-by/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/quotes/wise-words-to-live-by/</feedburner:origLink></item>
		<item>
		<title>WordPress on Windows Azure – a bit of history</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/38YNnNwi-Yk/</link>
		<comments>http://www.designisphilosophy.com/wordpress/wordpress-on-windows-azure-a-bit-of-history/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 00:58:38 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress on Azure]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1507</guid>
		<description><![CDATA[In February 2011 I had the fortune of getting a meeting with Alessandro Catrioni, head of the Azure Interop team at Microsoft. We had a long chat about the possibility of creating a persistent, scaleable WordPress Networks solution that could run natively &#8230; <a href="http://www.designisphilosophy.com/wordpress/wordpress-on-windows-azure-a-bit-of-history/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In February 2011 I had the fortune of getting a meeting with Alessandro Catrioni, head of the Azure Interop team at Microsoft. We had a long chat about the possibility of creating a persistent, scaleable WordPress Networks solution that could run natively on Windows Azure. A bit like trying to boil the ocean, but we knew it was technically possible. Last Friday, the first fully functioning version of this crazy idea went live and we were able to run multiple WordPress sites from one core installation as a native Windows Azure application utilizing an Azure instance, a SQL Azure database, Azure Blob Storage and the Azure DNS.</p>
<p>It may not sound like much, but this is big. As in you can make your own WordPress.com. In the cloud. With infinite scaleability and redundancy. Without managing your own server.</p>
<h2>The Idea</h2>
<p>As with many other WordPress developers one of my big challenges has always been hosting. You basically have two options: Host your clients independently on their respective shared hosting plans all over the web or host them on your own server. If you choose to host them on your own server you again have two options: Host them as separate WordPress installs or host them all under a WordPress Network (previously WordPress MU). By far the best option from a content management and administration point of view is the WordPress Networks option. But it came with some pretty brutal downsides: When hosting multiple sites under a WordPress Network you are basically calling one set of core files and one database from many sites at the same time. And though this is unproblematic if each of the sites get a couple of hundred visits a day it becomes a huge problem if you have say ten sites that each pull 10,000 visits an hour. Why? Because that amounts to 100,000 calls to the same core files and the same database. That kind of traffic requires a robust server and a big pipe.</p>
<p>The solution to this problem has been to host such networks on unreasonably large and powerful servers. You basically scale for the worst case scenario and pay for a lot of down time in between. An inefficient solution, and also a cumbersome one as these setups in most cases require constant server maintenance and upkeep. Not to mention the enormous headache of adding additional drives and servers should upscaling be necessary.</p>
<p>This is what the cloud was built for: Dynamic scaleability both in terms of bandwith, capacity and processing power. So the best solution for WordPress Networks must surely lie in the cloud somewhere.</p>
<p>There&#8217;s just one problem: The cloud is complicated. And that&#8217;s where Windows Azure comes in &#8211; at least it did for me.</p>
<h2>I&#8217;m not a gardener</h2>
<p>Though I consider myself proficient at web development and people have referred to me as a &#8220;WordPress Adept&#8221; I am by no means a server expert. Quite the contrary. I have only a superficial understanding of servers and server maintenance, and I have little interest in expanding my knowledge in this field. So though a cloud server would provide me with a garden in the cloud I have little interest in becoming a gardener. I just want it to work. And that&#8217;s what Windows Azure offers: A maintained garden where I could deploy my applications.</p>
<p>The problem of course was that Windows Azure runs a .NET framework and a SQL server, not the PHP framework and MySQL server required by WordPress runs on. What was needed was some sort of symbiosis. Which is what we&#8217;ve been working on for the last 6 months.</p>
<h2>Make it Native</h2>
<p>Previous attempts had been made to make WordPress run on Azure, and they did work, at least for short periods of time. The problem was that they created pseudo states within the Azure framework where the PHP application could run, but these pseudo states were not stable. What was needed was a way of making WordPress into a native Azure application. That way it would be persistent, properly scaleable, and could be managed like any other Azure application. But this had to be done without touching the core files within WordPress, otherwise future updates would become a nightmare and that would defeat the purpose of doing this in the first place.</p>
<p>The solution was to create a set of adjoining files that served as bridges or translators between WordPress and the foreign Azure environment. That way the administrator could swap out and upgrade core files within WordPress without breaking anything and also change the configurations of the application through the normal Azure interface. And after a lot of experimentation and tweaking it worked.</p>
<h2>Domains for everyone</h2>
<p>So now we had a persistent, upgradable installation of WordPress running in Network mode on Azure. The last hurdle, the one that would prove to me most challenging, was to achieve seamless domain remapping for the different network sites. Let me explain:</p>
<p>A WordPress Network can be set up in two ways: Sub-sites or Sub-directories. The former produces site URIs such as newsite.pinkandyellow.com while the latter produces URIs like pinkandyellow.com/newsite. The obvious problem with both is that they use the pinkandyellow.com domain as the root. Which won&#8217;t work if you intend to host other sites or client sites under your network.</p>
<p>Domain remapping allows you to point these sub-sites or sub-directories to a different domain, so instead of newsite.pinkandyellow.com you&#8217;d get newsite.com. This requires a WordPress plugin (of which there are several) because the remapping has to be done based on the core URL. I could go on ad nauseum about how this works but suffice it to say it only works with one of these plugins. Problem is none of these plugins worked with SQL servers. Instead they produced bizarre errors and messed everything up quite badly. For a long time. Until the lead developer Satish found a solution.</p>
<h2>Your own personal garden in the blue cloud</h2>
<p>The end result of all this is a simple solution that allows you to deploy WordPress Networks on Windows Azure as a native application. By doing this you can take advantage of every aspect of the cloud including scaleability, persistency, CDNs and redundancy. But most importantly you will no longer be paying for processing power and bandwidth you are not using. Because Azure is a scaleable environment your solution will breathe with traffic, expanding and contracting as visitor numbers go up and down. As a result your costs will be a true representation of actual use, not a worst case scenario approach.</p>
<p>There are other great benefits to this solution including the ability to remote desktop into the application itself for beta testing and quick resets should something go wrong. In fact there are more possibilities here than I am able to wrap my mind around and as we move forward with the project countless more will undoubtedly take shape.</p>
<p>For now the only thing that matters is that you can set up and deploy your own installation right now and give this new solution a spin for yourself.</p>
<p>In the coming months I&#8217;ll be posting a series of tutorials and articles on my own experiences running WordPress on Azure. The first one on <a href="http://www.designisphilosophy.com/tutorials/wordpress-on-azure-single-site-deployment/" title="WordPress on Windows Azure: Single-Site Deployment">how to create a single site installation</a> went live a couple of weeks ago and will be updated as the deployment solution matures. To see a live example of WordPress running on Windows Azure you can head on over to <a href="http://photopivot.com" title="PhotoPivot.com - a digital lightboard for professional photographers" target="_blank">PhotoPivot.com</a> which currently runs on four extra small instances.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/wordpress/wordpress-on-windows-azure-a-bit-of-history/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/wordpress/wordpress-on-windows-azure-a-bit-of-history/</feedburner:origLink></item>
		<item>
		<title>How to remove WP Geo plugin from specific pages</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/tWCzlqKkMhc/</link>
		<comments>http://www.designisphilosophy.com/tutorials/how-to-remove-wp-geo-plugin-from-specific-pages/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 19:17:45 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp geo]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1692</guid>
		<description><![CDATA[I ran a cross a rather interesting situation this week while working on the Vi Er Der Du Er site. The site uses the WP Geo plugin extensively on both pages, and posts, and custom post types but I needed &#8230; <a href="http://www.designisphilosophy.com/tutorials/how-to-remove-wp-geo-plugin-from-specific-pages/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I ran a cross a rather interesting situation this week while working on the <a href="http://www.vierderduer.no" title="Vi Er Der Du Er" target="_blank">Vi Er Der Du Er</a> site. The site uses the <a href=" http://wordpress.org/extend/plugins/wp-geo/" title="WP Geo" target="_blank">WP Geo plugin</a> extensively on both pages, and posts, and custom post types but I needed to deactivate it for one particular page because I was embedding a different custom Google Map. Not surprisingly the scripts calling my custom map were conflicting with the scripts calling WP Geo and as a result the map on the page in question didn&#8217;t work.</p>
<p>At first I thought it was a matter of removing the actions that called the plugin itself. I&#8217;ve done this in the past and it works for some plugins. I also found a <a href="http://snipplr.com/view/50417/" title="Snippet" target="_blank">code snippet here</a> that seemed to show it working. That unfortunately was not the case. So I had to keep digging. Then I found this excellent article <a href="http://justintadlock.com/archives/2009/08/06/how-to-disable-scripts-and-styles" title="How to disable scripts and styles in WordPress" target="_blank">How to disable scripts and styles by Justin Tadlock</a> that explained it all: I needed to de-register the scripts, not simply remove the function. </p>
<p>After digging through the plugin code I found the script calls and ended up with this code snippet in my functions.php file:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
&nbsp;
<span style="color: #666666; font-style: italic;">// remove WP Geo JS/CSS from the nybank page</span>
add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_print_scripts'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'vierderduer_deregister_javascript'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">100</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> vierderduer_deregister_javascript<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>is_page_template<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'page-nybank.php'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		wp_deregister_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'googe_jsapi'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		wp_deregister_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'jquery'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		wp_deregister_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'googlemaps'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		wp_deregister_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wpgeo'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		wp_deregister_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wpgeotooltip'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		wp_deregister_script<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wpgeo-admin-post'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>As you can see I made the function conditional so it only kicks in when a specific page template is used. You can swap out that condition for any other condition for the same result. Bottom line is it works and now WP Geo works on every page, post and post type except pages that use the page-nybank.php template file. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/tutorials/how-to-remove-wp-geo-plugin-from-specific-pages/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/tutorials/how-to-remove-wp-geo-plugin-from-specific-pages/</feedburner:origLink></item>
		<item>
		<title>Open Source in the Cloud – WordPress on Azure: My Make Web Not War presentation</title>
		<link>http://feedproxy.google.com/~r/PinkYellowMediaBlog/~3/BA1zfOK1qwk/</link>
		<comments>http://www.designisphilosophy.com/events/speaking-engagements-events/open-source-in-the-cloud-wordpress-on-azure-my-make-web-not-war-presentation/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 18:15:36 +0000</pubDate>
		<dc:creator>Morten Rand-Hendriksen</dc:creator>
				<category><![CDATA[Speaking Engagements]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[WordPress on Azure]]></category>

		<guid isPermaLink="false">http://www.designisphilosophy.com/?p=1679</guid>
		<description><![CDATA[Curious about the concept behind WordPress on Windows Azure or why I&#8217;m so excited about hosting WordPress Networks on a Microsoft platform? Look no further than the presentation above from Make Web Not War 2011.  In it I explain the premise &#8230; <a href="http://www.designisphilosophy.com/events/speaking-engagements-events/open-source-in-the-cloud-wordpress-on-azure-my-make-web-not-war-presentation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/26166439?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="550" height="413"></iframe></p>
<p>Curious about the concept behind WordPress on Windows Azure or why I&#8217;m so excited about hosting WordPress Networks on a Microsoft platform? Look no further than the presentation above from <a title="Morten Rand-Hendriksen at Make Web Not War 2011" href="http://www.webnotwar.ca/speaker-spotlight-mwnw-welcomes-back-morten-rand-hendriksen/" target="_blank">Make Web Not War 2011.</a>  In it I explain the premise and reasoning behind hosting WordPress Networks on Windows Azure along with some general principles around hosting large WordPress Networks. Your own private garden in the cloud? You bet.</p>
<p>Sadly the video doesn&#8217;t feature the slideshow presentation I created, but you can <a title="Open Source in the Cloud Prezi by Morten Rand-Hendriksen" href="http://prezi.com/ymwfarw4sk6j/open-source-in-the-cloud-php-on-azure/" target="_blank">follow along in a separate window</a> by navigating the slides on Prezi.com.</p>
<p>For a rundown on how to host WordPress on Azure with the new scaffolder solution which was introduced this fall, check out the <a href="http://www.designisphilosophy.com/tutorials/wordpress-on-azure-single-site-deployment/" title="WordPress on Windows Azure: Single-Site Deployment">full WordPress on Windows Azure: Single-Site Deployment tutorial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.designisphilosophy.com/events/speaking-engagements-events/open-source-in-the-cloud-wordpress-on-azure-my-make-web-not-war-presentation/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.designisphilosophy.com/events/speaking-engagements-events/open-source-in-the-cloud-wordpress-on-azure-my-make-web-not-war-presentation/</feedburner:origLink></item>
	</channel>
</rss>

