WP-SNAP! WordPress Plugin

Permalink  |  Comments [320]

What Is WP-SNAP!?

WP-SNAP! (WordPress System for Navigating Alphabetized Posts) creates an alphabetical listing of post titles on a Category or Page template file. Navigation through the listings WP-SNAP! generates is accomplished using the alphabet itself. (For example, if a site visitor clicked on the letter D, any post titles that began with that letter would be showcased.) WP-SNAP! will work on any Wordpress 2.1.x or higher site, but is particularly useful managing glossaries, indexes, reviews, or directories. Since it is said that a picture is worth a thousand words, here’s a screenshot of WP-SNAP! in action:

screenshot

WP-SNAP! offers three different navigational styles and integration with both custom permalinks and the Wordpress loop. Plugin options can be managed both site-wide and on the template itself with results either restricted to one category or broadened to include child categories as well. The clever web developer should have no problem seamlessly integrating WP-SNAP! into their latest project. Options have also been added to allow the customization of css class names and the appearance of html mark-up.

How To Configure WP-SNAP!

  1. Click on the link to the right to download the WP-SNAP! WordPress Plugin, extract it and upload it to your WordPress Plugins folder on your site.
  2. Activate the Plugin from the WordPress Administration Plugins tab.
  3. Edit the category templates your Theme uses, such as category.php, and add the following code above the start of the Wordpress Loop:
    <?php if (function_exists('wp_snap')) { echo wp_snap(); } ?>
  4. Copy the CSS example below and paste it into your WordPress Theme stylesheet (you can style it better later).
  5. Upload the files and refresh the category page on your WordPress blog to see it in action.
  6. For further customization, go to the Plugins > WP-SNAP! panel and change the alphabetical structure to something different and click Update Options. You may also change the categories to be displayed and the menu navigational structure by passing variables as a query-string to the plugin like so:
    <?php if (function_exists('wp_snap')) { echo wp_snap('arguments'); ?>

    There are currently four possible arguments: Category (’cat’), Include Category Children (’child’), Navigational Menu Style (’menu’), and First Load (’firstload’). Category must equal a category number from your WordPress installation, Include Category Children must equal true or false as to whether to include child categories (the default value is false), Navigational Menu Style must equal a number between 1 and 3 (corresponding with the three navigational styles offered in the admin options panel), and First Load must equal ALL, NONE or RECENT and will affect how WP-SNAP! displays posts/tags when it is first called on a template. Note that if RECENT is selected, the number of recent posts/tags to display can be controlled from the admin options page. For instance, to create a navigational menu for all posts in category 15, including child categories, using the default menu navigational style, and displaying recent posts on first load, WP-SNAP! would be called like this:

    <?php if (function_exists('wp_snap')) { echo wp_snap('cat=15&child=true&firstload=recent'); } ?>

    To create a navigational menu for the current category, excluding child categories and using navigational menu style 3, WP-SNAP! would be called like this:

    <?php if (function_exists('wp_snap')) { echo wp_snap('menu=3'); } ?>

    To create a navigational menu for all categories, using default navigational menu style, WP-SNAP! would be called like this:

    <?php if (function_exists('wp_snap')) { echo wp_snap('cat=all'); } ?>
  7. Test it out and enjoy!

Note: For the Plugin to work, you must have access to edit your WordPress Theme files. You must also have a category.php template file in your WordPress Theme. If you do not, you can create one following the instructions on the for creating a category template file.

CSS Styling

It should be noted that this plugin does not inject any css styling information, so it is up to the user to add the appropriate class information to the Wordpress Theme css stylesheet. Here is some sample code to get you started:


ol.snap_nav {
	display: inline;
	float: left;
	clear: both;
	list-style: none;
}

ol.snap_nav li {
	display: block;
	float: left;
	padding: 0 2px 10px 0;
}

ol.snap_nav li a {
	font-weight: bold
}

ol.snap_nav li.snap_selected a {
	cursor: text;
}

ol.snap_titles {
	clear: both;
	display: block;
	border: 0;
	list-style: none;
}

Feedback

This plugin thrives on user feedback. Praise, ideas, and bug reports are all welcome. Use the comment form below to let me know what you think. Please keep in mind that I am not paid to work on this plugin and that delays between updates can and will occur. Please do not post questions about when the next update will be released. I appreciate your enthusiasm, but your comment will be deleted. If there is a significant delay between releases, I try to post a timeframe of when the next update can be expected.

Thank You

My thanks to Lorelle VanFossen for reviewing my plugin and allowing me to reuse her instructions on this page.

Change Log

  • 06.2008.10 Version 0.8.5
    • Added international language file support
    • Changed the method for passing data to the plugin
    • Tracked down bugs
  • 06.2008.08 Version 0.8.4
    • Made the plugin compatible with Wordpress’s new tagging system
    • Corrected problem with listing recent posts
  • 04.2008.03 Version 0.8.3
    • Fixed a small — but significant — typo
    • Moved the administrative submenu to plugins.php
    • Added the ability to display All/None/Recent posts on first load
  • 12.2007.02 Version 0.8.1
    • Fixed incompatibility with PHP 4
  • 11.2007.28 Version 0.8
    • Added support for fancy URLs
  • 10.2007.04 Version 0.7.3
    • Fixed error with Wordpress 2.3 database call
  • 09.2007.28 Version 0.7.2
    • Made database call compatible with Wordpress 2.3
  • 06.2007.02 Version 0.7.1
    • Fixed error with database call
  • 05.2007.30 Version 0.7
    • Fixed issue preventing the display of more than 10 posts
    • Fixed issue with sorting uppercase/lowercase post titles
    • Restored ability to pass a category to the plugin
    • Added ability to include category children in returned results
    • Added ability to display all categories
    • Added ability to change navigation style when calling the plugin
    • Added support for Gengo (hopefully)
  • 05.2007.12 Version 0.6.2
    • Restored the ability to exclude first words from being alphabetized
    • Cleaned-up some instructional text in the options menu
  • 01.2007.21 Version 0.6.1
    • Fixed a minor error with the $wp_snap_category variable
  • 01.2007.20 Version 0.6
    • Rebuilt the entire plugin to be better, stronger, faster
    • Changed how results are displayed; plugin now plays well with the Wordpress loop
    • Removed option to pass a category number directly to the plugin, making it incompatible with Pages (feature to return if requested)
    • Added nonce protection to the admin options panel
    • Added option to group posts beginning with a number under ‘#’
    • Fixed unencoded ampersands
  • 09.2006.20 Version 0.5.4
    • Updated WP-SNAP! to ignore posts with post-dated timestamps
  • 08.2006.02 Version 0.5.3
    • Fixed an error that affected certain navigational menu styles
  • 08.2006.01 Version 0.5.2
    • Updated alphabetization to accomodate accent marks; still needs refinement
    • Fixed a logic error with the post title sort loop
  • 06.2006.07 Version 0.5.1
    • Squashed some bugs in the new ignore filter
  • 06.2006.06 Version 0.5
    • Words can now be filtered from the alphabetization process from the WP-SNAP! admin options menu
  • 06.2006.01 Version 0.4
    • Added ‘#’ to catch category entries beginning with non-alphanumeric characters
    • Tweaked the code here and there
    • Fixed the WP-SNAP! plugin url on the admin options page
  • 05.2006.13 Version 0.3.1
    • Fixed the url structure of the navigation when used on a Page
    • Added ‘apply_filters’ to the post excerpt
  • 05.2006.08 Version 0.3
    • Plugin no longer displays excerpts for password protected posts, if the viewer is unauthorized
    • If there is no excerpt for a post and excerpts are turned on, plugin now creates an excerpt from the post content
    • Fixed a typo
  • 03.2006.29 Version 0.2
    • Added the ability to pass a category number directly to the plugin, making WP-SNAP compatible with Pages
  • 03.2006.29 Version 0.1
    • Initial Release

Technorati TagsTags: , ,


Comments

Pages: « 112 13 14 15 [16] Show All

  • A new version of the plugin has been released! As promised, I have made WP-SNAP! compatible with tags. So, if you want to create an alphabetical navigation system for your tag template, you can now. I also fixed a serious bug with the recent posts feature. Recent posts were being displayed even when the user navigated to a specific letter, so it basically wasn’t working at all. Well, now it should.

    Let me know what you guys think. If you find a bug, speak up!

    Thanks.

  • Recent posts working beautifully. Thanks so much!

  • … one minor problem: paging doesn’t seem to work with the recent option. Should it?

  • Stephanie — The plugin does not currently support paging. Sorry.

  • No worries. Thanks!

  • Once again, a new version of the plugin is now available. This update has an important change to the way requests are passed to the plugin. PLEASE READ THE REVISED INSTRUCTIONS ABOVE FOR INSTALLING THIS PLUGIN BEFORE UPGRADING. If you are passing arguments to the plugin (selecting a category to display, displaying recent posts, etc.) I have changed the format to a query-string. Many Wordpress Tags work this way and I think it’s a much more flexible system to use. Hopefully, my explanation above in the instructions is clear. Please let me know if you have questions.

    I have also added preliminary support for foreign languages. The plugin should accept language files from latin-based languages with no problem. However, languages that use characters beyond the “standard” western 26-letter alphabet will still not function correctly. It turns out? This is really, really hard to do. If you want your language supported, please use PoEdit to translate the text in this plugin and contact me about it so I can get a copy from you. Once I have a language file to work with, I will do my best to make this plugin work with your alphabet. If anyone knows how to code natural sorting for international languages, I would really appreciate your help. Of course, anyone who contributes to this plugin will be acknowledged as a contributor in all future versions. Here’s your chance for fame and fortune. ;)

  • Love the program. I was just thinking this morning that it would be nice to add a AJAX feature that when you ran across the buttons at the top, the system would display the next group of posts. I may work on hacking you’re code to do that, but if you get to it first ….

    Great plugin

  • Nathan, I am a fan of the WP-SNAP plugin. I have a problem with the latest version 0.8.5. I just noticed after upgrading from 0.8.2: WP-SNAP is skipping the first result, and it’s displaying everything from the 2nd result, on down. For example under “T” it should start with my post titled “Taught” but instead it starts with “Teenage,” and skips Taught. Under “C” it should start with “Caged” but instead it starts with “California,” and skips Caged. The arguments I am using are to show “all” categories, and firstload=none. I am using this on a Page - is that alright? Your documentation always talks about using it on a Category. I use it on a Page. If you want to see my URL please email me for it because the site isn’t meant to be linked for the public yet although it is live on the web. Thanks for your plugin and any answer on my issue!

  • Nathan, Disregard the previous message. I messed around with it, broke it completely, and finally fixed it where it works like it should. I think I had the call for the WP-SNAP in the wrong spot in relation to The Loop, or something. Anyway, it works now with 0.8.5. Good plugin, thank you.

  • Hello Nathan,
    I recently upgrade to wp-snap 0.8.5, and also deleted a few categories. Not sure if it was the upgrade but I’m having problems with wp-snap. I tried to update the calls with

    and get this error:

    Warning: natcasesort() [function.natcasesort]: The argument should be an array in /home/user/public_html/wp-content/plugins/wp-snap/wp-snap.php on line 349

    Warning: array_values() [function.array-values]: The argument should be an array in /home/user/public_html/wp-content/plugins/wp-snap/wp-snap.php on line 350

    Warning: Invalid argument supplied for foreach() in /home/user/public_html/wp-content/plugins/wp-snap/wp-snap.php on line 352

    any ideas?

  • Munki — It looks like there aren’t any entries in the category that you are calling. It’s probably because you deleted the category itself. If your call to WP-SNAP! is customized in any way, you might want to make sure that you’re using the updated query-string structure.

    Dgold — You wouldn’t know it to look at the comments on this board, but self-solving problems like yours pop-up all the time, I just usually delete them from the thread. I’m sorry that you ran into problems upgrading, but I’m glad to hear that you were able to solve them.

    Steve — AJAX is a neat idea. I have no idea when I’ll find the time to learn javascript, but it’s a neat idea. :)

  • Thanks for the reply but I’m still confused (sorry not too good with wordpress).

    I’m trying to add WP-Snap just to one page. I’m using the default theme so I don’t have a category.php and when I add to my page.php it adds it to ALL my pages.

  • Hi,

    i was search for samething but for subcategories not the posts.

    look i have a lyrics site using wordpress. i created parent categories and on those parent categories pages i show all the list of child categories. Now the child categories are more then 3000 so i want to give them alphabetic pagination. Here is my category page http://www.lyricspk.com/hindi-movies/

    you can see long list of child categories here. so how i can give them alphabetic pagination. Like A,B,C,D….

    i used wp_list_categories function to show all the child categoris.

    Please Help!

  • thanks for the great plugin Nathan!
    but i want to ask you how to show the menu on category page or single page??
    actually it show when i call it from category or page php.
    but it’s not clickable…
    do you know what the problem is?

  • This is exactly what i was looking for.

  • Paul — My apologies for not answering your requests for help, but I don’t really have time to walk you through how Wordpress works. You need to take the time to learn how Page and Category templates work and how to give a specific Page or Category it’s own template. It really isn’t very hard and I think it’s unfair for you to ask me to do this work for you — especially when there are lots of websites out there full of tutorials that explain how to do exactly that.

    athar — It’s been requested before, but this plugin does not alphabetize categories. I’m not sure it ever will.

    egi — My apologies for not answering your requests for help, but I don’t really have time to walk you through how Wordpress works. I don’t know why they are not clickable, but I’m guessing it’s because there is no content in that category.

    Philix — I’m glad to hear it!

  • I have installed the plugin and added the code mention in the 3rd point of installation in wp-includes/category.php. And when refreshed the page, i cannot see any changes.I have only one post in my blog.Is this is the issue, or the plugin can be seen even if my blog contains only 1 post?.Please help

  • This is a relly great plugin - many thanks to you!
    I have tried to implement the snap_nav navigation bar into the single pages which are indexed by wp_snap too - by now without success.
    Could you please give me a hint, how I can implement this?

    Cheers and thanks in advance,
    Jens

  • @Munki: I had a similar error until I got the arguments right. This what I added to my category.php file:

    <?php if (function_exists(’wp_snap’)) { echo wp_snap(’child=true’); } ?>

  • Well, I somehow missed that these comments were posted — I’m going to have to check my email filters. Sorry for the delayed response.

    rathore — If there is no content (ie, posts), the plugin will not work.

    Jens — I’m sorry, I don’t realy understand your question. Are you saying that you want the plugin to appear on a Page or on an individual post? It should work fine on a Page, but there may be problems getting it to display on an individual post. It wasn’t really meant to work that way.

    Richard — My skills as a technical writer are poor, of that I am certain. If you or anyone else has suggestions about how I could make my instructions for implementing this plugin more clear, I’m all ears. Anyway, thanks for the assist.

  • Pages: « 112 13 14 15 [16] Show All

    Leave a Reply

    Allowed markup: a blockquote br code em pre strong ul ol li

Download The Latest Release

WP-SNAP! v0.8.5 (zip archive)

View The Code

WP-SNAP! v0.8.5 (phps)

Make A Donation

If you find this plugin useful, please consider making a donation. It's a great way to say “thank you” for all the hard work that has gone into its development.

Frequently Asked Questions

  1. When will the next version of your plugin be released?

    As soon as I find the time, I will update the plugin and release a new version. I understand how frustrating it can be to be so close to having the perfect Wordpress installation only to be held up by a plugin that just needs a little more work to be exactly what’s needed. However, please remember that I am not paid write this plugin and that, like you, I have a family and responsibilities that extend far beyond this little piece of code. I really appreciate your enthusiasm, but if you wish to reap the benefits of my freely given labor, then you must be satisfied with doing so on my timetable. Otherwise, if you simply cannot wait, you are more than welcome to modify and extend the capabilities of my plugin yourself.

  2. Why do the results WP-SNAP! returns look funky? Why is it numbering every item?

    A web page is composed of two parts: a document containing HTML code and a document containing styling code (known as a Cascading Style Sheet, or CSS for short). Because WordPress templates can look so drastically different from one another, I have intentionally avoided injecting any CSS information into WP-SNAP! However, I have included several ID selectors (that can even be modified from within wp-admin) that should allow you to style WP-SNAP! to look however you’d like. Those numbered lists? You can turn them off. I do ask that you try to refrain from asking me CSS related questions — while I would love to help you, my time is limited. If you would like to learn more about CSS, I suggest visiting A List Apart or Vitamin.

  3. I tried using your plugin, but it just won’t work. What am I doing wrong?

    Unfortunately, I don’t have the time to troubleshoot every installation of this plugin. However, if you believe you have discovered a bug, I encourage you to post a comment to my website and I will reply as soon as I can. I do request that you be as specific as possible when asking for assistance. Please provide a detailed account of the steps you took that resulted in the error you encountered so that I can try to reproduce it and more quickly deduce how to fix it.