<?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>Coen Jacobs</title>
	
	<link>http://coenjacobs.net</link>
	<description />
	<lastBuildDate>Tue, 10 Nov 2009 00:34:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CoenJacobsWordPressAddict" type="application/rss+xml" /><feedburner:emailServiceId>CoenJacobsWordPressAddict</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Create your very own WordPress plugin</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/CYUYrTMl7Xc/create-wordpress-plugin</link>
		<comments>http://coenjacobs.net/blog/create-wordpress-plugin#comments</comments>
		<pubDate>Tue, 10 Nov 2009 00:34:48 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[add_filter]]></category>
		<category><![CDATA[str_replace]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=844</guid>
		<description><![CDATA[A request that I&#8217;ve received more than once lately, is to make a rewrite on my &#8216;How to create a WordPress plugin&#8217; that I published on one of my previous blogs. Off course, I&#8217;m more than happy to publish it here again, mostly because it is so easy to create your own plugins and you [...]]]></description>
			<content:encoded><![CDATA[<p>A request that I&#8217;ve received more than once lately, is to make a rewrite on my &#8216;How to create a WordPress plugin&#8217; that I published on one of my previous blogs. Off course, I&#8217;m more than happy to publish it here again, mostly because it is so easy to create your own plugins and you can start right now!</p>
<p>The official documentation on <a href="http://codex.WordPress.org/Writing_a_Plugin">Writing a WordPress Plugin</a> is great, but it lacks in a usable, clear example of how to write a plugin for WordPress.</p>
<p>All plugins have some required comment fields at the very top of the file. These comment fields give all the information a WordPress blog needs to identify and start using your very own plugin. Let&#8217;s take a look at it;</p>
<p style="font-family: monospace;">
<pre class="brush: php;">&lt;?php
/*
Plugin Name: Plugin name
Plugin URI: URL to the plugin page
Description: A description of what the plugin does
Version: Version number
Author: Your name, as the author of this plugin
Author URI: URL to your homepage
*/
?&gt;</pre>
<p>Now WordPress knows what our plugin is about, let&#8217;s add some functionality to it. In my previous example, the plugin was used to correct frequent misspellings to the name of our favorite blogging tool, let&#8217;s do that again.</p>
<h3>Let&#8217;s build your first WordPress plugin</h3>
<p>All plugins live (by default) in the <em>/wp-content/plugins/</em> directory. Create a file called <em>my-first-plugin.php</em> there and paste the comments we&#8217;ve just discussed into the file.</p>
<pre class="brush: php;">&lt;?php
/*
Plugin Name: My very first WordPress plugin
Plugin URI: http://coenjacobs.net/blog/create-WordPress-plugin/
Description: Corrects frequent misspellings in the word: WordPress
Version: 0.1
Author: Coen Jacobs
Author URI: http://coenjacobs.net
*/
?&gt;</pre>
<p>As you can see, I&#8217;ve added some real values to the comment fields. You can edit them and make it your own plugin by adding your own name and URL&#8217;s.</p>
<p>The function that we will use to correct these frequent misspellings is quite simple and uses the <a href="http://php.net/str_replace">PHP function str_replace()</a> to replace certain parts of a WordPress posts content. We will also use a array to select which misspellings we will correct with this plugin to make it really easy to add new frequent misspellings.</p>
<p>Let&#8217;s take a closer look at this function;</p>
<pre class="brush: php;">function correct_misspellings($text)
{
 $misspellings = array(
 &quot;WordPress&quot;,
 &quot;WordPress&quot;,
 &quot;WordPress&quot;,
 );

 $text = str_replace($misspellings, 'WordPress', $text);

 return $text;
}</pre>
<p>That&#8217;s basically it. All this function does is take the provided variable <em>$text</em>, and have all occurrences of a string inside the array called <em>$misspellings</em> be replaced with the string &#8216;WordPress&#8217;. After that it returns the variable <em>$text</em>.</p>
<h3>Hook up our function!</h3>
<p>But how does WordPress know how and when to use this function? With WordPress hooks, we can tell WordPress when to use functions from our own plugins. The hook that we will use for this plugin is the_content, the hook that is used by WordPress to show the content of a post. When we run our function on that hook, it will be applied to all posts and that&#8217;s exactly what we want. Let&#8217;s hook this function up!</p>
<pre class="brush: php;">add_filter('the_content', 'correct_misspellings');</pre>
<p>This little line of code is all we need to make sure our plugins function will be used inside the <em>the_content</em> hook. Using a WordPress function <a href="http://codex.WordPress.org/Function_Reference/add_filter"><em>add_filter()</em></a> we add a new filter to the <em>the_content</em> hook that is provided as the second argument.</p>
<p>Now, the code of our very first plugin is complete;</p>
<pre class="brush: php;">&lt;?php
/*
Plugin Name: My very first WordPress plugin
Plugin URI: http://coenjacobs.net/blog/create-WordPress-plugin/
Description: Corrects frequent misspellings in the word: WordPress
Version: 0.1
Author: Coen Jacobs
Author URI: http://coenjacobs.net
*/

function correct_misspellings($text)
{
 $misspellings = array(
 &quot;WordPress&quot;,
 &quot;WordPress&quot;,
 &quot;WordPress&quot;,
 );

 $text = str_replace($misspellings, 'WordPress', $text);

 return $text;
}

add_filter('the_content', 'correct_misspellings');

?&gt;</pre>
<p>When we save all this code in our <em>my-first-plugin.php</em> file and activate it through the WordPress backend, our plugin will start working immediately and start fixing those irritating misspellings in the name of our favorite blogging tool!</p>
<h3>Add some extra misspellings to the plugin</h3>
<p>Because we use a array filled with misspellings, we can easily add a new misspelling to be corrected by our plugin, just by adding a new string to the array. When we add a new line of one of these highlighted lines, we can add a new string that contains another misspelling and it will be corrected right away;</p>
<pre class="brush: php; highlight: [4,5,6];">function correct_misspellings($text)
{
 $misspellings = array(
 &quot;WordPress&quot;,
 &quot;WordPress&quot;,
 &quot;WordPress&quot;,
 );

 $text = str_replace($misspellings, 'WordPress', $text);

 return $text;
}</pre>
<h3>Disclaimer</h3>
<p>Off course, this plugin isn&#8217;t really usable since it replaces all misspellings everywhere throughout the site, even at certain places where you don&#8217;t want it to. But it shows that creating a plugin isn&#8217;t that hard and can be done in just a matter of minutes.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/create-wordpress-plugin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/create-wordpress-plugin</feedburner:origLink></item>
		<item>
		<title>WordPress plugins: Use conditional file loading</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/9fsm2X6205I/wordpress-plugins-conditional-file-loading</link>
		<comments>http://coenjacobs.net/blog/wordpress-plugins-conditional-file-loading#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:00:09 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[conditional file loading]]></category>
		<category><![CDATA[sociable]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=818</guid>
		<description><![CDATA[A post by Joost de Valk on Conditional Thickbox loading made me think on how this could be applied to a lot of plugins. For example, let&#8217;s take a look at Sociable.
Sociable is the plugin we all know, that shows those nice little chicklets to allow easy sharing of your articles via social networks and [...]]]></description>
			<content:encoded><![CDATA[<p>A post by Joost de Valk on <a href="http://yoast.com/conditional-thickbox-loading/">Conditional Thickbox loading</a> made me think on how this could be applied to a lot of plugins. For example, let&#8217;s take a look at Sociable.</p>
<p>Sociable is the plugin we all know, that shows those nice little chicklets to allow easy sharing of your articles via social networks and websites. Many people, including myself, aren&#8217;t showing these chicklets on their homepage or a static content page, but the stylesheet is loading! Why are we loading that stylesheet on those pages?</p>
<p>The function, including the hook, where Sociable loads its stylesheet is:</p>
<pre class="brush: php;">function sociable_css() {
 if (get_option('sociable_useiframe') == true) {
 global $sociablepluginpath;
 wp_enqueue_style('sociable-thickbox-css',$sociablepluginpath.'thickbox/thickbox.css');
 }
 if (get_option('sociable_usecss') == true) {
 global $sociablepluginpath;
 wp_enqueue_style('sociable-front-css',$sociablepluginpath.'sociable.css');
 }
}
add_action('wp_print_styles', 'sociable_css');</pre>
<p>This function is called at the <em>wp_print_styles</em> hook and will therefor be included in each and every WordPress page, even when Sociable isn&#8217;t going to be displayed on that page. When we combine the comparing of the Sociable conditionals to the conditionals of the current page, like Sociable does in the function <em>sociable_display_hook()</em>, we can check if there is a need to include the stylesheet or not.</p>
<p>I think comparing these two conditionals should be implemented in a new function since Sociable needs to check it twice (for a iframe/thickbox and a custom stylesheet), so there is no need for coding this loop twice.</p>
<p>Off course, the Sociable stylesheet (852 bytes) isn&#8217;t that big. But this technique is applicable on much more plugins than just Sociable.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/wordpress-plugins-conditional-file-loading/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/wordpress-plugins-conditional-file-loading</feedburner:origLink></item>
		<item>
		<title>Speedy development with WordPress Debug Theme</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/IiXeKcCHXzk/speed-development-wordpress-debug-theme</link>
		<comments>http://coenjacobs.net/blog/speed-development-wordpress-debug-theme#comments</comments>
		<pubDate>Wed, 14 Oct 2009 17:10:05 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[joost de valk]]></category>
		<category><![CDATA[wordpress debug theme]]></category>
		<category><![CDATA[wordpress themes]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=799</guid>
		<description><![CDATA[Have you ever come across a point where you notice there is something wrong with a WordPress theme, but you just don&#8217;t know where to look? I know I have been there, and so is Joost de Valk, who published the WordPress Debug Theme today.
The things that I really like about it are the variables [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever come across a point where you notice there is something wrong with a WordPress theme, but you just don&#8217;t know where to look? I know I have been there, and so is Joost de Valk, who published the <a href="http://yoast.com/WordPress-debug-theme/">WordPress Debug Theme</a> today.</p>
<p>The things that I really like about it are the variables that will be printed on a single post page, or single page. Just like Joost, I&#8217;ve been struggling while trying to get the right values out of variables, or simply have a little peek inside it to know which variable you are looking for. This theme makes it all a lot easier.</p>
<p>Just like someone posted in the comments, this theme will work great with the <a href="http://WordPress.org/extend/plugins/theme-tester/">Theme Tester plugin</a>. Joost is a real social developer, so please post some more comments on his blog when you find something that he might add to the WordPress Debug Theme.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/speed-development-wordpress-debug-theme/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/speed-development-wordpress-debug-theme</feedburner:origLink></item>
		<item>
		<title>Buma crawlers surrender before they even started</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/r4gv4Cj0-dw/buma-crawlers-surrender-before-starting</link>
		<comments>http://coenjacobs.net/blog/buma-crawlers-surrender-before-starting#comments</comments>
		<pubDate>Fri, 09 Oct 2009 16:55:57 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[block buma crawler]]></category>
		<category><![CDATA[buma/stemra]]></category>
		<category><![CDATA[teezir blocker]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=775</guid>
		<description><![CDATA[In the past few days I have received more email, tweets and retweets on Twitter and phone calls than in the month of September in total. The reason is the launch of my Teezir blocking WordPress plugin. Once I launched that plugin, people have been massively downloading it, loving it and sharing it with other [...]]]></description>
			<content:encoded><![CDATA[<p>In the past few days I have received more email, tweets and retweets on Twitter and phone calls than in the month of September in total. The reason is the launch of my <a href="http://coenjacobs.net/blog/steps-blocking-buma-crawlers-WordPress">Teezir blocking WordPress plugin</a>. Once I launched that plugin, people have been massively downloading it, loving it and sharing it with other people.</p>
<p>But today, we can celebrate a little victory and I am quite happy to be able to say that I will discontinue this plugin. Buma/Stemra canceled their actions (<a href="http://www.bumastemra.nl/nl-NL/OverBumaStemra/Actueel/BS+komt+internetgebruikers+tegemoet.htm">read the announcement in Dutch</a>), so paying to embed videos for non-commercial purposes is no longer required. I will publish one more update on this plugin within a couple of days, which will display a message on your administration pages that will recommend you to uninstall this plugin, so it won&#8217;t bother you anymore.</p>
<p>Once there is some more action required in this case, I&#8217;ll let you guys know and I will continue developing a plugin to block the crawlers on our blogs. Thanks again for sharing it with the world, let&#8217;s celebrate our victory!</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/buma-crawlers-surrender-before-starting/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/buma-crawlers-surrender-before-starting</feedburner:origLink></item>
		<item>
		<title>First steps in blocking BUMA crawlers in WordPress</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/FJErqM7hJdU/steps-blocking-buma-crawlers-wordpress</link>
		<comments>http://coenjacobs.net/blog/steps-blocking-buma-crawlers-wordpress#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:17:27 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[block buma crawler]]></category>
		<category><![CDATA[buma/stemra]]></category>
		<category><![CDATA[teezir blocker]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=725</guid>
		<description><![CDATA[UPDATE: Victory for us as bloggers, Buma crawlers surrendered!
Today was a sad day for lots of Dutch bloggers. The BUMA/STEMRA announced some new rules for embedding videos from YouTube for example. Starting next year, you have to pay for embedding videos on your blog that contain music that is licensed by BUMA/STEMRA. Yes, you can [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE: </strong>Victory for us as bloggers, <a href="http://coenjacobs.net/blog/buma-crawlers-surrender-before-starting">Buma crawlers surrendered</a>!</p>
<p>Today was a sad day for lots of Dutch bloggers. The <a href="http://en.wikipedia.org/wiki/Buma/Stemra">BUMA/STEMRA</a> announced some new rules for embedding videos from YouTube for example. Starting next year, you have to pay for embedding videos on your blog that contain music that is licensed by BUMA/STEMRA. Yes, you can believe your eyes, we have to pay for embedding videos containing music, kinda crazy isn&#8217;t it?</p>
<p>That&#8217;s why I started developing the Block Buma Crawler WordPress plugin (aka Teezir Blocker). This plugin is capable of keeping computers outside of your WordPress installation, that are blacklisted via this plugin. You can download the <a href="http://downloads.WordPress.org/plugin/block-buma-crawler.zip"><strong>Block Buma Crawler plugin</strong></a> right now, version 0.2 is available. Drop the folder that&#8217;s inside the download in your <em>/wp-content/plugins/</em>-folder, activate the plugin and enjoy!</p>
<h3>Version 0.1 / 0.2</h3>
<p>In it&#8217;s current form, the blacklist is managed by me and does only contain IP addresses that we know to belong to BUMA/STEMRA. But in the (near) future, new features will be rolled out to be able to blacklist hostnames and to share the items you add to the blacklist. Off course the blacklist will be moderated to keep it as clean as possible.</p>
<p>Version 0.2 comes with some caching options, to help protect the server that hosts the blacklist. Please update manual if you can, or wait for the automatic updater to allow you to update once WordPress.org hosts this plugin.</p>
<h3>Future versions</h3>
<p>The version I have been working on today has some more functionalities already, but it&#8217;s useless to release functions that I can&#8217;t fill a blacklist for right now. I&#8217;m spending some more time in making it even better, releasing it when we can use it.</p>
<p>Once we know more on the crawlers, we can add or change features of this plugin too. Time will tell what we can do to stop these crawlers, I honestly don&#8217;t know it all right now. Cooperation will be important to make this plugin succeed, so:</p>
<h3>Keep me posted!</h3>
<p>Please <a href="http://coenjacobs.net/contact">let me know</a>, or simply comment on this post if you have any tips/ideas for this plugin, all comments are welcome! As always, the plugin is free to download and use, but you can always <a href="http://coenjacobs.net/donate">donate</a> if you like my work!</p>
<p>You can <a href="http://feeds.feedburner.com/CoenJacobsWordPressAddict">follow this blog via RSS</a>, or follow me as <a href="http://twitter.com/coenjacobs">@coenjacobs</a> on Twitter to stay updated on this subject. Thanks for all the support so far!</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">http://coenjacobs.net/blog/buma-crawlers-surrender-before-startingb</div>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/steps-blocking-buma-crawlers-wordpress/feed</wfw:commentRss>
		<slash:comments>64</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/steps-blocking-buma-crawlers-wordpress</feedburner:origLink></item>
		<item>
		<title>Bijgespijkerd kicked off my carreer</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/Z62RdqFO_3o/bijgespijkerd-kicked-my-carreer</link>
		<comments>http://coenjacobs.net/blog/bijgespijkerd-kicked-my-carreer#comments</comments>
		<pubDate>Mon, 05 Oct 2009 23:53:38 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[bijgespijkerd]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[wordpress plugins]]></category>
		<category><![CDATA[wordpress scripts]]></category>
		<category><![CDATA[wordpress themes]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=683</guid>
		<description><![CDATA[For the Dutch blog Bijgespijkerd, I’ve build the entire WordPress installation, based on an existing design. Custom widgets and plugins are just a few parts of the development stage. And as soon as the blog went live, the development continued to improve the Bijgespijkerd-experience for the visitors, as well as the writing environment for the [...]]]></description>
			<content:encoded><![CDATA[<p>For the Dutch blog <a href="http://www.bijgespijkerd.nl/">Bijgespijkerd</a>, I’ve build the entire WordPress installation, based on an existing design. Custom widgets and plugins are just a few parts of the development stage. And as soon as the blog went live, the development continued to improve the Bijgespijkerd-experience for the visitors, as well as the writing environment for the authors. And we are still improving it every day!</p>
<p><img class="alignnone size-full wp-image-693" title="Bijgespijkerd" src="http://coenjacobs.net/wp-content/uploads/2009/10/bijgespijkerd_overview.jpg" alt="Bijgespijkerd" width="550" height="283" /></p>
<p>Bijgespijkerd has become a quite popular marketing blog, got a solid base of over 350 subscribers, over 1.500 comments and published over 500 articles in the first year. <a href="http://twitter.com/sjefkerkhofs">Sjef Kerkhofs</a> and <a href="http://twitter.com/vincentneve">Vincent Neve</a> founded the blog in late 2008, not really knowing what they could expect. Now they have one of the best upcoming marketing blogs in the Netherlands, got nominated for various blog awards and have won the Nobiles Blog Award in the start of 2009 which gave the blog a huge boost!</p>
<h3>What did I built for Bijgespijkerd?</h3>
<p>When I started at the Bijgespijkerd project, there was nothing but a sketch of what the layout should look like. After a few days, the first version of Bijgespijkerd kicked off and seemed to blend in properly in the world of marketing blogs. But the layout seemed a little old-fashioned as the focus was mainly on the content.</p>
<p>That&#8217;s where the fun really started when <a href="http://twitter.com/basbakker">Bas Bakker</a> generously donated a brand new design! The .psd layout was dropped in my inbox and I got to develop a new theme out of it, which I was more that happy to do off course!</p>
<p>Within the Bijgespijkerd project, I&#8217;ve used the following techniques:</p>
<ul>
<li><strong>Custom WordPress widgets</strong> like the video widget in the sidebar.</li>
<li>Build a <strong>custom WordPress theme</strong> out of a Photoshop design.</li>
<li>Develop <strong>custom WordPress plugins</strong>, mainly for the backend of the blog.</li>
</ul>
<p>As you can see, Bijgespijkerd was a project that many WordPress developers would love to start on. There&#8217;s nothing more satisfying than to raise a blog from HTML code, to a fully functional and successful blog!</p>
<h3>Starting my career, for real</h3>
<p>I was a freelancer for quite some time when I met Sjef and Vincent. We started working on the first versions of Bijgespijkerd and the rush started. For the first time in my career I had the feeling that I was working on a large project, working with experienced people and actually being appreciated for my knowledge.</p>
<blockquote><p><strong>Sjef Kerkhofs &#8211; </strong><strong>Bijgespijkerd f</strong><strong>ounder</strong>:<br />
&#8220;Coen developed the technique (in WordPress) behind our Marcom-blog <a href="http://www.bijgespijkerd.nl/">Bijgespijkerd.nl</a>. During the process he became ‘one of the guys’ because of his passion and creative thinking. At this point we don’t see him as a supplier anymore, but as one of the founders of our blog!&#8221;</p></blockquote>
<p>Today, I&#8217;m still working with Sjef and Vincent on various other projects. We are able to work together like we know each other for years!</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/bijgespijkerd-kicked-my-carreer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/bijgespijkerd-kicked-my-carreer</feedburner:origLink></item>
		<item>
		<title>Create wireframes to build WordPress themes faster</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/g5hA1kWFBy4/develop-wordpress-themes-faster-wireframe</link>
		<comments>http://coenjacobs.net/blog/develop-wordpress-themes-faster-wireframe#comments</comments>
		<pubDate>Fri, 02 Oct 2009 15:19:36 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wireframe]]></category>
		<category><![CDATA[wordpress themes]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=611</guid>
		<description><![CDATA[Creating a custom WordPress theme can be quite some work, even when you are pretty skilled with HTML, CSS and know your way through the theme requirements.
The best thing that I’ve done to reduce the time I need to develop a new WordPress theme, is to create a wireframe theme. A wireframe is nothing more [...]]]></description>
			<content:encoded><![CDATA[<p>Creating a custom WordPress theme can be quite some work, even when you are pretty skilled with HTML, CSS and know your way through the theme requirements.</p>
<p>The best thing that I’ve done to reduce the time I need to develop a new WordPress theme, is to create a wireframe theme. A wireframe is nothing more than a clean theme, with no layout at all. It’s just a bunch of ‘wires’ (borders mostly) connecting all the elements of your theme.</p>
<p>But the best part is that all the basic functionality is already there. So when I’m going to develop a new WordPress theme, I’m not going to start from scratch, but take a fresh copy of my wireframe and start building my new theme on top of it. I just have to take care of the looks and extra (non-standard) functions.</p>
<h3>How do I build my own wireframe?</h3>
<p>Just follow these steps and you will get your wireframe up and running in no time:</p>
<ul>
<li><strong>Draw a sketch</strong> of what you&#8217;re going to build. Yes, on paper. Might sound a bit odd, but it gives you a nice overview of possible challenges to you have to overcome. Sketching forces me to think a bit different about the same problems.</li>
<li><strong>Design the required pages</strong> in either Photoshop, Fireworks or any other application you like. If you feel the sketches are more than enough to get you going with the HTML, that will do too.</li>
<li><strong>Build a static HTML page</strong> of each page that is really different than the others. If you keep your wireframe really basic, you can also choose just to markup a single page for now.</li>
<li><strong>Build a basic working WordPress theme</strong> that contains all the basic functions of a WordPress theme.</li>
<li><strong>Add specific functionality</strong> that you might need by adding custom functions in the <em>functions.php</em> file.</li>
</ul>
<p>A wireframe is unique to any developer, to suit some specific needs or habits. That&#8217;s why with writing this tutorial, it is really hard to help each and every developer at the same time. You should look at your coding habits and support them with your wireframe. Otherwise you might end up adding more time to the development stage instead of reducing that amount of time.</p>
<h3>What should a good wireframe theme be capable of?</h3>
<p>I like my wireframe to be as pure as possible. Nearly no styling will be applied, just a few borders to maintain the overview in development stages. Besides that, it should have all the functionality that you desire from your WordPress themes. Imagine (possibly multiple) widget-ready sidebars, extra added functions and whatever you can think of.</p>
<p>When you are developing your own custom wireframe theme, you should always keep your goal in mind. Is the wireframe really reducing the development time? That is the goal of a good wireframe, so when people ask me; what is the perfect wireframe? The answer is quite simple: A perfect wireframe suits your needs while developing a new WordPress theme and reduces the development time for every single WordPress theme that you build on top of the wireframe.</p>
<p>My wireframe is constantly being tweaked. When I come across a modification that I have to make more than once to the wireframe while developing a new theme, it is likely that I will change it in the wireframe. You should always keep in mind that you decide what’s best for your wireframe.</p>
<h3>What does your wireframe theme look like?</h3>
<p>Have you built your own wireframe and what does it look like? Does it have any customized functionality, or any other spectacular innovations? Please let me know, or us give a sneak peek under the hood of your WordPress wireframe theme!</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/develop-wordpress-themes-faster-wireframe/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/develop-wordpress-themes-faster-wireframe</feedburner:origLink></item>
		<item>
		<title>New WordPress plugin: Creative Commons Suite</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/1ZugDyxLpVk/wordpress-plugin-creative-commons-suite</link>
		<comments>http://coenjacobs.net/blog/wordpress-plugin-creative-commons-suite#comments</comments>
		<pubDate>Tue, 29 Sep 2009 22:10:15 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[creative commons suite]]></category>
		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=598</guid>
		<description><![CDATA[My Creative Commons Suite plugin has been released in the WordPress plugin database. This plugin makes it really easy to add a link to the Creative Commons license you desire, to protect your content.
Yes, I know that there are other plugins around that do the same. But this plugin has more options and even more [...]]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://coenjacobs.net/WordPress/plugins/creative-commons-suite">Creative Commons Suite plugin</a> has been released in the WordPress plugin database. This plugin makes it really easy to add a link to the Creative Commons license you desire, to protect your content.</p>
<p>Yes, I know that there are other plugins around that do the same. But this plugin has more options and even more options will be added in the near future.</p>
<blockquote><p><strong>Share, Remix, Reuse — Legally</strong><br />
Creative Commons is a nonprofit organization that increases sharing and improves collaboration.</p></blockquote>
<p>With <a href="http://creativecommons.org">Creative Commons</a> you are able to publish your content within a license that allows other people to use it, within the limits that you set.</p>
<h3>Future plans</h3>
<p>I&#8217;m planning on adding support for displaying a text in the footer of your blog, so there is one central spot where the Creative Commons license is presented.</p>
<p>Right after that, a feature will be added to provide a tag in the <em>&lt;head&gt;</em> of each page, so machine based visitors can read the license too.</p>
<h3>Support</h3>
<p>Support for this plugin is available on the WordPress support forums. Please use <a onclick="javascript:pageTracker._trackPageview('/outbound/article/WordPress.org');" href="http://WordPress.org/tags/creative-commons-suite">this plugins tag when posting</a> to maintain the overview, ensure that I read your topic and receive support for this plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/wordpress-plugin-creative-commons-suite/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/wordpress-plugin-creative-commons-suite</feedburner:origLink></item>
		<item>
		<title>I’m not attending WordCamp Netherlands 2009</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/ZljskNAAJ0Q/not-attending-wordcamp-netherlands-2009</link>
		<comments>http://coenjacobs.net/blog/not-attending-wordcamp-netherlands-2009#comments</comments>
		<pubDate>Mon, 28 Sep 2009 13:22:16 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=575</guid>
		<description><![CDATA[Thanks for all the feedback that I&#8217;ve received on my WordPress articles, plugins and other stuff so far since the start of this blog. It really keeps me going and gives me the feeling that people really like what I&#8217;m doing.
The diamond on the crown of this all was Erno Hannink asking me to join [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks for all the feedback that I&#8217;ve received on my WordPress articles, plugins and other stuff so far since the start of this blog. It really keeps me going and gives me the feeling that people really like what I&#8217;m doing.</p>
<p>The diamond on the crown of this all was <a href="http://twitter.com/ernohannink">Erno Hannink</a> asking me to join the Genius Bar as adviser for WordPress questions at <a href="http://wordcampnl.org/">WordCamp Netherlands 2009</a>. It really excited me that people actually wanted me to give them support on WordPress at such a major event! But then, the party was over before it even started.</p>
<p>I checked my schedule for the weekend that WordCamp Netherlands is being held and I immediately spotted why I didn&#8217;t subscribe to attend WordCamp in the first place. My completely filled agenda for that weekend isn&#8217;t allowing me to go to this major WordPress event, in my own country.</p>
<p>But I&#8217;m sure the attending WordPress gurus (check out the <a href="http://wordcampnl.org/speakers/">speakers</a>) will be able to help all attendees with their WordPress problems and questions. It&#8217;s just to bad that I can&#8217;t be one of them and be part of the joy. Maybe next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/not-attending-wordcamp-netherlands-2009/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/not-attending-wordcamp-netherlands-2009</feedburner:origLink></item>
		<item>
		<title>Easily customize your WordPress comments looks</title>
		<link>http://feedproxy.google.com/~r/CoenJacobsWordPressAddict/~3/DDGuLOcAabU/easily-customize-wordpress-comments</link>
		<comments>http://coenjacobs.net/blog/easily-customize-wordpress-comments#comments</comments>
		<pubDate>Sat, 26 Sep 2009 17:14:09 +0000</pubDate>
		<dc:creator>Coen Jacobs</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[wordpress scripts]]></category>

		<guid isPermaLink="false">http://coenjacobs.net/?p=535</guid>
		<description><![CDATA[As you might know, the function that displays the comments on your WordPress blog (wp_list_comments()) is declared inside the WordPress core. Have you ever wondered how to customize the look of your WordPress comments within your theme and without having to change anything to the core? It is possible and can be done easily.
But many [...]]]></description>
			<content:encoded><![CDATA[<p>As you might know, the function that displays the comments on your WordPress blog (<a href="http://codex.WordPress.org/Template_Tags/wp_list_comments">wp_list_comments()</a>) is declared inside the WordPress core. Have you ever wondered how to customize the look of your WordPress comments within your theme and without having to change anything to the core? It is possible and can be done easily.</p>
<p>But many people are changing the core files, because they simply don&#8217;t know any other way to change the default layout your comments have. Once they have to update their WordPress core, the changes are lost and need to be applied again!</p>
<p>By default, the call to wp_list_comments() in <em>comments.php</em> looks like this;</p>
<pre class="brush: php;">&lt;ul&gt;
&lt;?php wp_list_comments(); ?&gt;
&lt;/ul&gt;</pre>
<p>Using it this way, it will use the default formatting on the comments. We can provide some arguments to that function, so we can change the looks of our comments. When we look at the arguments we can provide, there is the <em>callback</em>-argument;</p>
<blockquote><p><strong>callback</strong> &#8211; (<em>string</em>) The name of a custom function to use to display each comment. Defaults to null. Using this will make your custom function get called to display each comment, bypassing all internal WordPress functionality in this respect. Use to customize comments display for extreme changes to the HTML layout. Not recommended.</p></blockquote>
<p>It says doing this is not recommended, but it is the way to change the looks of your comments without changing WordPress core files! We can list our function to be executed to display each function like this;</p>
<pre class="brush: php;">&lt;ul&gt;
&lt;?php wp_list_comments('callback=theme_display_comments'); ?&gt;
&lt;/ul&gt;</pre>
<p>This way, the function theme_display_comments() will be used to display each comment, skipping the normal WordPress routines to do this. Because we skip those routines, we have to take a closer look at our function to make it sure it will display the comments properly. The WordPress codex <a href="http://codex.WordPress.org/Template_Tags/wp_list_comments#Comments_Only_With_A_Custom_Comment_Display">provides us with the following example</a>, that should get you started on creating custom looks for your comments;</p>
<pre class="brush: php;">function mytheme_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?&gt;
   &lt;li &lt;?php comment_class(); ?&gt; id=&quot;li-comment-&lt;?php comment_ID() ?&gt;&quot;&gt;
     &lt;div id=&quot;comment-&lt;?php comment_ID(); ?&gt;&quot;&gt;
      &lt;div&gt;
         &lt;?php echo get_avatar($comment,$size='48',$default='&lt;path_to_url&gt;' ); ?&gt;

         &lt;?php printf(__('&lt;cite&gt;%s&lt;/cite&gt; &lt;span&gt;says:&lt;/span&gt;'), get_comment_author_link()) ?&gt;
      &lt;/div&gt;
      &lt;?php if ($comment-&gt;comment_approved == '0') : ?&gt;
         &lt;em&gt;&lt;?php _e('Your comment is awaiting moderation.') ?&gt;&lt;/em&gt;
         &lt;br /&gt;
      &lt;?php endif; ?&gt;

      &lt;div&gt;&lt;a href=&quot;&lt;?php echo htmlspecialchars( get_comment_link( $comment-&gt;comment_ID ) ) ?&gt;&quot;&gt;&lt;?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?&gt;&lt;/a&gt;&lt;?php edit_comment_link(__('(Edit)'),'  ','') ?&gt;&lt;/div&gt;

      &lt;?php comment_text() ?&gt;

      &lt;div&gt;
         &lt;?php comment_reply_link(array_merge( $args, array('depth' =&gt; $depth, 'max_depth' =&gt; $args['max_depth']))) ?&gt;
      &lt;/div&gt;
     &lt;/div&gt;
&lt;?php
        }</pre>
<p>When we put this function in the <em>functions.php</em>-file of our theme, we can customize it (and thus modify the looks of our comments) and save these modifications, so they will be protected from being overwritten by a WordPress core update.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenjacobs.net/blog/easily-customize-wordpress-comments/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://coenjacobs.net/blog/easily-customize-wordpress-comments</feedburner:origLink></item>
	</channel>
</rss>
