<?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>juust ~ php oddities &#187; wordpress</title>
	<atom:link href="http://www.juust.org/index.php/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juust.org</link>
	<description>Link theory and search engine optimization</description>
	<lastBuildDate>Thu, 19 Jan 2012 09:39:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Use MsAccess as MySql frontend</title>
		<link>http://www.juust.org/index.php/use-msaccess-as-mysql-frontend/2011/12/</link>
		<comments>http://www.juust.org/index.php/use-msaccess-as-mysql-frontend/2011/12/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 22:02:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[juust]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=2074</guid>
		<description><![CDATA[&#160; Horses for courses, where MySql, PHP and HTML are native to the web, PHP/HTML suck as table GUI,no offense, I just got extremely frustrated with it today. Another way to get the data off the web onto my desktop &#8230; <a href="http://www.juust.org/index.php/use-msaccess-as-mysql-frontend/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Horses for courses, where MySql, PHP and HTML are native to the web, PHP/HTML suck as table GUI,no offense, I just got extremely frustrated with it today. Another way to get the data off the web onto my desktop is using FTP/ODBC and enclosing MySql tables in my MsAccess desktop database. It has it perks but it works. If you want to try it check with your host (if you are not self hosting) if your host allows external access to your mysql server. For local servers it works flawless.</p>
<h2>Download the odbc connector</h2>
<p>Over at Dev.MySql they muist have heard my screams of agony an programmed an ODBC (open database connectivity) driver. Windows supports the ODBC standards hence in Office you can use external databases if you install an odbc driver for the database type.</p>
<p><a href="http://dev.mysql.com/downloads/connector/odbc/"><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess1.png" alt="" border="0" /></a></p>
<h2>Create the system datasource</h2>
<p>Once the driver is installed you can add the MySql database as open database to Windows (odbc works via the operating system) and link the tables in MsAccess. Start by opening the Windows configuration screen and open System manager, where you can access the ODBC Datasources and open the ODBC Administrator screen :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess2.png" alt="" /></p>
<p>Pick the tab <strong>System DSN</strong> and choose <strong>Add…</strong> to select a driver : the new MySql ODBC Driver.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess3.png" alt="" /></p>
<p>Then comes the magic bit : when you click Finish, the MySql driver pops up its own configuration screen :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess4.png" alt="" /></p>
<p>The data you fill in is the same login data used in WordPress wp-config.php : the mysql database host, login and password, and what database to select. When you are done, you can make more than one ODBC Sources so you can add every WordPress install you have on the web to it, provided you have access to the mysql server. A lot of hosts do not actually allow it, but mine do.</p>
<p>So far so good, the Datasource is now known in the Windows operating system, now we go to MsAccess.</p>
<h2>Enclose the tables in MsAccess</h2>
<p>&nbsp;</p>
<p>Under <strong>External Data</strong> pick <strong>ODBC Database</strong> :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess5.png" alt="" /></p>
<p>In the screen that opens, pick the <strong>Link data</strong> option :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess6.png" alt="" /></p>
<p>And in the next screen pick the tab with machine data sources : this picture shows both my new localhost database and the juust.org database so I will pick that one (it is in Rotterdam somewhere on a server)</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess7.png" alt="" /></p>
<p>When I pick that one the driver kicks in and connects to the remote database, retrieving a list with tables for me to link into the database, for the occasion I will link the Ak_Twitter table of the WordPress Twitter Tools plugin that has my most recent Tweets :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess8.png" alt="" /></p>
<p>And click okay and Voila :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess9.png" alt="" /></p>
<p>The tables are linked</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122911_2205_UseMsAccess10.png" alt="" width="686" height="447" /></p>
<p>Note: if you get an error &#8220;server has gone away, ( ask your host to) <a href="http://www.thewebhostinghero.com/articles/mysql-odbc-call-failed.html">set the connection timeout to 300</a> or more</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/use-msaccess-as-mysql-frontend/2011/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Publish Microsoft Word 2010 documents to your WordPress blog</title>
		<link>http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/</link>
		<comments>http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 04:30:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[juust]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1998</guid>
		<description><![CDATA[Hands on test, Microsoft Word 2010 supports publishing a document as WordPress blog post, excellent. I have been sailing for a while, so I haven&#8217;t played around with it yet. I love what Microsoft made. They did not just add &#8230; <a href="http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hands on test, Microsoft Word 2010 supports publishing a document as WordPress blog post, excellent. I have been sailing for a while, so I haven&#8217;t played around with it yet. I love what Microsoft made. They did not just add an XML-RPC post routine, they added a small editor in Microsoft Word itself, especially for blog posts. It is everything you ever wanted but the WordPress editor just never was. You can manage content you already posted, publish directly or as draft, you can cut and paste screenshots, pictures, excel sheets and access tables, it is such a total improvement.</p>
<h2>How to set Word up as WordPress editor ?</h2>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr15.png" alt="" align="left" />Make a document and pick from the File menu &#8220;Save and Send&#8221;, and you get an extra option to <span style="text-decoration: underline;"><strong>publish as blog post</strong></span>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Once you pick that it opens an editor for blog posts, that pn the background uses the XML-RPC interface. Word starts a wizard the first time, that you can also access by &#8220;manage accounts&#8221; in the editor menu :</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr24.png" alt="" width="768" height="165" /></p>
<p>But let&#8217;s start by clicking <strong>Save and Send</strong> : Word will ask you to register an account, iow your wordpress blog website.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr32.png" alt="" width="743" height="433" /></p>
<p>When registering you can pick from a whole list of blog types, of course I picked WordPress</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr44.png" alt="" /></p>
<p>In the dialog &#8216;new wordpress account&#8217; you enter your XML-RPC end point, the directory of your blog with /xmlrpc.php, that is where you can post to your blog. Username and Password can be your normal username and password, you can also register separately at the blog. That would be my choice.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr54.png" alt="" /></p>
<p>Of course these days blog posts all have pictures, and in the account dialog in the lower left corner there is a button &#8220;picture options&#8221; where you can specify how you want uploaded. You can use an FTP upload but in my case picking the blog provider (iow let WordPress handle it itself) works out of the box.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr64.png" alt="" /></p>
<p>Once you click OK you also get a warning about the visibility of your login and password, XML-RPC posts are text files and your account user name and password are not encrypted when sent to the blog XML-RPC endpoint. There is little risk in it but it is a point that has to be made.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr74.png" alt="" /></p>
<p>When you agree to continue you can edit your post. And when done, publish.</p>
<p><img src="http://www.juust.org/wp-content/uploads/2011/12/122811_0434_PublishMicr82.png" alt="" /></p>
<p>&#8230;and out came this post. In the WordPress editor you can add some tags and categories if you publish as draft, but you can also specify a category in the  Word editor..</p>
<p>Word offers a lot of picture effects yet it outputs the result as  .png images so it works without css3 dependencies, and outputs very clean html markup. Just for the picture effects and total ease of editing it gets a 5 out of 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/publish-microsoft-word-2010-documents-to-your-wordpress-blog/2011/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QuickGlossary wordpress plugin</title>
		<link>http://www.juust.org/index.php/quickglossary-wordpress-plugin/2011/12/</link>
		<comments>http://www.juust.org/index.php/quickglossary-wordpress-plugin/2011/12/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 12:41:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[PIYF]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1911</guid>
		<description><![CDATA[I am curious with the ongoing discussion on LSI in search, how Googlebot responds to using the Datalist and it&#8217;s DFN definition element on page. Maybe it helps if we provide the search engines with more on page context. So &#8230; <a href="http://www.juust.org/index.php/quickglossary-wordpress-plugin/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am curious with the ongoing discussion on LSI in search, how Googlebot responds to using the Datalist and it&#8217;s DFN definition element on page. Maybe it helps if we provide the search engines with more on page context. So I built a Quick Glossary WordPress plugin. It puts the single post tags with description as a Glossary in the sidebar and uses jQuery to shorten the displayed text and add a [more] link, so visitors can choose to read a full description but it does not dominate the page, whilst Googlebot and Slurp get the full context of the content according to my tag definitions. </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>dl<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;</span>dt<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="sy0">&lt;</span>dfn<span class="sy0">&gt;</span>PIYF<span class="sy0">&lt;/</span>dfn<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;/</span>dt<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;</span>dd<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; Acronym <span class="sy0">:</span> Panda Is Your Friend</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;/</span>dd<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>dl<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>First the basic widget code, I&#8217;ll call it Quick Glossary :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> widget_QuickGlossary<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">extract</span><span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//preparation : scope, css, javascript </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$before_widget</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$before_title</span> <span class="sy0">.</span> <span class="st0">&#39;Quick Glossary&#39;</span> <span class="sy0">.</span> <span class="re1">$after_title</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//output &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$after_widget</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">register_sidebar_widget<span class="br0">&#40;</span><span class="st0">&#39;Quick Glossary&#39;</span><span class="sy0">,</span> <span class="st0">&#39;widget_QuickGlossary&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h3>the preparation</h3>
<h4>scope</h4>
<p>I want my widget to only show on single posts, and only if the post has tags :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span>is_single<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$post</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$tags</span> <span class="sy0">=</span> get_the_tags<span class="br0">&#40;</span><span class="re1">$post</span><span class="sy0">-&gt;</span><span class="me1">ID</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$tags</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h4>layout</h4>
<p>I want a double column layout with the term (tag) linking to the tag page, and the definition itself only part visible, with a fancy [more] link like on Facebook.</p>
<p>First some css for a double column data list :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>style<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">dl</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;width<span class="sy0">:</span><span class="nu0">100</span><span class="sy0">%;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;overflow<span class="sy0">:</span>hidden<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">dt <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;float<span class="sy0">:</span>left<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;width<span class="sy0">:</span><span class="nu0">50</span><span class="sy0">%;</span> <span class="coMULTI">/* adjust the width; make sure the total of both is 100% */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">dd <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;float<span class="sy0">:</span>left<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;width<span class="sy0">:</span><span class="nu0">50</span><span class="sy0">%;</span> <span class="coMULTI">/* adjust the width; make sure the total of both is 100% */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>style<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>and then some jQuery : I want the whole definition on the page but only part visible to the reader. <a href="<br />
http://viralpatel.net/blogs/2010/12/dynamically-shortened-text-show-more-link-jquery.html">Viralpatel</a> list a nice cut and paste jQuery snippet. That requires I add a class &#8220;more&#8221; to the DD element, and add some css for it and for the link :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>style<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">.</span>morecontent span <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; display<span class="sy0">:</span> none<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">a<span class="sy0">.</span>morelink <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; text<span class="sy0">-</span>decoration<span class="sy0">:</span>none<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; outline<span class="sy0">:</span> none<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>style<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>I put the extra CSS script in it&#8217;s own function :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> quickGlossary_scripts<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//css for doyble column</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//css hooks for jquery</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>&#8230;and make sur the jquery script only loads when thr query is loaded :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#39;init&#39;</span><span class="sy0">,</span> <span class="st0">&#39;register_QuickGlossary_script&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#39;wp_footer&#39;</span><span class="sy0">,</span> <span class="st0">&#39;print_QuickGlossary_script&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> register_QuickGlossary_script<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;wp_register_script<span class="br0">&#40;</span><span class="st0">&#39;QuickGlossary&#39;</span><span class="sy0">,</span> plugins_url<span class="br0">&#40;</span><span class="st0">&#39;QuickGlossary.js&#39;</span><span class="sy0">,</span> <span class="kw2">__FILE__</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;jquery&#39;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st0">&#39;1.0&#39;</span><span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> print_QuickGlossary_script<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">global</span> <span class="re1">$add_QuickGlossary_script</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="sy0">!</span> <span class="re1">$add_QuickGlossary_script</span> <span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; wp_print_scripts<span class="br0">&#40;</span><span class="st0">&#39;QuickGlossary&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//nb.: requires setting the global var to true in the widget function </span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$add_QuickGlossary_script</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$add_QuickGlossary_script</span> <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&#8230;</span></div>
</li>
</ol>
</div>
<p>&#8230;and proceed to generating the output, the data list :</p>
<h3>the output</h3>
<p>Straight forward, using DL as list container, tagname and description as list of DT DD elements, with an added <strong>class=&#8221;more&#8221;</strong> to the DD description as hook for jQuery.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> QuickGlossary_datalist<span class="br0">&#40;</span><span class="re1">$tags</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$html</span> <span class="sy0">=</span> <span class="st0">&#39;&lt;dl class=&quot;post_tags&quot;&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$tags</span> <span class="kw1">as</span> <span class="re1">$tag</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$tag_link</span> <span class="sy0">=</span> get_tag_link<span class="br0">&#40;</span><span class="re1">$tag</span><span class="sy0">-&gt;</span><span class="me1">term_id</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$html</span> <span class="sy0">.=</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&quot;&lt;dt&gt;&lt;dfn&gt;&lt;a href=&#39;{$tag_link}&#39; title=&#39;more articles on {$tag-&gt;name}&#39; class=&#39;{$tag-&gt;slug}&#39;&gt;{$tag-&gt;name}&lt;/a&gt;&lt;/dfn&gt;&lt;/dt&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;dd class=&#39;more&#39;&gt;{$tag-&gt;description}&lt;/dd&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$html</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;/dl&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="re1">$html</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>You can edit your tag description under <em>Admin-Posts-Post Tags</em> menu.</p>
<p>Now my main widget function is :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> widget_QuickGlossary<span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">extract</span><span class="br0">&#40;</span><span class="re1">$args</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span>is_single<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$post</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$tags</span> <span class="sy0">=</span> get_the_tags<span class="br0">&#40;</span><span class="re1">$post</span><span class="sy0">-&gt;</span><span class="me1">ID</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$tags</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">global</span> <span class="re1">$add_QuickGlossary_script</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$add_QuickGlossary_script</span> <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; quickGlossary_scripts<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$before_widget</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$before_title</span> <span class="sy0">.</span> <span class="st0">&#39;Glossary&#39;</span> <span class="sy0">.</span> <span class="re1">$after_title</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> QuickGlossary_datalist<span class="br0">&#40;</span><span class="re1">$tags</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$after_widget</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Activate the widget, drag and drop it from <em>Admin-Appearance-Widgets</em> menu and it is a Quick Glossary, if you want to play with it, code is overhere as <a rel="nofollow" href="http://www.juust.org/wp-content/plugins/QuickGlossary/QuickGlossary.zip">zip</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/quickglossary-wordpress-plugin/2011/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>what is the forum doing there</title>
		<link>http://www.juust.org/index.php/what-is-the-forum-doing-there/2010/11/</link>
		<comments>http://www.juust.org/index.php/what-is-the-forum-doing-there/2010/11/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 22:14:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1434</guid>
		<description><![CDATA[A forum out of nowhere, I noticed that no one posts on an empty forum. So I made a new plugin that gets Yahoo Answers and stuffs them in Simplepress. I grabbed a php yahoo answers class from HungryCoder&#8217;s blog &#8230; <a href="http://www.juust.org/index.php/what-is-the-forum-doing-there/2010/11/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A forum out of nowhere, I noticed that no one posts on an empty forum. So I made a new plugin that gets Yahoo Answers and stuffs them in Simplepress. I grabbed a <a href="http://hungrycoder.xenexbd.com/scripts/php-scripts-2/searching-and-retrieving-yahoo-answers-in-php.html">php yahoo answers class</a> from HungryCoder&#8217;s blog and hacked a backend together, mapping yahoo categories with a keyword to a forum, retrieving topics and either use cron or direct publishing. It takes 2 minutes to have a forum full of <a href="http://www.juust.org/index.php/forum/search-engine-optimization/">free content</a>. I am going to debug it. Maybe in spring I&#8217;ll put it on wordpress.org.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/what-is-the-forum-doing-there/2010/11/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wordpress custom post types : template location</title>
		<link>http://www.juust.org/index.php/wordpress-custom-post-types-template-location/2010/11/</link>
		<comments>http://www.juust.org/index.php/wordpress-custom-post-types-template-location/2010/11/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 19:06:19 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[juust]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1378</guid>
		<description><![CDATA[Now let me explain why this makes intuitive sense. (Prof. Larry Wasserman) I wanted some hands-on with wordpress custom types and stumbled upon the usual quotes database, so one of my blogs has become a plugin quotes site with xml-rpc &#8230; <a href="http://www.juust.org/index.php/wordpress-custom-post-types-template-location/2010/11/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>
<a href="http://maistro.com/quote/now-let-me-explain-why-this-makes-intuitive-sense/">Now let me explain why this makes intuitive sense</a>.<br />
<small>(Prof. Larry Wasserman)</small>
</p></blockquote>
<p>I wanted some hands-on with wordpress custom types and stumbled upon the usual quotes database, so one of my blogs has become a plugin quotes site with xml-rpc api. And ran into a minor geek problem : WordPress seems to want to pick <strong>mytheme/single-customtype.php</strong> or <strong>mytheme/single.php</strong> as template.</p>
<p>I don&#8217;t want to loose the custom template when I switch themes. So I added a standard redirect function using an array(&#8216;slug&#8217;, &#8216;redirect-to-template&#8217;) in the blog options table.</p>
<p>First a function to register the redirect in the blog options table :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> customtypes_redirect_register<span class="br0">&#40;</span><span class="re1">$slug</span><span class="sy0">,</span> <span class="re1">$file</span><span class="sy0">,</span> <span class="re1">$overwrite</span><span class="sy0">=</span><span class="kw2">true</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span>get_option<span class="br0">&#40;</span><span class="st0">&#39;customtypes_redirect&#39;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$redirects</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$redirects</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw3">array</span><span class="br0">&#41;</span> json_decode<span class="br0">&#40;</span>get_option<span class="br0">&#40;</span><span class="st0">&#39;customtypes_redirect&#39;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re1">$overwrite</span><span class="sy0">===</span><span class="kw2">false</span><span class="br0">&#41;</span> &nbsp;<span class="sy0">&amp;&amp;</span> <span class="re1">$redirects</span><span class="br0">&#91;</span><span class="re1">$slug</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$redirects</span><span class="br0">&#91;</span><span class="re1">$slug</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re1">$file</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; update_option<span class="br0">&#40;</span><span class="st0">&#39;customtypes_redirect&#39;</span><span class="sy0">,</span> json_encode<span class="br0">&#40;</span><span class="re1">$redirects</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>&#8230;then the actual redirect hooked into template_redirect :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&quot;template_redirect&quot;</span><span class="sy0">,</span> <span class="st0">&#39;customtypes_redirect&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> customtypes_redirect<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span>get_option<span class="br0">&#40;</span><span class="st0">&#39;customtypes_redirect&#39;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$slug_templates</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw3">array</span><span class="br0">&#41;</span> json_decode<span class="br0">&#40;</span>get_option<span class="br0">&#40;</span><span class="st0">&#39;customtypes_redirect&#39;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">global</span> <span class="re1">$wp</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">global</span> <span class="re1">$wp_query</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">global</span> <span class="re1">$post</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//if it aint a post or page, check if the post_type has a redirect, if the file exists, redirect and quit</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$wp</span><span class="sy0">-&gt;</span><span class="me1">query_vars</span><span class="br0">&#91;</span><span class="st0">&quot;post_type&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="re1">$wp</span><span class="sy0">-&gt;</span><span class="me1">query_vars</span><span class="br0">&#91;</span><span class="st0">&quot;post_type&quot;</span><span class="br0">&#93;</span> <span class="sy0">!=</span> <span class="st0">&#39;post&#39;</span> <span class="sy0">&amp;&amp;</span> <span class="re1">$wp</span><span class="sy0">-&gt;</span><span class="me1">query_vars</span><span class="br0">&#91;</span><span class="st0">&quot;post_type&quot;</span><span class="br0">&#93;</span> <span class="sy0">!=</span> <span class="st0">&#39;page&#39;</span><span class="br0">&#41;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re1">$slug_templates</span><span class="br0">&#91;</span><span class="re1">$wp</span><span class="sy0">-&gt;</span><span class="me1">query_vars</span><span class="br0">&#91;</span><span class="st0">&quot;post_type&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">file_exists</span><span class="br0">&#40;</span><span class="re1">$slug_templates</span><span class="br0">&#91;</span><span class="re1">$wp</span><span class="sy0">-&gt;</span><span class="me1">query_vars</span><span class="br0">&#91;</span><span class="st0">&quot;post_type&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">include</span><span class="br0">&#40;</span><span class="re1">$slug_templates</span><span class="br0">&#91;</span><span class="re1">$wp</span><span class="sy0">-&gt;</span><span class="me1">query_vars</span><span class="br0">&#91;</span><span class="st0">&quot;post_type&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">die</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">endif</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Now I just have to register the redirect from the plugin file :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#39;init&#39;</span><span class="sy0">,</span> <span class="st0">&#39;add_customtype_redirects&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> add_customtype_redirects<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; customtypes_redirect_register<span class="br0">&#40;</span><span class="st0">&#39;quote&#39;</span><span class="sy0">,</span> ABSPATH <span class="sy0">.</span> <span class="st0">&#39;wp-content/plugins/&#39;</span><span class="sy0">.</span><span class="kw3">basename</span><span class="br0">&#40;</span> <span class="kw3">dirname</span><span class="br0">&#40;</span> <span class="kw2">__FILE__</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="sy0">.</span><span class="st0">&quot;/my-customtype-template.php&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>&#8230;and I can keep my templates in the plugin dir, and switch themes as much as I want. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/wordpress-custom-post-types-template-location/2010/11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hell froze over and WordPress became a cms.</title>
		<link>http://www.juust.org/index.php/hell-froze-over-and-wordpress-became-a-cms-2/2010/11/</link>
		<comments>http://www.juust.org/index.php/hell-froze-over-and-wordpress-became-a-cms-2/2010/11/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 02:34:36 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1376</guid>
		<description><![CDATA[One of my pet peeves, I loathe building backend forms. Hell froze over and WordPress did what I want, and added the custom type post with a standard backend table handler. WordPress is become a CMS. Why is the new &#8230; <a href="http://www.juust.org/index.php/hell-froze-over-and-wordpress-became-a-cms-2/2010/11/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of my pet peeves, I loathe building backend forms. Hell froze over and WordPress did what I want, and added the custom type post with a standard backend table handler. WordPress is become a CMS. </p>
<p>Why is the new custom types backend important  ? It reduces risk and cost of ownership of small customizations to handle user tables, which makes WordPress more competitive in the small local business niche. </p>
<p>There is a sizeable market for small local business sites like the restaurant with their menu, for instance, the snackbar, the pizza delivery place, volunteer jobs. That is the market of 500 to 3000 bucks jobbing. Currently these have a choice between packages like Magento, Joomla, WordPress, Flash or the html-sixpager. Each have their own advantages and disadvantages, Joomla offer better user table support but have a smaller community, Flash looks better but has little standard installs, Magento offers a standard shopping cart and check-out but is aimed at online shops, and WordPress offers cheaper templates, better SEO, more pluggable functionality and a giant community but got stuck in being a publishing platform. </p>
<p>Once a company picked WordPress and wants to use small user tables, in case of a restaurant for an online menu or reservations, that requires custom coding and creates extra dependancies, cost and risk. If for every menu-plugin you have to write the table-handler with custom jquery, the average plugin costs 300 dollars (check the getafreelancer joblist ;) ). For a small business with a menu, agenda, reservations/stock, that is about 1000 dollars to handle maybe 200 records throughout the year. With updates that plugin can break and it takes time to find a developer that can fix it. The developer costs money, and losing turnover costs even more money. </p>
<p>With a standard user table manager within a year it costs 50 bucks to develop a solution (just Google &#8216;wordpress custom type restaurant menu&#8217; and cut and paste it). Should the code break, a few hundred developers have the same problem at the same time, and it is fixed the same day with a free update. </p>
<p>Low risk and low cost in the development and ownership phase. That leaves in general more budget for layout and exploring exciting new possibilities for WordPress in the small business market. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/hell-froze-over-and-wordpress-became-a-cms-2/2010/11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>availability test</title>
		<link>http://www.juust.org/index.php/availability-test/2010/06/</link>
		<comments>http://www.juust.org/index.php/availability-test/2010/06/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 00:39:01 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1263</guid>
		<description><![CDATA[I was writing an availability test with starttime-endtime, on a database with ICS schedule data from Google Calendar (userid, eventid, starttime, endtime), and i came up with this one : get all user id&#8217;s a get id&#8217;s for test.start between &#8230; <a href="http://www.juust.org/index.php/availability-test/2010/06/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was writing an availability test with starttime-endtime, on a database with ICS schedule data from Google Calendar (userid, eventid, starttime, endtime), and i came up with this one :</p>
<ul>
<li>get all user id&#8217;s</li>
<li>a get id&#8217;s for test.start between table.start and table.end</li>
<li>b get id&#8217;s for test.end between table.start and table.end</li>
<li>c get id&#8217;s for test.start < table.start and test.end > table.end</li>
<li>merge the three overlapping sets (a b c)</li>
<li>available = the difference between all id&#8217;s and the merged set</li>
</ul>
<p>It works but it takes four queries on the entire table. </p>
<p>Isn&#8217;t there a more intelligent way of doing that ?</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> maat_agenda_check_available<span class="br0">&#40;</span><span class="re1">$start</span><span class="sy0">,</span> <span class="re1">$end</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">global</span> <span class="re1">$wpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//get all id&#39;s</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$sql</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT userid FROM &quot;</span><span class="sy0">.</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prefix</span><span class="sy0">.</span><span class="st0">&quot;maat_agenda GROUP BY userid&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$all</span> <span class="sy0">=</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">get_results</span><span class="br0">&#40;</span><span class="re1">$sql</span><span class="sy0">,</span> ARRAY_A<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//get ids with overlaps</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$a</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT userid FROM &quot;</span><span class="sy0">.</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prefix</span><span class="sy0">.</span><span class="st0">&quot;maat_agenda WHERE endtime &gt; &quot;</span><span class="sy0">.</span><span class="re1">$start</span><span class="sy0">.</span><span class="st0">&quot; AND starttime &lt; &quot;</span><span class="sy0">.</span><span class="re1">$start</span><span class="sy0">.</span><span class="st0">&quot; GROUP BY userid&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$b</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT userid FROM &quot;</span><span class="sy0">.</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prefix</span><span class="sy0">.</span><span class="st0">&quot;maat_agenda WHERE endtime &gt; &quot;</span><span class="sy0">.</span><span class="re1">$end</span><span class="sy0">.</span><span class="st0">&quot; AND starttime &lt; &quot;</span><span class="sy0">.</span><span class="re1">$end</span><span class="sy0">.</span><span class="st0">&quot; GROUP BY userid&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$c</span> <span class="sy0">=</span> <span class="st0">&quot;SELECT userid FROM &quot;</span><span class="sy0">.</span><span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">prefix</span><span class="sy0">.</span><span class="st0">&quot;maat_agenda WHERE endtime &lt; &quot;</span><span class="sy0">.</span><span class="re1">$end</span><span class="sy0">.</span><span class="st0">&quot; AND starttime &gt; &quot;</span><span class="sy0">.</span><span class="re1">$start</span><span class="sy0">.</span><span class="st0">&quot; GROUP BY userid&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$rsta</span> <span class="sy0">=</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">get_results</span><span class="br0">&#40;</span><span class="re1">$a</span><span class="sy0">,</span> ARRAY_A<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$rstb</span> <span class="sy0">=</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">get_results</span><span class="br0">&#40;</span><span class="re1">$b</span><span class="sy0">,</span> ARRAY_A<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$rstc</span> <span class="sy0">=</span> <span class="re1">$wpdb</span><span class="sy0">-&gt;</span><span class="me1">get_results</span><span class="br0">&#40;</span><span class="re1">$c</span><span class="sy0">,</span> ARRAY_A<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//merge arrays</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$rsta</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re1">$rsta</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$rstb</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re1">$rstb</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$rstc</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re1">$rstc</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$rst</span> <span class="sy0">=</span> <span class="kw3">array_merge</span><span class="br0">&#40;</span><span class="re1">$rsta</span><span class="sy0">,</span> <span class="re1">$rstb</span><span class="sy0">,</span> <span class="re1">$rstc</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//get uniques</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">array_unique</span><span class="br0">&#40;</span><span class="re1">$rst</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="kw3">array_diff</span><span class="br0">&#40;</span><span class="re1">$all</span><span class="sy0">,</span> <span class="re1">$rst</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/availability-test/2010/06/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

