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

<channel>
	<title>To Wonder Multimedia</title>
	<atom:link href="http://www.to-wonder.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.to-wonder.com</link>
	<description>Development &#38; Design</description>
	<lastBuildDate>Tue, 31 Jan 2012 09:00:41 +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" />
		<item>
		<title>Pseudo elementen</title>
		<link>http://www.to-wonder.com/2012/01/pseudo-elementen/</link>
		<comments>http://www.to-wonder.com/2012/01/pseudo-elementen/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 09:00:41 +0000</pubDate>
		<dc:creator>Luc Princen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[pseudo elements]]></category>

		<guid isPermaLink="false">http://www.to-wonder.com/?p=1314</guid>
		<description><![CDATA[Laatst was ik een simpele en geimproviseerde CSS-les aan het geven aan Daan Janssen van Motief:Collectief. Een aparte ervaring, aangezien ik dat al een tijdje niet meer echt gedaan had. Het dwong me om de basis spelregels van CSS op een rijtje te zetten en eenvoudiger te bekijken. &#160; Eigenlijk ging alles goed, tot we... <a href="http://www.to-wonder.com/2012/01/pseudo-elementen/" style="text-decoration:none;font-size:11px;font-weight:bold">&#160;MEER &#8250;&#160;&#160;</a>]]></description>
			<content:encoded><![CDATA[<p>Laatst was ik een simpele en geimproviseerde CSS-les aan het geven aan Daan Janssen van <a href="http://www.motiefcollectief.com" target="_blank">Motief:Collectief</a>. Een aparte ervaring, aangezien ik dat al een tijdje niet meer echt gedaan had. Het dwong me om de basis spelregels van CSS op een rijtje te zetten en eenvoudiger te bekijken.</p>
<p>&nbsp;</p>
<p>Eigenlijk ging alles goed, tot we bij Pseudo elementen aankwamen, niet dat Daan het niet snapte, maar ik wist eerst even niet hoe ik het uitgelegd moest krijgen. Het kan immers heel veel zijn. Een pseudo-element kun je gebruiken voor een link om stijl te verbinden aan bepaalde statuses (hover, actief, eerder bezocht). Maar met CSS3 kun je psuedo-classes ook gebruiken om specifieke acties / stijlregels door te voeren voor en na een element, maar ook op specifieke kinder-elementen. Daarom een kort overzicht van CSS3 pseudo elementen.</p>
<p>&nbsp;</p>
<h2>:nth-child(N)</h2>
<p><img src="http://www.to-wonder.com/wp-content/uploads/2012/01/Schermafbeelding-2012-01-30-om-16.48.55.png" alt="" title="Schermafbeelding 2012-01-30 om 16.48.55" class="alignnone size-full wp-image-1452" /></p>
<p>We hebben allemaal wel een&#8217;s een gestreepte tabel gezien. Dit kan onder andere bereikt worden door met PHP (of een andere server taal) bij iedere oneven of even rij een css klasse toe te voegen, maar het kan dus ook gewoon direct in CSS. Met de :nth-child(N) optie. In principe wijst de N tussen de haken naar het nummer van het element binnen de parent, dus stel dat je deze html hebt:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    &lt;div id=&quot;parent&quot;&gt;
        &lt;div class=&quot;child&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;child&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;child&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;child&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;</pre></div></div>

<p>Dan zou <strong>.child:nth-child(3)</strong> de derde div binnen #parent aanspreken. Maar met de expressie 2n+1 bereiken we alle oneven aantallen, waardoor we alle oneven onderdelen van een tabel ook een alternatieve achtergrond kleur zouden kunnen geven. Deze expressies zijn duidelijker uitgelegd in <a href="http://devsnippets.com/article/5-advanced-css-pseudo-class.html" target="_blank">dit artikel van DevSnippets</a></p>
<p>&nbsp;</p>
<h2>:first-child, :last-child</h2>
<p>Hoewel deze vrijwel hetzelfde zijn als hierboven, zijn ze de moeite van het vermelden waard. Stel, onze child div&#8217;s van zojuist hebben een <strong>border van 1px</strong>, maar je wilt niet dat de bovenste div een border heeft, dan kun je simpelweg dit doen:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #6666ff;">.child</span><span style="color: #3333ff;">:first-child</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>&nbsp;</p>
<h2>:after &amp; :before</h2>
<p>Dit zijn belangrijke selectoren. Ze geven je de mogelijkheid om -zonder nieuwe divs / spans of andere meuk toe te voegen- een div voor en na hij benoemd wordt nog te stijlen. Je zou bijvoorbeeld kunnen zeggen:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #cc00cc;">#parent</span><span style="color: #3333ff;">:before</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">clear</span><span style="color: #00AA00;">:</span><span style="color: #993333;">both</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Als je bij de div #parent je floats moet clearen. Maar het kan nog veel meer. Stel ik wil onder en boven mijn #parent div een schaduwrandje toevoegen, dan kan ik een grote achtergrondafbeelding maken, maar als #parent flexibel moet zijn in hoogte gaat dit al niet op. Dan kun je dus dit doen:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #cc00cc;">#parent</span><span style="color: #00AA00;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
            <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span> <span style="color: #933;">10px</span> <span style="color: #933;">20px</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
            <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
&nbsp;
    <span style="color: #cc00cc;">#parent</span><span style="color: #3333ff;">:before</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#parent</span><span style="color: #3333ff;">:after</span><span style="color: #00AA00;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
            <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">120px</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* rekening houdend met de padding van het moederelement */</span>
            <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
            <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">images/shade_top.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">repeat-x</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
&nbsp;
    <span style="color: #cc00cc;">#parent</span><span style="color: #3333ff;">:after</span><span style="color: #00AA00;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">images/shade_bottom.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>&nbsp;</p>
<h2>:first-line &amp; :first-letter</h2>
<p>Het spreken vrijwel voor zich, maar ze spreken de eerste lijn of de eerste letter van een element aan. Altijd mooi om een inleiding mee aan te geven. Je kunt er vrijwel ieder text-gebaseerde stijling techniek op loslaten. <a href="http://www.w3.org/wiki/CSS/Selectors/pseudo-elements/:first-line" target="_blank">hier vind je meer info over het first-line element</a></p>
<p>&nbsp;</p>
<h2>En Internet Explorer dan?</h2>
<p>Ik hoor de meeste mensen zeggen dat oudere versies van Internet explorer deze elementen nog niet niet altijd (of in het geval van :before en :after, slecht) ondersteund. En dat is helaas waar. Gelukkig is er, <a href="http://www.to-wonder.com/2012/01/html5-breed-inzetten/" title="Html5 breed inzetten">net als voor vrijwel alle HTML5 elementen inmiddels een polyfill</a>; een manier om -voor niet capabele browsers- de problemen op te vangen en op te lossen met javascript of een andere technologie.</p>
<p>&nbsp;<br />
In het geval van pseudo-elementen is deze technologie javascript en heet de library <a href="http://selectivizr.com/" target="_blank">Selectivizr</a>. Het werkt niet alleen met de bovengenoemde elementen, maar met nog veel meer pseudoclasses en nieuwe CSS3 attributen en is zeker een inspectie waard. Ik hoop wel dat de <a href="http://www.to-wonder.com/2011/12/het-wonder-is-geschied/" title="Het wonder is geschied!">beloofde update van Microsoft Internet Explorers</a> snel gaat volgen, het blijft vervelend om onder 50% van mijn blogposts nog paragrafen vol met &#8216;fixes voor Internet Explorer&#8217; te moeten typen&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.to-wonder.com/2012/01/pseudo-elementen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Een ontwikkelomgeving met WordPress</title>
		<link>http://www.to-wonder.com/2012/01/een-ontwikkelomgeving-met-wordpress-mu/</link>
		<comments>http://www.to-wonder.com/2012/01/een-ontwikkelomgeving-met-wordpress-mu/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 09:00:55 +0000</pubDate>
		<dc:creator>Luc Princen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.to-wonder.com/?p=1414</guid>
		<description><![CDATA[Op dit moment heb ik op mijn server zo&#8217;n 20 WordPress installaties draaien, allemaal losse versies met ieder een eigen database. Da&#8217;s behoorlijk veel, neemt ruimte in en in de huidige opstelling moet ik voor ieder nieuw WordPress project opnieuw WordPress installeren. Daarom ben ik afgelopen weekend gaan kijken of dit anders kon. &#160; Ik... <a href="http://www.to-wonder.com/2012/01/een-ontwikkelomgeving-met-wordpress-mu/" style="text-decoration:none;font-size:11px;font-weight:bold">&#160;MEER &#8250;&#160;&#160;</a>]]></description>
			<content:encoded><![CDATA[<p>Op dit moment heb ik op mijn server zo&#8217;n 20 WordPress installaties draaien, allemaal losse versies met ieder een eigen database. Da&#8217;s behoorlijk veel, neemt ruimte in en in de huidige opstelling moet ik voor ieder nieuw WordPress project opnieuw WordPress installeren. Daarom ben ik afgelopen weekend gaan kijken of dit anders kon.</p>
<p>&nbsp;</p>
<p>Ik ben uiteindelijk op twee opties gekomen. Optie 1 is om naar <a href="http://managewp.com/" target="_blank">managewp.com</a> te gaan en een betaalde beheeromgeving te creeëren waarin ik meerdere sites bij kan houden, clonen en monitoren. Een erg mooi pakket met features voor zeer schappelijke prijzen. Mijn andere optie was om WordPress multisite te gaan gebruiken, de optie waar ik uiteindelijk voor gekozen heb.</p>
<p>&nbsp;</p>
<p>WordPress MultiSite is al een hele tijd beschikbaar als een aparte download (WordPress MU) en het idee van de laatste twee versies van WordPress is om deze twee versies te herenigen en iedere WordPress installatie in principe geschikt te maken voor meerdere websites.</p>
<p>&nbsp;</p>
<p>Het fijne hieraan is dat je met één druk op de knop een nieuwe testomgeving voor een klant kunt maken, waarbij alle instellingen meteen al goed staan en je direct aan een theme / plugin kunt gaan werken. Ook bespaar je je server weer kostbare kopieertijd, de &#8220;core&#8221; bestanden zijn er immers al.</p>
<p>&nbsp;</p>
<h2>Hoe op te zetten</h2>
<p>De <a href="http://codex.wordpress.org/Create_A_Network" target="_blank">WordPress codex</a> heeft hier een erg uitgebreide beschrijving over. Om je wat leestijd te besparen komt hier mijn korte versie:<br />
&nbsp;</p>
<ul>
<li>Begin met een verse installatie, da&#8217;s wel zo makkelijk</li>
<li>Voeg deze regel toe aan de wp_config.php: <strong>define(&#8216;WP_ALLOW_MULTISITE&#8217;, true);</strong></li>
<li>Ga naar de Admin en klik onder Tools op &#8220;Network Setup&#8221; en volg de installatie</li>
<li>That&#8217;s it!</li>
</ul>
<p>&nbsp;<br />
Mocht je (net als ik) het proberen op een localhost, zorg dan dat er geen poort achter de url staat, de multisite omgeving weigert hier in te werken.</p>
<p>&nbsp;<br />
Nu kun je super eenvoudig nieuwe testwebsites aanmaken. Als de tijd komt om de testwebsite in productiemodus op zijn eigen server te gooien zet je simpelweg een verse WordPress installatie op de production-server en gebruik je de export / import functionaliteiten in de admin (dit is beter dan de complete database kopieren van de multi-site omgeving). </p>
<p>&nbsp;</p>
<h2>Handige plugins</h2>
<p>Hoewel WordPress MultiSite al erg fijn is, is extra functionaliteit altijd mooi meegenomen. Daarom een lijstje plugins, speciaal voor MultiSite:<br />
&nbsp;</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/wpmu-new-blog-defaults" target="_blank">New Blog Defaults</a> Bij het aanmaken van een nieuwe site, verzet je altijd wat instellingen, dat kun je nu automatiseren.</li>
<li><a href="http://wordpress.org/extend/plugins/multipost-mu/" target="_blank">MultiPost</a> Op meerdere websites tegelijk een post plaatsen kan nu ook heel eenvoudig. Altijd handig voor &#8216;filler posts&#8217;</li>
<li><a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/" target="_blank">Domain Mapping</a> Mocht je nog unieke domeinen aan je websites willen hangen, dan is dit de plugin om het voor elkaar te krijgen</li>
<li><a href="http://wordpress.org/extend/plugins/multisite-dashboard-switcher/" target="_blank">Dashboard Switcher</a> Als &#8220;super-admin&#8221; heb je al de beschikking over een fijn admin-bar menu, maar dit menu maakt switchen naar een andere website binnen je ontwikkelomgeving een stuk makkelijker</li>
</ul>
<p>&nbsp;<br />
Succes!<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.to-wonder.com/2012/01/een-ontwikkelomgeving-met-wordpress-mu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hoe te bloggen</title>
		<link>http://www.to-wonder.com/2012/01/hoe-te-bloggen/</link>
		<comments>http://www.to-wonder.com/2012/01/hoe-te-bloggen/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 09:00:57 +0000</pubDate>
		<dc:creator>Luc Princen</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[bloggen]]></category>
		<category><![CDATA[schrijven]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.to-wonder.com/?p=1308</guid>
		<description><![CDATA[Aangezien ik zelf nog maar vanaf eind oktober op constructieve wijze aan het bloggen ben, kan de titel een beetje arrogant opgevat te worden. Ik wil niet zeggen dat ik 100% weet hoe je jezelf aan het bloggen verslaafd kunt maken, maar ik wil in deze blogpost in ieder geval uiteen zetten wat bij mij... <a href="http://www.to-wonder.com/2012/01/hoe-te-bloggen/" style="text-decoration:none;font-size:11px;font-weight:bold">&#160;MEER &#8250;&#160;&#160;</a>]]></description>
			<content:encoded><![CDATA[<p>Aangezien ik zelf nog maar vanaf eind oktober op constructieve wijze aan het bloggen ben, kan de titel een beetje arrogant opgevat te worden. Ik wil niet zeggen dat ik 100% weet hoe je jezelf aan het bloggen verslaafd kunt maken, maar ik wil in deze blogpost in ieder geval uiteen zetten wat bij mij werkte. Daarom vier tips om je te helpen met het regelmatig schrijven van blogposts.</p>
<p>&nbsp;</p>
<h2>Schrijf over wat je leert</h2>
<p>Voorheen heb ik ook al erg vaak geprobeerd om mezelf verslaafd te raken aan het bloggen; het schrijven vind ik een rustgevende bezigheid alleen mijn probleem was dat ik geen onderwerpen kon vinden. Tot ik tot de realisatie kwam dat het interessant was om te bloggen over wat je leert. Immers zit ik in een vakgebied waar iedere dag weer veel in gebeurt. Daarnaast is het (vind ik) een taak van ontwerpers en ontwikkelaars om bij te blijven. Nieuwe technieken, programma&#8217;s en tools te leren kennen en vervolgens beoordelen of je er mee verder wilt gaan. Daarnaast pusht het me inmiddels om op zoek te gaan naar nieuwe technieken. <a href="http://www.to-wonder.com/2011/12/node-js/" title="Node.Js">Mijn &#8216;onderzoekje&#8217; naar Node.js</a> zou ik nooit hebben gedaan als ik er geen blogpost over wilde schrijven. Inmiddels ben ik er van overtuigd dat het schrijven over wat je leert, je niet alleen verslaafd kan maken aan het bloggen, maar je ook een betere designer / developer maakt.</p>
<p>&nbsp;</p>
<h2>Schrijf vooruit</h2>
<p>Op het moment dat deze blogpost uitkomt op woensdag 25 januari ben ik gewoon aan het werk voor een opdrachtgever, maar ik lig dit nu (zaterdag 21 januari 21u) te schrijven, al liggend op de bank met een biertje naast me. Meestal schrijf ik het gros van mijn blogposts in het weekend en gebruik ik de schedualed posts functie van WordPress om mijn website vrijwel dagelijks te voorzien van verse content. Op die manier hoef ik door de weeks mijn gewone werk niet te onderbreken en heb ik een mooie manier om (in de vorm van blogposts) een overview te maken van de nieuwe dingen die ik geleerd heb die week.</p>
<p>&nbsp;</p>
<h2>Gebruik Evernote</h2>
<p>Ideeën voor blogposts komen vaak vanuit andere websites, links of gesprekken. Een platform waar je die ideeën snel kunt opschrijven en altijd weer terug kunt vinden is daarom belangrijk. Ik gebruikte Evernote al voor een hele hoop dingen zoals een read-it-later lijst, code snippets, kennis en zelfs wat administratief werk. Voor mij was het dus geen probleem om hier ook ideeën voor blogposts in bij te houden. Ik kan me voorstellen dat dit voor een hoop mensen even wennen is, maar geloof me <a href="http://evernote.com/" target="_blank">Evernote downloaden</a> maakt een hele hoop dingen gestroomlijnder.</p>
<p>&nbsp;</p>
<h2>Wordt een open source bedrijf</h2>
<p><a href="http://www.to-wonder.com/2012/01/goed-twittergebruik/" title="Vier voorbeelden van goed twittergebruik">In mijn blogpost over goed twittergebruik</a> stel ik 37 Signals als een van de vier voorbeelden. Dit omdat de website van dit bedrijf een erg goed blog heeft; <a href="http://37signals.com/svn" target="_blank">Signal vs Noise</a>. Hierin wordt erg open gedaan, niet alleen over de kennis die het bedrijf vergaard heeft, maar ook over bedrijfsstrategieën, problemenen die ze vaak tegen komen en andere bedrijfsinformatie. En dat voorbeeld probeer ik ook te volgen; wie weet voor wie die informatie handig kan zijn. Van het fabeltje dat concurrentie je op die manier kapot kan maken heb ik nog niks gemerkt. Overigens heeft de baas van 37 Signals Jason Fried hier een <a href="http://www.businessinnovationfactory.com/iss/video/bif4-jason-fried" target="_blank">erg toffe presentatie over gedaan</a></p>
<p>&nbsp;</p>
<h2>Conclusie</h2>
<p>Als je schrijven echt heel vervelend vindt, kun je het verslaafd raken aan bloggen sowieso een beetje vergeten, maar als je schrijven niet erg (of zelfs leuk) vindt en je vindt het -net als ik- leuk om nog even rustig over dingen na te denken dan kunnen de bovenstaande tips wellicht behulpzaam zijn! Succes!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.to-wonder.com/2012/01/hoe-te-bloggen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Theme Tips: de geavanceerde loop</title>
		<link>http://www.to-wonder.com/2012/01/theme-tips-de-geavanceerde-loop/</link>
		<comments>http://www.to-wonder.com/2012/01/theme-tips-de-geavanceerde-loop/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 09:00:43 +0000</pubDate>
		<dc:creator>Luc Princen</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[advanced]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.to-wonder.com/?p=1339</guid>
		<description><![CDATA[Vorige week hebben we gekeken naar de absolute basics van The Loop, we hebben daarnaast gekeken naar de query_posts methode, die je in staat stelt om de loop te besturen / te verfijnen. In deze blogpost ga ik wat dieper in op de query_posts methode en hoe je ingewikkelde queries kunt maken. &#160; Naast dat... <a href="http://www.to-wonder.com/2012/01/theme-tips-de-geavanceerde-loop/" style="text-decoration:none;font-size:11px;font-weight:bold">&#160;MEER &#8250;&#160;&#160;</a>]]></description>
			<content:encoded><![CDATA[<p>Vorige week hebben we gekeken naar de absolute basics van The Loop, we hebben daarnaast gekeken naar de <strong>query_posts</strong> methode, die je in staat stelt om de loop te besturen / te verfijnen. In deze blogpost ga ik wat dieper in op de query_posts methode en hoe je ingewikkelde queries kunt maken.</p>
<p>&nbsp;</p>
<p>Naast dat posts zijn te doorzoeken en filteren op elementen in de posts-tabel (zoals ID, post_title, post_type of post_date), zijn posts ook te doorzoeken aan de hand van hun extra velden (meta values) en hun taxonomies (indeling mechanismen als categorieën en tags). Als WordPress ontwikkelaar kun je dus te maken krijgen met ingewikkelde vraagstukken zoals; &#8220;ik wil alle posts in de categorieën projecten en producten, waarbij het extraveld &#8216;kosten&#8217; niet leeg is&#8221;. Als we puur op mysql gebied gaan kijken hebben we het hier over een erg ingewikkelde query met meerder JOIN-functies. In WordPress is dit echter relatief eenvoudig. </p>
<p>&nbsp;</p>
<p>Hoewel de vraagstelling hierboven zeer specifiek was, gaan we eerst kijken naar een eenvoudigere manier van filteren, een kleine <i>recap</i> van vorige week. Om alle posts in de categorie projecten te halen kunnen we kijken naar het ID van de taxonomie &#8220;categorieën&#8221; naar de term &#8220;projecten&#8221;, dat klinkt ingewikkeld en het is ook redelijk omslachtig, maar we beginnen bij het begin. Stel mijn categorie &#8220;projecten&#8221; heeft het ID 12, dan krijg je dus dit:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cat'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'12'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//stuur de query variabelen mee met de functie query_posts()</span>
    query_posts<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;<br />
Zoals gezegd kan het wat minder omslachtig en kunnen we gewoon gebruik maken van de slug van die categorie (in dit geval is dat &#8220;projecten&#8221;, zonder hoofdletters):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'category_name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'projecten'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    query_posts<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;<br />
Dat ziet er al een stuk beter uit! Maar stel nu dat &#8216;projecten&#8217; geen categorie is maar een post_type en we willen filteren op een custom taxonomy die we zelf hebben aangemaakt. Mijn nieuwe post type projecten wordt namelijk niet geordend met categorieën, maar per klant. Dan kan ik de slugs van mijn eigen taxonomy gebruiken om te filteren, zoals ik ook &#8216;cat&#8217; of &#8216;category_name&#8217; meegeef kan ik dus filteren op &#8216;klanten&#8217;. Daarnaast moeten we ook nog rekening houden met het posttype:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                    <span style="color: #0000ff;">'post_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'projecten'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'klanten'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'to-wonder'</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;<br />
Nu haal ik alle projecten binnen met als klant &#8220;To Wonder&#8221;, maar het kan nog een stukje spannender door meerdere klanten toe te voegen. Let wel; de onderstaande query zoekt naar projecten waarbij zowel &#8220;to wonder&#8221; als &#8220;motief collectief&#8221; een klant zijn:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                    <span style="color: #0000ff;">'post_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'projecten'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'klanten'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'to-wonder'</span><span style="color: #339933;">,</span> motief<span style="color: #339933;">-</span>collectief<span style="color: #0000ff;">'
    );</span></pre></div></div>

<p>&nbsp;<br />
Nu hebben we al een aardig ingewikkelde query weten te maken, maar als we echt de zoekopdracht willen gaan doen die bovenaan deze blogpost is ingesteld, hebben we nog wat andere variabele nodig die we mee moeten sturen, namelijk <strong>tax_query</strong> en <strong>meta_query</strong>.</p>
<p>&nbsp;<br />
tax_query en meta_query zijn twee variabelen die in de <strong>query_posts</strong>, <strong>get_posts</strong> en met <strong>WP QUERY</strong> meegestuurd kunnen worden, voorlopig werken wij even met query_posts. In feite zijn het gewoon arrays met extra informatie. Dus als ik alle posts terug wil krijgen van de klanten &#8220;to wonder&#8221; OF &#8220;motief collectief&#8221; kan ik dit gebruiken:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                    <span style="color: #0000ff;">'relation'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'OR'</span><span style="color: #339933;">,</span>
                    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
	                    <span style="color: #0000ff;">'taxonomy'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'klanten'</span><span style="color: #339933;">,</span>
	                    <span style="color: #0000ff;">'field'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'slug'</span><span style="color: #339933;">,</span>
                            <span style="color: #0000ff;">'terms'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'to-wonder, '</span>motief<span style="color: #339933;">-</span>collectief<span style="color: #0000ff;">'),
	                    '</span>operator<span style="color: #0000ff;">' =&gt; '</span>IN<span style="color: #0000ff;">'
                    )
    );	
&nbsp;
    query_posts('</span>tax_query<span style="color: #0000ff;">' =&gt; $args);</span></pre></div></div>

<p>&nbsp;<br />
Laten we even rustig door de bovenstaande code heenlopen om te kijken wat er gebeurt: Als eerst wordt er een <strong>relation</strong> gesteld, in dit geval &#8216;OR&#8217;. Dit had ook &#8216;AND&#8217; kunnen zijn. Bij OR is een van de onderstaande terms genoeg, bij AND dienen ze allebei aan een post gekoppeld te zijn. Vervolgens wordt de taxonomy gespecificeerd met <strong>&#8216;taxonomy&#8217; => &#8216;klanten&#8217;</strong>, iets wat me voor zich lijkt spreken. De <strong>field</strong> variabele geeft aan waar we op moeten zoeken, in dit geval een slug maar het zou ook een ID of naam van een term kunnen zijn. <strong>&#8216;terms&#8217; => array(&#8216;to-wonder, &#8216;motief-collectief&#8217;)</strong> geeft aan dat we willen zoeken naar de termen &#8216;to-wonder&#8217; en &#8216;motief-collectief&#8217; en bij operator staat nu &#8216;IN&#8217;. Dat wil zeggen dat de posts die we terug krijgen in de bovenstaande klanten gecategoriseerd moeten zijn. Als er &#8216;NOT IN&#8217; had gestaan hadden we dus alle posts terug gekregen die niet in &#8216;to-wonder&#8217; en &#8216;motief-collectief&#8217; zijn gecategoriseerd.</p>
<p>&nbsp;<br />
Zoals je kunt zien kun je hiermee helemaal los. En meta_query werkt op dezelfde manier; specificeer een extra veld, voeg een waarde toe en zeg of een post deze waarde wel of niet moet hebben. Laten we nu even teruggaan naar de query die we in het begin van deze post hebben opgesteld: &#8220;ik wil alle posts in de categorieën projecten en producten, waarbij het extraveld &#8216;kosten&#8217; niet leeg is&#8221;. En laten we het nog leuker maken door het post_type in te stellen en alleen te zeggen dat we posts uit dit jaar terug willen krijgen. Dan krijgen we in de code dus dit:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:'Monaco', Courier, monospace;">&nbsp;
    <span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                    <span style="color: #0000ff;">'post_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'projecten'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'year'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'2012'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'tax_query'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                            <span style="color: #0000ff;">'relation'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'OR'</span><span style="color: #339933;">,</span>
                                            <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                                    <span style="color: #0000ff;">'taxonomy'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'category'</span><span style="color: #339933;">,</span>
                                                    <span style="color: #0000ff;">'field'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'slug'</span><span style="color: #339933;">,</span>
                                                    <span style="color: #0000ff;">'terms'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'projecten'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'producten'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                                                    <span style="color: #0000ff;">'operator'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'IN'</span>
                                            <span style="color: #009900;">&#41;</span>
                    <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'meta_query'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                            <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                                    <span style="color: #0000ff;">'meta_key'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'kosten'</span><span style="color: #339933;">,</span>
                                                    <span style="color: #0000ff;">'value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
                                                    <span style="color: #0000ff;">'compare'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!='</span>
                                            <span style="color: #009900;">&#41;</span>
                    <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    query_posts<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;</p>
<p>Ik kan me voorstellen dat dit een hoop geouwehoer lijkt en in de werkelijkheid heb je deze ingewikkelde queries maar weinig nodig, maar het is fijn om deze kennis in huis te hebben. WordPress is zo veel flexibeler dan de meeste mensen denken, maar dat komt omdat er nog maar weinig mensen echt in de mogelijkheden van WordPress duiken. &nbsp;</p>
<p>Zelf ben ik vooral met deze queries begonnen voor opdrachtgevers, maar inmiddels ben ik bezig met een WordPress plugin die een groot deel van deze query-woede uit je handen kan nemen, door alles te vertalen naar eenvoudig te maken filters. Zo kun je bijvoorbeeld filteren op taxonomiën, extra velden maar ook op post_types en publieke / prive posts. Blijf dus vooral dit blog in de gaten houden want ik verwacht mijn &#8216;Advanced filters&#8217; plugin voor eind februari af te hebben.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.to-wonder.com/2012/01/theme-tips-de-geavanceerde-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fonts op internet &#8211; de opties</title>
		<link>http://www.to-wonder.com/2012/01/webfonts-deel-1/</link>
		<comments>http://www.to-wonder.com/2012/01/webfonts-deel-1/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 09:00:23 +0000</pubDate>
		<dc:creator>Luc Princen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[@font-face]]></category>
		<category><![CDATA[cufon]]></category>
		<category><![CDATA[web fonts]]></category>

		<guid isPermaLink="false">http://www.to-wonder.com/?p=1302</guid>
		<description><![CDATA[Er zijn inmiddels vele manieren om je eigen fonts te gebruiken op je website. In dit blogje zet ik ze allemaal even onder elkaar met de argumenten vóór en argumenten tegen gebruik. &#160; &#160; @font-face Wordt vaak gezien als een echte CSS3 feature, maar bestaat al sinds 1999 toen nota bene Microsoft de technologie in... <a href="http://www.to-wonder.com/2012/01/webfonts-deel-1/" style="text-decoration:none;font-size:11px;font-weight:bold">&#160;MEER &#8250;&#160;&#160;</a>]]></description>
			<content:encoded><![CDATA[<p>Er zijn inmiddels vele manieren om je eigen fonts te gebruiken op je website. In dit blogje zet ik ze allemaal even onder elkaar met de argumenten vóór en argumenten tegen gebruik.<br />
&nbsp;</p>
<p>&nbsp;</p>
<h2>@font-face</h2>
<p>Wordt vaak gezien als een echte CSS3 feature, maar bestaat al sinds 1999 toen nota bene Microsoft de technologie in Internet Explorer 5(!) inbouwde. Is daarna onder gesneeuwd omdat er teveel gezeik kwam over licenties. Bij de CSS3 spec-sheet is het weer opgepakt en wordt het inmiddels door alle grote browsers gesteund. Diensten als <a href="http://www.fontsquirrel.com/fontface/generator" target="_blank">de @font-face generator van Font Squirrel</a> maken het bovendien makkelijk en houden rekening met licenties.<br />
&nbsp;</p>
<p><strong>Argumenten vóór</strong></p>
<ul>
<li>Geen Javascript of Flash nodig; alles draait op CSS</li>
<li>Eenvoudig toe te passen</li>
<li>Cross-browser ondersteuning (zelfs voor de oudjes</li>
</ul>
<p>&nbsp;</p>
<p><strong>Argumenten tegen</strong></p>
<ul>
<li>Alleen open source fonts</li>
<li>Kan er lelijk uitzien in oudere browsers</li>
</ul>
<p>&nbsp;<br />
<strong>Links:</strong><br />
<a href="http://www.fontsquirrel.com/fontface" target="_blank">Fonts</a><br />
<a href="http://www.fontsquirrel.com/fontface/generator" target="_blank">De @font-face generator</a></p>
<p>&nbsp;</p>
<h2>Google Web Fonts</h2>
<p>Een aardige bibliotheek gratis te gebruiken fonts die op rete-snelle servers volledig gecached staan. Dit is @font-face op speed en er is inmiddels een behoorlijk aanbod.<br />
&nbsp;<br />
<strong>Argumenten vóór</strong></p>
<ul>
<li>Geen javascript of flash nodig</li>
<li>Eenvoudig toe te passen</li>
<li>Cross-browser ondersteuning</li>
<li>Hele snelle laadtijd</li>
</ul>
<p>&nbsp;<br />
<strong>Argumenten tegen</strong></p>
<ul>
<li>Keuze is beperkt</li>
</ul>
<p>&nbsp;<br />
<strong>Links:</strong><br />
<a href="http://www.google.com/webfonts#ChoosePlace:select" target="_blank">Google Fonts</a><br />
<a href="http://line25.com/tutorials/easy-custom-web-typography-with-google-fonts-api" target="_blank">HowTo</a></p>
<p>&nbsp;</p>
<h2>Typekit</h2>
<p>Een professionele oplossing met een prijskaartje. Nu valt het geld wat je er voor kwijt bent relatief mee voor de absoluut beste online  font oplossing out there.<br />
&nbsp;<br />
<strong>Argumenten vóór</strong></p>
<ul>
<li>Heel veel fonts (inclusief betaalde fonts)</li>
<li>Makkelijk toe te passen via Typekit&#8217;s embed systeem</li>
<li>Visueel het beste resultaat</li>
</ul>
<p>&nbsp;<br />
<strong>Argumenten tegen</strong></p>
<ul>
<li>Het is een premium oplossing, met een jaarlijks abonnement </li>
</ul>
<p>&nbsp;<br />
<strong>Links:</strong><br />
<a href="https://typekit.com/" target="_blank">Typekit</a><br />
<a href="http://thinkvitamin.com/design/getting-started-with-typekit/" target="_blank">HowTo</a></p>
<p>&nbsp;</p>
<h2>Cufon</h2>
<p>Cufon kwam net op voor @font-face cross-browser ging en was op dat moment een erg goede oplossing voor het embedden van fonts. Het levert een super strak resultaat cross-browser, maar je krijgt met performance problemen te maken bij overgebruik.<br />
&nbsp;<br />
<strong>Argumenten vóór</strong></p>
<ul>
<li>Mooie, heldere tekst</li>
<li>Zeer goede cross-browser ondersteuning (kwalitatief)</li>
</ul>
<p>&nbsp;<br />
<strong>Argumenten tegen</strong></p>
<ul>
<li>De text is niet te selecteren</li>
<li>Relatief zwaar; gebruik het alleen voor headers</li>
<li>Alleen open source fonts</li>
</ul>
<p>&nbsp;<br />
<strong>Links:</strong><br />
<a href="http://cufon.shoqolate.com/generate/" target="_blank">Cufon</a><br />
<a href="http://fearlessflyer.com/2009/10/cufonize-your-pages-how-to-add-cufon-to-your-web-design/" target="_blank">HowTo</a></p>
<p>&nbsp;</p>
<p>Er zijn nog andere oplossingen als <strong>sIFR</strong> en <strong>Typeface.js</strong>, maar deze kunnen eenvoudigweg niet meer tippen aan de eenvoud en kwaliteit van de bovenstaande oplossingen. sIFR en Typeface.js waren goede oplossingen in hun tijd, maar zijn wat mij betreft niet meer de moeite van het overwegen waard.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.to-wonder.com/2012/01/webfonts-deel-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

