QuickGlossary wordpress plugin

I am curious with the ongoing discussion on LSI in search, how Googlebot responds to using the Datalist and it’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.

Acronym : Panda Is Your Friend

First the basic widget code, I’ll call it Quick Glossary :

  1. function widget_QuickGlossary($args) {
  2.         extract($args);
  4.         //preparation : scope, css, javascript
  6.         echo $before_widget;
  7.         echo $before_title . 'Quick Glossary' . $after_title;
  9.         //output  
  11.         echo $after_widget;
  12. }
  14. register_sidebar_widget('Quick Glossary', 'widget_QuickGlossary');

the preparation


I want my widget to only show on single posts, and only if the post has tags :

if(!is_single()) return
  1.     global $post;
  2.     $tags = get_the_tags($post->ID);
  3.     if(!$tags) return;


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.

First some css for a double column data list :

  1. and then some jQuery : I want the whole definition on the page but only part visible to the reader. <a href="&lt;br /&gt;
  2. 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 "more" to the DD element, and add some css for it and for the link :
  3. <pre lang="php">

I put the extra CSS script in it’s own function :

function quickGlossary_scripts() {
  1. //css for doyble column
  2. //css hooks for jquery
  3. }

…and make sur the jquery script only loads when thr query is loaded :

add_action('init', 'register_QuickGlossary_script');
  1. add_action('wp_footer', 'print_QuickGlossary_script');
  3. function register_QuickGlossary_script() {
  4.  wp_register_script('QuickGlossary', plugins_url('QuickGlossary.js', __FILE__), array('jquery'), '1.0', true);
  5. }
  7. function print_QuickGlossary_script() {
  8.  global $add_QuickGlossary_script;
  9.   if ( ! $add_QuickGlossary_script ) return;
  10.   wp_print_scripts('QuickGlossary');
  11. }
  13. //nb.: requires setting the global var to true in the widget function
  14.     global $add_QuickGlossary_script;
  15.     $add_QuickGlossary_script = true;

…and proceed to generating the output, the data list :

the output

Straight forward, using DL as list container, tagname and description as list of DT DD elements, with an added class=”more” to the DD description as hook for jQuery.

function QuickGlossary_datalist($tags) {
  1.    $html = '
  1. ';
  2.   return $html;
  3. }

You can edit your tag description under Admin-Posts-Post Tags menu.

Now my main widget function is :

function widget_QuickGlossary($args) {
  1.     extract($args);
  3.     if(!is_single()) return;
  5.     global $post;
  6.     $tags = get_the_tags($post-&gt;ID);
  7.     if(!$tags) return;
  9.     global $add_QuickGlossary_script;
  10.     $add_QuickGlossary_script = true;
  12.     quickGlossary_scripts();
  14.     echo $before_widget;
  15.     echo $before_title . 'Glossary' . $after_title;
  17.     echo QuickGlossary_datalist($tags);
  19.     echo $after_widget;
  20. }

Activate the widget, drag and drop it from Admin-Appearance-Widgets menu and it is a Quick Glossary, if you want to play with it, code is overhere as zip.

Posted in google, seo, widget, wordpress and tagged , , , .

Leave a Reply

Your email address will not be published. Required fields are marked *