WP-SNAP! WordPress Plugin

Permalink  |  Comments [348]

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: « 15 6 [7] 8 918 » Show All

  • Travis — Sorry, but that will probably never happen. I can’t see most users needing to organize the 100+ categories one would probably need to make such a function necessary. However, you are free to explore the code I use it WP-SNAP! and learn from it so that you can create your own PHP code.

    Gionni — Thanks for the feedback. You don’t explicitly say so, but it sounds like this was a bug? I don’t have time to look into right now, but I’ll look into when I can.

  • Yo, Sweet, … no seriously… Sweeeeeet. (eeeeet)
    One prob i ran into is that google bot chokes on the url syntax, think you could make it so we can use perma link style urls?

    example:
    http://totalhealthlife.com/wordpress/category/information-center/?snap=UVWXYZ
    google thinks that this is an ‘Unreachable URL’. I thought it might be that that WP was inundated and therefore google couldn’t reach it at that time but it seems that it is constantly on the my list of unreachables so i’m thinkin it must be the ‘/?snap=’ url command… any ideas?

    love the plugin, thx.

  • Bhaidaya —

    Thanks for the positive feedback. With regards to the current URL scheme, this has been mentioned before and my response is the same: what would a “permalink” style URL look like? I’m sure it can be done, but I need user feedback to provide me with an understanding of what a better URL would look like.

  • Wow, Prompt!
    I’m thinkin */category/snapUVWXYZ/

    - or -

    */category/snap/UVWXYZ/

    - or better yet -
    */category/snapindex/A/

    anything that does not include your atypical ‘dynamic’ page characters (?, &, =, ! etc.)

    hey while i got your ear… when i click on “U-Z” it would be cool to make it so that the first post on the page is the first ‘U’ Document, or at least a toggle that couples the navigator and the documents listed. Take a look at my page, when a user is searching for a specific title and they go as far as clicking the ‘U-Z’ it should start them off in that section so they are looking at documents that start with ‘U’, que no?

    wicked plugin…

  • Bhaidaya —

    Clicking on “U-Z” on your site brings up two post titles, the first beginning with the letter “V.” I assume that you do not have any post titles that begin with the letter “U” yet. So, I guess I don’t quite get your request. If you’re referring to the documents listed below the WP-SNAP! call, the plugin has no control over what happens in the Wordpress loop. You can get WP-SNAP! to list a post excerpt by activating that option in the admin page, and then remove your loop and that should get you closer to what you want. You might need to hack the plugin a little bit to get it to display posts like you have them currently set-up, however.

  • Nathan -
    Sorry, I was in the hypothetical, please excuse my hypothetical-ness. There are only test documents in that category for the most part, still populating it…

    ‘the plugin has no control over what happens in the Wordpress loop’
    I assumed as much, i just figured that functionality would be a nice addition. I will toy with the WPsnap excerpt function, i currently use the ‘the_excerpt_rss()’ function provided by WP because it strips all the HTML and unfriendly chars therein. I’ll hack away.. Thanks for your help.

    Any thoughts on the perma-link style wpsnap command?

  • I like your plugin, I think I want to use it for my site.

    The issue I’m worried about is this. IF I install it, and add new defintions (as posts) wont they show on the main page? I just want them on the glossary page, not in the RSS feed, or Archives or the main page.

  • Hey Nathan,
    I read your reply but was just wondering if something would work. In your plugin file:

    // Database query
    $wp_snap_posttitles = $wpdb->get_results(”SELECT `post_title`, `post_content`, `post_excerpt`, `ID`, `post_password` FROM $wpdb->posts, $wpdb->post2cat WHERE `post_id` = `ID` AND `post_status` = ‘publish’”);

    Couldn’t you change this just to query category titles instead of post titles? I don’t know much.

  • Bhaidaya — Hmm. You might be on to something. It might be easier for me to hook into the Wordpress loop rather than reinvent the wheel. I hadn’t thought about it like that, but it could work. I’ll look into it. I’m planning to set aside a few days in Late December/Early January to pump out a new version with some new features — I’ll check into it then.

    Zonetrap — You can exclude specific categories from your Wordpress loop. So just exclude your definitions category from your front page.

    Travis — I wish I could say it’s that easy, but it’s not. You’re on the right track, the query does need to be changed. But a lot of code depends on the array created by that query, and that code is going to break. WP-SNAP! is licensed under the GPL, so feel free to play with it. Again, with the limited amount of time I have to work on this plugin, I have to focus on the features that will meet the needs of the most users — my apologies. Good luck!

  • Lorelle: “I also vote strongly for…an option to group all numbers together.”

    Yes, yes, yes. I second this motion. I would love to see a single “#” heading. It gets a bit confusing and clunky when there are a dozen different numbers listed. Maybe this can be included in the next version? :-)

  • Hi! Great Plugin!

    I would also appreciate it very much if we could group all non-letters to “#”.

    Lee

  • Hi!

    It doesn’t matter where I paste the code, I always get this error message:
    Parse error: syntax error, unexpected '?', expecting ')' in archive.php on line 5

    Why is that?

  • Frank & Lee — Gotcha. Another week or so and I should be able to get started on the next version.

    Slfver — I’m guessing that you’ve got a syntax error on line 5 of your web page. Is there PHP code on line 5? Are you missing a closing quotation mark? If you have an error elsewhere in your PHP code, it probably is what is causing an error to be thrown-up when you try to paste in the code for WP-SNAP!

  • Great plugin. I’d like to put in a vote towards cleaner urls. Idealy something like site.com/glossary/t. A single # heads would be nice to.

    Also, how hard would it be to make more then one glossary for a site? Would it work if I duplicated the plugin and replaced all of the snaps with something like… snop?

    I can’t wait for the next update!

  • well great: line 240 is just what i was looking for you beautiful pumpkin.

  • This is so majorly awesome :)

  • I’m having trouble validating my WP-SNAP pages because the plugin seems to generate unencoded ampersands in the URLs. The links in the A-Z menu look something like:

    A

    …and I get the error: “general entity ’snap’ not defined and no default entity”.

    Any ideas?

    Such a useful plugin!

  • Sorry, the ‘A’ was meant to read:

    A

  • Mike — You should be able to use WP-SNAP in multiple locations on your site. Are you finding that you cannot? Is there something that needs to be improved?

    Skelf — Are you saying you’re having a validation error or a usage error? You’re right that I’m not encoding ampersands and that I should be — I’ll fix that. But is there a further problem? Please let me know.

    I’m finally working on the next version, which will be 0.6. I’m making some pretty big changes to how the plugin works, which should make it a lot more flexible and useful. It may be another week or so before I release it, but keep your eyes peeled. :)

  • There’s no usage error, just a validation error - the only one on my site and I’d love to get rid of it. I can’t figure out how to display code here, but the problem is basically caused by the ampersands in the links in the A-Z menu, e.g. cat=1&snap=A. Does that make sense?

    Thanks a million for your help.

  • Pages: « 15 6 [7] 8 918 » 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.