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.

PIYF
Acronym : Panda Is Your Friend

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

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

the preparation

scope

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;

layout

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');
  2.  
  3. function register_QuickGlossary_script() {
  4.  wp_register_script('QuickGlossary', plugins_url('QuickGlossary.js', __FILE__), array('jquery'), '1.0', true);
  5. }
  6.  
  7. function print_QuickGlossary_script() {
  8.  global $add_QuickGlossary_script;
  9.   if ( ! $add_QuickGlossary_script ) return;
  10.   wp_print_scripts('QuickGlossary');
  11. }
  12.  
  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);
  2.  
  3.     if(!is_single()) return;
  4.  
  5.     global $post;
  6.     $tags = get_the_tags($post-&gt;ID);
  7.     if(!$tags) return;
  8.  
  9.     global $add_QuickGlossary_script;
  10.     $add_QuickGlossary_script = true;
  11.  
  12.     quickGlossary_scripts();
  13.  
  14.     echo $before_widget;
  15.     echo $before_title . 'Glossary' . $after_title;
  16.  
  17.     echo QuickGlossary_datalist($tags);
  18.  
  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.

Google Panda Latent Semantic Indexing Test

Panda’s…

Latent Semantic Indexing

Queries, or concept searches, against a set of documents that have undergone LSI will return results that are conceptually similar in meaning to the search criteria even if the results don’t share a specific word or words with the search criteria.

 

LSI Test

O my friend, Panda is something that has to be surpassed. In {speculation|guess|supposition|surmise|surmisal|possibility|hypothesis} and keeping silence shall the friend be a master: you should not wish to see everything. (Nietzsche, Also Sprach Zarathustra)

 

Id the_term the_type the_value
156875 c0njecture (noun) speculation
156876 ———- (noun) hypothesis (generic term)
156877 ———- (noun) possibility
156878 ———- (noun) theory (generic term)
156879 ———- (noun) guess
156880 ———- (noun) supposition
156881 ———- (noun) surmise
156882 ———- (noun) surmisal
156883 ———- (noun) speculation
156884 ———- (noun) hypothesis
156885 ———- (noun) opinion (generic term)
156886 ———- (noun) view (generic term)
156887 ———- (noun) reasoning (generic term)
156888 ———- (noun) logical thinking (generic term)
156889 ———- (noun) abstract thought (generic term)
156890 ———- (verb) speculate
156891 ———- (verb) theorize
156892 ———- (verb) theorise
156893 ———- (verb) hypothesize
156894 ———- (verb) hypothesise
156895 ———- (verb) hypothecate
156896 ———- (verb) suppose
156897 ———- (verb) expect (generic term)
156898 ———- (verb) anticipate (generic term)

 (source : semanthesaurus)

 

Let’s see if the Panda gets it.