Autonav Image Table Based Site Navigation plugin for WordPress
Latest commit 0ff0e88 Aug 20, 2015 @lindleyw Minor cleanup


=== AutoNav Graphical Navigation and Gallery Plugin ===
Author: William Lindley
Author URI:
Contributors: wlindley
Donate link:
Tags: child, pages, posts, navigation, gallery, thumbnail, thumbnails, attachments, subpage, taxonomy, custom post types, custom fields
Requires at least: 3.5
Tested up to: 4.2.2
Stable tag: trunk
License: GPLv2 or later
License URI:

Creates lists/tables of text/thumbnails/links to posts, pages, taxonomies, attachments, custom post types, image directories.

== Description ==

Auto Graphics Site Navigation with Gallery

This plugin simplifies the creation of graphically navigable Wordpress
sites, creating a list or tables of pages, posts, taxonomies, and
custom post types, selected in a variety of ways. Highly customizable
output using a variety of optional user-defined filters.

  * Sites with nested pages can show a table of clickable thumbnails
    of child pages, with size of the tables, and the number of rows,
    automatically computed to fit, based on the thumbnail sizes.
  * A table of posts selected by tag, category, or author can be
    displayed in the same manner.
  * Thumbnails of pictures, and the galleries of pictures added in
    each page, can be automatically resized either through a single
    default setting in the Wordpress administration page, or by
    specifying a size in each page.  Missing thumbnails will be
    automatically generated.
  * A gallery of images can be created simply by placing them in a new
    directory under the wp-content/uploads directory.  Standard
    command-line or FTP tools can then be used to move, rename, or
    delete images.
  * Output and page/post selection is extensible through the use of
  * Works with WordPress's standard attachment mechanism, and with
    J. Christopher's "Attachments" plugin (see FAQ)

NOTE: You can raise issues or participate in development at [GitHub](
If you experience errors or missing pages, you might try the [previous
stable version](
All previous versions are archived [here](

The plugin is invoked with the [autonav] shortcode, with two basic modes:


Creates a list or table of the current page's child pages. Tables are
composed of linked thumbnail pictures (see "How is a Child Page's
"Associated Image" determined?" in the FAQ). Example:

    [autonav display="images" pics_only="1"]

displays a table of the current page's child pages.  Only child pages
that have associated pictures will be displayed.  The table will have
3 or 4 columns depending on the default size of the thumbnails and
depending on the column settings in the Wordpress administration


Creates one or more tables of linked thumbnail pictures based on the
current page's attachments, or on specified directories of picture
files under the uploads directory. Examples:

    [autonav display="attach"]

displays a table of images attached to the current post or page.

    [autonav display="/project2" include="32,37,56"]

Displays a table, with a gallery of three pictures from the
wp-content/uploads/project2 directory, in the specified order.

    [autonav ids="57,65"]

For compability with the [gallery] ids parameter introduced in
WordPress 3.5, displays a table of attachments with the exactly
specified attachment IDs.

== Screenshots ==

1. Child pages displayed in two different ways, first as a list and
   then as a table.
2. AutoNav used together with the Hierarchical Pages plugin on the
   Fisher Shotcrete site. Along with the third screenshow, demonstrates
   how graphical navigation of a large site can work.
3. Second-level page on the Fisher site. Note, with Hierarchical
   Pages, only the pages that are "siblings" to the current page are 
   listed in the sidebar (otherwise there could be hundreds).
4. Demonstrating a "magazine style page template" where the first
   attachment (a) is displayed at large size, the second (b) in a
   medium, and all subsequent ones (c) as small thumbnails.  Merely
   reordering the attachments updates the page and creates any needed

== Installation ==

This section describes how to install the plugin and get it working.

1. Create the autonav-wl directory in the `/wp-content/plugins/` directory,
   and place the plugin files there.
2. Activate the plugin through the administration menus in Wordpress.
3. Configure the plugin under Settings in the Wordpress administration menu.

Additional add-ons, which are plugins that tie into AutoNav's filters,
are in the file.  (The additional complication of this zip
within a zip is because WordPress's plugin system has no way to handle
"optional but part of the distribution" plugins).

= How to use the addons =

In your AutoNav plugin's directory you should find a file,
which contains several add-on plugins in a subdirectory.  Move only
the files you wish to use, into the same directory as the
autonav-wl.php file itself.  Then enable whichever addons you wish.

== Shortcode Parameters ==

Parameters not specified will be taken from the values set in the
WordPress admin panel. The optional display parameters should be
enclosed in the display argument; for example,
`[autonav display="posts,list,thumb,title"]`

* `display="x"`  Displays a list or table, based on "x" as follows:

    - `images` -- a table, with one cell for each of the child pages of the current page.
    - `list`   -- a list, with an entry for each child of the current page
    - `attached` -- a table of images attached to the current post or page
    - `attachments` -- table of items from the "Attachments" plugin (see below)
    - `posts`  -- a table of posts listed in the postid="" parameter
    - `posts:TYPE` -- a table of posts in custom post type TYPE
    - `/folder` -- a table of images located in wp-content/uploads/folder

    Optional parameters, in a comma-separated list:

    - `list` -- Used with display="posts" for list, not table
    - `plain` -- Replaces unordered-list with a div, for use with
      JavaScript/jQuery slideshows, etc.
    - `thumb` -- Display the thumbnail for the pages or posts
    - `title` -- Display the title for the pages or posts
    - `excerpt` -- Display the child page's "manual excerpt" (see FAQ)
    - `siblings` -- Display siblings (other children) of the current
    - `family` -- Display all children, grandchildren, etc. of page
    - `self` -- Include the current page (with siblings, or family)
      (normally the current page or post is excluded)
    - `image` -- For posts, link to full-size of thumbnail instead of
      to post itself
    - `page` -- For attachments, link to attachment page
    - `nolink` -- Disables links entirely The above parameters may be
      preced by 'no' to disable the feature (as when set by default or
      in the plugin options page).

    Example: `display="list,notitle,thumb,excerpt"`

* `caption="x"` Adds a caption to the table. (First table only, see `combine` below)

* `columns="4"`  Displays 4 columns of images
* `size="x"`	  Choose a display size 'x' as:

    - `thumb` (*or*: `thumbnail`), `medium`, `large` -- Wordpress standard sizes
    - `size_small`, `size_med`, `size_large` -- sizes from AutoNav settings screen
    - `300x200` -- force images to be resized/cropped to an exact size
    - `auto` -- uses settings from autonav control panel

    Sizes registered with add_image_size() should also work.

* `titles="1"` Displays page titles below images if 1 (default: "0")
  (same as using `title` parameter to `display=`)

* `pics_only="1"` When displaying child pages, only show those with associated images

* `ids="57,65"` Selects the attachments with the exactly specified
  attachment IDs. `display=` is assumed to be "attach". Works
  similarly to WordPress's built-in [gallery] shortcode. `orderby=`
  defaults to the exact ordering given, but can be overridden.

* `include="1,7"` Used with `display=/folder` syntax only; others, see
  postid parameter.  The resulting table will have only two pictures,
  the first found ending in "1" and "7" -- note that because both 1
  and 7 are numeric, the image "pic11.jpg" would not be included, but
  "pic1.jpg" or "pic01.jpg" would be.  For non-numeric values, the
  first found picture whose name ends with the value given will be

* `exclude="3,dessert"` Excludes posts/pages with ID 3 and the slug
  '`dessert`' **Note**: To *include* posts or pages by category, author,
  etc, see the `postid` parameter.

* `combine="x"` Combines table rows as follows (default: "all")

    - `all`  -- all rows combined into one table
    - `none` -- each row a separate table
    - `full` -- combine all full rows into one table, with trailing row a separate table (so it can be centered)

* `crop="1"` Crops images to fit exact size, or "0" to fit maximum
  into size, centering image; "2" crops from upper-left; "3" from top
  middle (useful with head-and-shoulders portraits)

* `sharp="1"` Changes downsize algorithm from 'resample' (smooth) to
   the more blocky 'resize' (see below)

* `start="1"` Starts at the second image or page (counting from zero)

* `count="2"` Includes only two images or pages

* `paged="12"` Displays 12 images on one 'page' along with next/prev,
  and page numbers.  **Note**: 'start' and 'count' are applied first to
  trim which images are included in those displayed and paged.

* `order="desc"` Sort order: "`asc`" ascending, "`desc`" descending, "`rand`" random.
  See the 

* `orderby="x"` Where 'x' is any orderby parameter (e.g., `date`, `title`) from the
  or one of:

    - `postmash` -- use order defined by PostMash plugin
    - `meta:subpage_title` -- sorts by any custom field; here we sort
      by the child page's title as overridden by the subpage_title
      custom field (see FAQ section)

    The orderby parameter is not used when displaying attachments or
    images from a directory.

* `imgrel="lightbox"` Sets the relation tag of the created links as:
  `<a rel="lightbox" ...>`

* `group="vacation1"` When combined with `imgrel="lightbox*"` this
  sets the relation tag to be: `rel="lightbox[vacation1]`

* `postid="123"` Displays images or subpages attached to the page(s)
  or post(s) with the given ID, or comma-delimited list of IDs,
  instead of the current page or post. Can also select posts in
  category/tag/author; or pages with specified path, author or custom
  field value.

  In addition to a numeric postid, you may select **posts or pages**
  as follows:

    - `postid="cat:17"` posts in a numeric category or categories
    - `postid="category:17"` (same, 'cat' is abbreviation)
    - `postid="category:-17"` posts *not* in a numeric category
    - `postid="category:cakes"` posts by category name
    - `postid="category__in:cakes,cookies"` posts in any of the listed categories
    - `postid="category__and:cakes,chocolate"` posts that must be in both
    - `postid="category__not_in:cakes,chocolate"` posts not one or more categories
    - `postid="category:*"` posts in the same category as the current post/page
    - `postid="tag:37,38,53"` posts with numerically specified tag(s)
    - `postid="tag:chocolate"`  posts by tag name
    - `postid="tag__and:chocolate,hot"` posts that have both tags
    - `postid="author:27"` posts or child pages with a specific author
      by ID,
    - `postid="author:Todd"` author name,
    - `postid="author:*"` same author as current post or page.
    - `postid="status:future"` future posts or pages. *see* list in the
      `status=*` for same status as current post/page.
      Can also use custom status types.
    - `postid="movies:comedy"`  posts tagged in a custom taxonomy
    - `postid="movies:drama,horror"` posts with any of those tags in
       custom taxonomy (if 'movies' taxonomy is defined) or with
       custom field
    - `postid="month:january"` subpages of current page, with custom
      field "month"="january" **Note**: selection of Pages by *taxonomy* not
      yet supported
    - `postid="recipes/desserts"` page by its full path (NOT merely its slug)

You can specify both a page/post ID _and_ one of the above.  For example,
postid="27,author:Todd" would show subpages of the page with ID=27 that have
author Todd.

Note that any of several plugins, like [this
must be used to associate a category with a page. Once you have done
so, you can for example, create a page for each of your categories
which will display a list of the most recent posts in "its" category:

    [autonav display="posts,nothumb,title,list" postid="category:*"]

You could also display a list of all the most recent posts *not* in
the page's category:

    [autonav display="posts,nothumb,title,list" postid="category__not_in:*"]

The postid selectors category__and, category__in, category__not_in
permit more complex category selection, as described in the

You may also select **attachments** based on their parent (given by
slug or post-ID), their author (which WordPress sets when the
attachment is uploaded; there is no built-in way to edit an
attachment's author, although a plugin may provide one), by `status`
or by the categories or tags set through the [Media Tags
plugin]( or the
[Attachment Taxonomy

    [autonav display="attached" postid="recipes,tag:dessert"]

would display images, attached to the recipes page, having the
attachment tag "dessert".

It is even possible to display attachments having a certain tag or
category from *all* posts and pages, a special case of `postid="-1"`:

    [autonav display="attached" postid="-1,tag:dessert"]

 **Note** that you must set the taxonomies on the AutoNav settings
page.  For Media Tags, use attachment tag, "`media-tags`"; for the
Attachment Taxonomy plugin, use "`attachment_tag`" and
"`attachment_category`". Other taxonomy names are permissible in hopes
of being compatible with future WP versions.

NOTE: The Sharp parameter is now regarded only by an optional
addon. Additional example values are:

   * 0 -- standard smooth resample
   * 1 -- standard blocky resize
   * 60 -- resize, with 60% image quality on JPEG save
   * 95.75 -- intermediate image resized down by 75%, then resampled
          to final giving a "75% sharpness" factor, then saved with
          95% image quality
   * 90.50 -- "50% sharpness" and 90% image quality
   * -60 -- resampled, and saved with 60% image quality

== Frequently Asked Questions ==

= How is a Child Page's "Associated Image" determined? =

AutoNav uses the first of these that exist, as the associated picture
for a child page:

* The value of the custom field, subpage_thumb.  The value can be
either a URL (http://......) or a path relative to the
wp-content/uploads directory (2011/07/image.jpg).

* The post/page Thumbnail ("Featured Image") as set in WordPress
(assuming your theme supports them -- see next question on how to
enable theme support).

* The attached image with the lowest Order as chosen in the Gallery
tab of the attachment dialog.

NOTE: If a URL is given in subpage_thumb, that image will be used
directly; AutoNav cannot resize it.  In all other cases, AutoNav will
create the needed thumbnail images automatically.

= How do I enable post thumbnails in Wordpress? =

If you don't see the Post Thumbnail (or Featured Image) section in
your administration screens, add this to your theme's functions.php --

  <?php add_theme_support( 'post-thumbnails' ); ?>

= How do I override the title for a child page? =

Create a Custom Field called subpage_title for the page.  Set it to
what you would like displayed in the table or list of child pages.

= How do I use AutoNav on my "home" page, to show all my sub-pages? =

When invoked on the page set as the Static Home Page, if that page has
no children, then the other pages at top level (those with no parent)
are considered as children of the home page.  In all other cases,
if you wish to display pages at the same level as the current page
(i.e., the other children of the parent of the current page), you can
use the 'siblings' parameter.

= How can I display posts in a list? =

The following will display posts in the 'desserts' category, in a
bulleted list, with the title as a link to the page:

    [autonav display="posts,list,title,nothumb" postid="category:desserts"]

The "nothumb" parameter suppresses the "missing image" error message
for posts that do not have thumbnails.

To display posts not in a certain category, use the category's slug as

    [autonav display="posts,list,title,nothumb" 

You can use multiple category IDs or slugs with the three modifiers
category__in (posts in any of the categories), category__and (only
posts which must be in all the categories listed), or category__not_in
(posts which must not be in any of the categories listed).  This lists
posts that are in either the 'desserts' or the 'sweets' categories:

    [autonav display="posts,list,title,nothumb" 

= Only the first five posts get displayed. =

By default, WordPress's built-in function get_posts(), which is what
AutoNav uses to find posts and attachments, only returns the first
five results.  You can choose how many you wish displayed with
something like this:

    [autonav display="posts,list,title,nothumb" postid="category:desserts"

If you would like the viewer to be able to access more than the first
ten posts, you can use the paged parameter:

    [autonav display="posts,list,title,nothumb" postid="category:desserts"
    count=10 paged=10]

which will display 10 posts, and include "next/previous" links to
navigate through any additional ones. (Example courtesy spartaneye)

= Can I display a random gallery? =

Try this:

    [autonav display="attached" postid="-1" orderby="rand" count=10]

which will display ten of your attachments at random, regardless of
the post or page to which they are attached.  The special case of -1
for postid means "any post or page."

= What CSS classes does this plugin create? =	    

In navigation mode, when a list is selected:

   * ul elements have class: subpages-list
   * li elements have class: subpages-item
   * Excerpt text: subpages-excerpt
   * Thumbnail images: subpages-list-image

In table modes:

   * table elements: subpages-table
   * tr elements: subpages-row
   * td elements: subpages-cell
   * p elements inside each td: subpages-text
   * Thumbnail images: subpages-image
   * Excerpt text: subpages-excerpt

Next/Previous page links (with 'paged' parameter):

   * p elements: subpages-pages

The 'subpages' prefix may be overridden by the 'class' parameter or 
on the administration screen.

= What custom fields will AutoNav use? =

These are described in detail in other FAQ entries:

   * subpage_thumb: Set to a URL ( or
     https://...)  or to a path relative to your uploads directory
   * subpage_title: Overrides the title of a page or post
   * subpage_excerpt: Overrides the excerpt of a page or post

= I updated the plugin, but the new parameters are not recognized. =

Go through the Autonav Options on the Wordpress administration screen
once, and save the options. That will add the new parameter names to
the list of recognized ones.

= Can I re-attach an attachment to another page? =

Thru the Change Attachment Parent plugin, which is an easy way to
reset the parent page or post for any attachment, right on the
attachment's Edit screen in the Media Library. You do need to know the
new parent's ID, though.

Another plugin adds the same feature to the Bulk Actions admin dropdown:

= How can I rearrange my posts and pages? =

Try the Pagemash plugin which lets you move pages up, down, in, out,
and around your hierarchy with the mouse.  It automatically changes
the pages' parents and menu order.

If it's posts you wish to rearrange, try this:

and use [autonav display="posts" orderby="postmash"]

= Can I disable certain attached images? =

Yes, using the Media Library in the admin screens, set an image's
Order to -101 or less, and it will not be shown with [autonav
display=attached] NOTE: rearranging attachments in WordPress's dialogs
will reset all those attachments' order to a positive number.

You can also set the post_status of an attachment to 'private' or
'draft' although Wordpress gives you no built-in menus to do this.

The Semi-Private Attachments plugin lets you mark an attachment as
private.  AutoNav respects this (as does the built-in gallery
shortcode) and will not display it.  The plugin also lets you disable
comments and pings for an attachment.

= Some of my images do not appear. =

If you upload a picture with a filename that resembles Wordpress' resized
image names, the Autonav plugin may not be able to find it.  For example,
if you upload a picture called mybike-640x528.jpg, Wordpress will create
thumbnails and there will be three files in the uploads directory:


Autonav will not find your "full size" picture, the 640x528 one, because it
ends in a dash followed by two numbers with an 'x' inbetween.  You will have 
to rename your original picture before uploading it into Wordpress.

= AutoNav does not detect a child page's, or a post's, thumbnail. =

Double-check that you have explicitly set a Featured Image for the
post or page. Merely invoking [autonav] in a post or page, although
that can cause a gallery to be displayed, does not set a featured

= How do I use excerpts with pages and posts? =

Examples of displaying excerpts:

    [autonav display="list,excerpt"]
    [autonav display="posts,list,excerpt" postid="category:news" pics_only=0]

For any post or page, you can always use the custom field
'subpage_excerpt' which will override any WordPress excerpt.

NOTE: By default, Wordpress includes the ability to edit manual
excerpts only for Posts, not Pages.  You can add a single line of code
to your theme's functions.php to enable excerpts for Pages:

    add_post_type_support( 'page', 'excerpt' );

= Can I call the plugin from a template? =

Yes, you may use this code in your template, for example, where you
wish a table of child pages' thumbnails:

    <?php print autonav_wl_shortcode(array('display'=>'images')); ?>

or where you would like a table of all attached images:

    <?php print autonav_wl_shortcode(array('display'=>'attached')); ?>

= Can I show all attachments, but highlight the first couple? =

Yes; try these three lines:

    [autonav display=attached columns=1 count=1 size=500x500]
    [autonav display=attached columns=1 start=1 count=1 size=300x300]
    [autonav display=attached columns=4 start=2]

You could even include similar calls in a template (see above), showing the 
first attachment in the large size in one place, the second attachment in
medium size elsewhere, and all remaining attachments at perhaps the bottom.

= Can I display tooltips? =

Yes, when displaying attached images, the image's Title as set through the
Wordpress admin screen is put into the 'a' tag's title attribute. On modern
browsers this becomes a tooltip when hovering over the image inside the anchor.

= How do I use AutoNav's filters? =

AutoNav provides filters which you can hook.  They are internally
called as follows.  Note that $class is the effective CSS class for
the item in question; $attr is the set of attributes for all pictures,
as passed in the [autonav] shortcode and taken from the default values
set in the administration screen; $pic is an array created for each
page, post, or the like.

* $pic_info = apply_filters('autonav_select', $pic_info, $attr); -- Is
  called whenever display= has a value which is not handled by any of
  the built-ins, so you can add your own display= values.  Return
  value should be an array in the style of pic_info (see source
  code). This filter is responsible for creating or finding all
  thumbnails and setting all links in the pic_info array. If your
  filter does nothing, you should return $pic_info to permit chaining
  multiple filters.

* $pic_info = apply_filters('autonav_thumb', $pic_info, $attr, $post )
  This filter is used to locate the featured thumbnail for a post or
  page. If $pic_info is not empty, successive filters assume that the
  thumbnail has been located, and return $pic_info unmodified.  The
  default behaviour is as follows:

    add_filter('autonav_thumb', 'autonav_thumb_featured', 10, 4);
    add_filter('autonav_thumb', 'autonav_thumb_specified', 20, 4);
    add_filter('autonav_thumb', 'autonav_thumb_attached', 30, 4);

* $attr = apply_filters('autonav_pre_select', $attr,
  $display_options); -- This permits you to modify the array which
  AutoNav uses to determine which pages or posts to display. Elements
  here are nearly same as values in the Options screen.

* $picked_files = apply_filters('autonav_pick_files', $picked_files, $attr, $pic_size_info);
  Given the calling arguments ($attr) and an array of image files found
  for the specified posts, pages, or directories. The latter array also
  includes information for each of the thumbnail sizes found for each
  of the full-size images.  The filter then picks which images are
  candidates to include, before the autonav_get_thumbnails filter.

* $pics_info = apply_filters('autonav_get_thumbnails', $pics_info, $attr, $pic_size_info);
  The filter chooses from available sizes in $pic_size_info, or
  creates resized images.

* $pic_info = apply_filters('autonav_post_select, $pic_info, $attr);
  This filter runs after AutoNav's internal page/post selection
  process, or after your custom display= selection filter (see above).
  At this point, AutoNav assumes that all links are set and any
  thumbnail images have been created.  With this filter, you can
  delete pages from the ready-to-format pic_info array of pages/posts
  to be displayed, or change values in the array, before the
  formatting code splits it into tables, or multiple pages (see WP:

* $html = apply_filters('autonav_create_list_item', $html, $class, $pic, $attr);
  $html = apply_filters('autonav_create_table_item', $html, $class, $pic, $attr);

  These create the individual list or table entries, and are called
  once for each post or page which exists in the 'selected' array as
  passed through the autonav_post_select filter.  The input $html is
  all the HTML output created so far; generally you will append to
  this and return the extended text. You may add additional filters
  here to be called in priority order along with the built-in methods;
  or you may remove the built-in filter and replace with your own.
  Note the following default priorities:
  Tables: 10 for Image and main content; 15, Title text; 20, Excerpt.
  Lists: 10 for Title text; 15, Image and main content; 20, Excerpt.
  For example, if you wanted to have list items add the picture first, and
  then the text, you could override the default order, and have the 
  built-in AutoNav functions called in a different order.  Put this in your
  theme's functions.php:

    add_filter('autonav_create_list_item', 'an_create_output_picture', 10, 4);
    add_filter('autonav_create_list_item', 'an_create_output_text', 15, 4);
    add_filter('autonav_create_list_item', 'an_create_output_excerpt', 20, 4);

* $html = apply_filters('autonav_create_page_links', $html, $class,
  $total_pages, $cur_page) -- is called in the case of a multi-page
  display.  Again you may wish to append, prepend, or replace.

* $html = apply_filters('autonav_html', $html, $attr);
  Permits you to filter the final HTML which AutoNav generates.

* $html = apply_filters('autonav_missing_image', $html, $pic);
  Filter for the text or HTML that will be displayed in the case of a missing
  image. You can adapt or replace the standard text according to what
  picture is missing.

You can hook into any or all of these as in the example below. This
code simply displays the contents of the attributes array, so you can
see how it works:

    function show_the_attrs ($attr) {
      print "foo";
      print "<br><pre>";
      print "</pre><br><hr>";
      return $attr;

    add_filter('autonav_select', 'show_the_attrs', 10, 1);

Here is an example of adding information to the table output; it
appends the (reformatted) date but only to posts. Note that
$pic['page'] is the post/page object from WP_Query.

    function my_create_output_date ($html, $class, $pic, $attr) {
      if (is_object($pic['page'])) {
        if ($pic['page']->post_type == 'post' && 
          strlen($pic['page']->post_date)) {
          $html .= '<p class="' . $class . '-date">' . 
            mysql2date('j M Y', $pic['page']->post_date) . "</p>\n";
      return $html;

    add_filter('autonav_create_table_item', 'my_create_output_date', 18, 4);

= Does this plugin create database tables? =

No, only the one entry which holds the settings.  This is in the
wp_options table, with option_name = "autonav_wl" and that will be
updated by going through the AutoNav administration screen (see above).

= I get an error that imagecreatefromjpeg is not defined =

Your webserver needs GD image support in PHP. On Debian or Ubuntu,
you can install that with apt-get, and then restart Apache. 
For example:

    $ sudo apt-get install php5-gd
    $ sudo /etc/init.d/apache2 restart

= Other Recommendations for Accompanying Plugins =

* Pagemash and postmash (see above) rearrange the order of posts and

* J. Christopher's Attachments plugin lets you attach anything in
  Wordpress's Media Gallery to any post.  See:

* Dion Hulse's Add From Server plugin makes it easy to upload images
  to your server with FTP and them add them directly into WordPress as
  attachments. In most cases this is now preferable to using AutoNav's
  "Gallery" mode.

* The [Media Tags
  plugin]( lets you
  add tags to attachments. For example, if a post has twelve
  attachments, you could tag three of them with 'dessert' and then
  display only those: `[autonav display="attached"
  postid="tag:dessert"]` *Note* You must configure the attachment tag
  taxonomy in the AutoNav settings screen.

* The [Attachment Taxonomy
  gives you both tags *and* categories for attachments, so for
  example: `[autonav display="attached"
  postid="-1,category:chocolate"]` to display all attachments from
  *any* post in the "chocolate" attachment category. *Note* You must
  configure the attachment tag taxonomy in the AutoNav settings

* The [Change Attachment Parent
  is an easy way to reset the parent page or post for any
  attachment. Or try the [Bulk Change Attachment
  plugin which adds the feature to the attachment's Actions admin

== Upgrade Notice ==

All versions: If you have upgraded AutoNav and are using new
parameters, you will need to go to the AutoNav Settings page on the
WordPress administration panel and save your settings.  This will add
the required default values which permit the parameter parser to work.

= 1.5.6 =

Lists will use the class given in the class= argument directly,
without appending "-list" and the enclosed items will omit the class
entirely.  You may need to modify your stylesheet along these lines:

    From: .myclass-list { ... }  .myclass-item { ... }
    To:   .myclass ul { ... }    .myclass ul li { ... }

= 1.5.0 =

If you have used the Media Tags plugin, you must set the taxonomies on
the AutoNav settings page: use attachment tag,
"`media-tags`". This now supports the Attachment Taxonomy plugin; use
"`attachment_tag`" and "`attachment_category`". Other taxonomy names
are permissible in hopes of being compatible with future WP versions.

= 1.4.8 =

When using display="post" you may need to add the nothumb argument:


if you want the previous behaviour of titles and no thumbnails.
For display="list" the default is still titles and no thumbnails.

Support addons via filters. "notitle" and similar parameters for
suppressing default behaviors.

== Changelog ==

= 1.5.10 =

* Minimal changes; adjusted Widget plugin to same version number.
* GitHub is locus for current development.

= 1.5.9 =

* Adjust multiple page handling to latest versions of WP.

= 1.5.8 =

* Add appropriate after_widget (Thanks Anatoli Vladev)

= 1.5.7 =

* Thumbnails with exact filenames are correctly preferred over filenames
  that happen to have the sought name at the start (prefix) or end (suffix).
  Thanks, Paul Burton of

= 1.5.6 =

* Three new CSS classes complement the existing `subpages-cell`:
   - `subpages-item` for all items in a list, including current
   - `subpages-item-current only` for the link to the currently displayed page
   - `subpages-cell` for all cells in a table
   - `subpages-cell-current` only for the link to the currently displayed page
* Eliminate undocumented requirement for postid parameter with
* Remove spurious brace in pages class.
* Add ids= argument for compatibility with standard [gallery]
* Siblings of a top-level page, are other children of the homepage.
* Lists will use the class given in the class= argument directly,
  without appending "-list" and the enclosed items will omit the class
  entirely.  This enables, for example, using the popular FlexSlider
  or similar plugins like this:

    <div class="flex-container"><div class="flexslider">
    [autonav display="list" class="slider"]

  For full information on sliders, consult your plugin's or
  JavaScript's documentation.

= 1.5.4 =

* Typographical error in 1.5.3

= 1.5.3 =

* In WordPress 3.4.2 and earlier, sites which were created or moved
  from one webhost to another, without proper write privilege on the
  uploads directory, could result in AutoNav not being able to
  determine the uploads directory.  Detect this and insert a comment
  containing WP's internal error, as an aid to help the user find the

= 1.5.2 =

* Added target parameter. For example, for images to open in a new window:

    [autonav display='images' target='_blank']

= 1.5.1 =

* Correct handling of start, count parameters for attached images

= 1.5.0 =

* Special case of postid=-1 to select attachments from all

* Support both the Media Tags and Attachment Taxonomy plugins.

= 1.4.9c =

* Support 'postid="category:*"' for posts in the same category
  as the current post or page.  Also works with category__in,
  category__and, category__not_in -- as:

    [autonav display="posts,list,nothumb" postid="category__in:*,cakes"]

  which would display posts which are either in the same category
  as the current post/page, or which are in the cakes category.

= 1.4.9b =

* Support category slugs in category__in, category__and,

= 1.4.9a =

* Images with name "0" were incorrectly being chosen for thumbnails.

= 1.4.8 =
* In display= parameters, permit "no" prefix to suppress
  behavior, e.g.:  display="posts,list,title,nothumb"
* Use <p> tags within table elements, not list items.
* Display=posts supports same include= syntax as display=pages.
* exclude= parameter supports post/page slugs and page paths.
* New argument plain (e.g., display="posts,plain,thumb,notitle")
  places output items inside a <div> tag instead of an unordered list.

= 1.4.7 =
* id= argument is handled the same as postid= argument, for
  compatibility with WP's [gallery] shortcode.
* Support postids category__and, category__in, category__not_in,
  tag__and, tag__in, tag__not_in, tag_slug__and, tag_slug__in
  and status keyword for standard (or custom) status types.
* Missing-image and other errors displayed inside an 
  autonav-error span element, so their display can be disabled.
* Support custom post type and taxonomy names with dashes
* Additional filters autonav_get_thumbnails, autonav_thumb
* New filters for extensions like NextGEN Gallery thumbnail
  support, and for taxonomy-images plugin.  These are then
  implemented in auxiliary plugins, or theme files.

= 1.4.2 =
* Correct '0' to empty string for default value of post_id.

= 1.4.1 =
* For display="posts", postid="cakes:lemon" will select posts in the
  "cakes" taxonomy if it exists, otherwise it will select posts by the
  "cakes" custom field.
* Output an HTML comment with some information for missing images,
  instead of broken IMG tag.
* Adds filters: autonav_select, autonav_display_select, autonav_html,
  autonav_create_list_item, autonav_create_table_item,
  autonav_create_page_links for use with add_filter().
* Provide link to this Readme file from the Admin screen.

= 1.4.0 =
* Wordpress SVN release of 1.3.9 after several betas

= 1.3.9 =
* Resolves "Incorrect size specified" error immediately after installation,
  by setting default size_* parameters.
* For posts, postid can use custom taxonomies; for pages, postid can be 
  a page's path (e.g., "recipes/desserts" -- NOT merely the slug!), or
  "author:Todd,Mary" or "custom-field-type:value"
* When listing posts, normally the current post is excluded: Use
  'self' to include it.
* Add 'family' parameter to select all children, grandchildren, etc. pages
* Add 'page' parameter to link attached images to the attachment page
* Add 'nolink' parameter for no linking at all
* Additional crop origins at upper-left and top-middle
* subpage_thumb custom field permits paths relative to the WP uploads directory.
* Changed handling of pics_only when display="list"; formerly pics_only
  was forced to 0 for lists, but now it can be specified. If you set pics_only
  to 1 in the admin screen, you must now explicitly override that default
  when invoking [autonav display=list].
* When thumbnail cannot be created, replace output content with text of
  destination URL and a comment about which file could not be created.

= 1.3.8 = 
* Thumbnails were not always cropped when requested
* Handle case of displaying a "thumbnail" that is exactly the size of
  the full-size image.
* Fully support Wordpress sizes (thumb, thumbnail, medium, large),
  user registered sizes, and AutoNav size settings (size_small,
  size_med, size_large).

= 1.3.7 =
* Support orderby="meta:subpage_title" and other custom fields

= 1.3.6 =
* Add subpages-image class to images
* Permit display="posts:foods" to display custom posts of type "foods"
* Added Sharpness factor and image quality level
* Better memory handling, with imagedestroy while resizing images
* Explicitly specifying an image, even if thumbnail-sized or smaller, will work
  (so long as it does not end in a size; "foo.jpg" OK but "foo-64x64.jpg" will be skipped)

= 1.3.5 = 
* Add sharp parameter to use resize instead of resample.

= 1.3.4 =
* Correct handling of order, orderby, and count parameters in various
  combinations of display="posts"
* Add modifier "image" which, used as: [autonav display="posts,image"]
  will create a link to the (thumbnail) image for the post, rather
  than to the post itself.

= 1.3.3 =
* Permit order="desc" on pages as well as posts

= 1.3.2 =
* Support Jonathan Christopher's Attachments plugin

= 1.3.1 =
* Support random order for pages. Thanks for the patch.

= 1.3.0 =
* Add 'paged' parameter.  Correction on page selection (formerly, the start and count
  parameters were applied twice, resulting in too few pages being displayed)

= 1.2.8 =
* Plugin activation hook to create default settings, or otherwise provide reasonable
  defaults for new parameters. This should eliminate plugin failures even when admin
  does not go through Settings screen.

= 1.2.7 =
* Ability to select posts by "tag:x", "author:x", or "category:x" where "x" is
  a numeric id or text (tag slug, author name, or category name); or a series
  thereof ("5,7,9" to select posts in category 5, 7, or 9; or "cakes+vanilla" for
  posts tagged with both cakes and vanilla; see query_posts() in codex for details)
  Example: [autonav display="posts" postid="tag:7"]

= 1.2.6 =
* Escaped attribute values on alt=""
* Add background parameter for later support of transparency in PNG images
* Support display=posts parameter, to display posts instead of pages or attached images.
* Alternate text and title text for attached images, as set in admin screens, is used.

= 1.2.4 =
* Handle edge case of no pictures to display

= 1.2.3 =
* Add optional "siblings" parameter, e.g., [autonav display="images,siblings"]
  which will select the current page's siblings (other children of the
  same parent).  Also "self" parameter which when used with "siblings" will
  include the currently displayed page in the list of siblings.

= 1.2.2 =
* Remove superceded v2.9.0 beta functions
* If a page defines the custom field 'subpage_excerpt' or has a manual excerpt
  defined, that will be displayed when the 'excerpt' parameter is included
  with 'display' (e.g., "[autonav display=list,excerpt]" )

= 1.2.1 =
* W3C validation, correct case of incorrect table and row markup nesting
* Caption parameter added (be sure to go thru Settings screen in admin and
  save settings, even if not changed, to permit new parameter)
* Picture 'alt' tag will be title if available

= 1.2.0 =
* Resolve incompatibility with Windows-hosted paths

= 1.1.9 =
* Improve admin screen formatting.  
* Add option for default number of columns.
* Compatibility with 2.9.0beta and 2.9.0rc1

= 1.1.8 =
* Move options under Settings in adminstration screens
* Could not pics_only option unless checked in admin screen
* Images with subpages_thumb were not displayed in some cases

= 1.1.7 =
* Wordpress 2.9: If you select a thumbnail in a page's edit screen,
  that thumbnail will pre-empt the "choose the first attached image" logic,
  although specifying a subpage_thumb custom field still has priority.

= 1.1.6 =
* When listing pages with display=images or display=list and specifying a
  postid= parameter, each item in the postid= list will:
    - if the page has children, list that page's children (with display=list)
      or the children's thumbnails (with display=images)
    - if the page has NO children, list that page or its thumbnail.

= 1.1.5 =
Corrected typo

= 1.1.4 =
* Regard menu_order in attached files list.
* Permit parameter:  order=desc   to display attached files in 
  descending attachment order.
* Corrected handling of images with capitalized extensions (e.g., .JPG)
* postid= parameter accepts multiple values. For example:
    [autonav display=images postid=7,15]
  will display a table consisting of thumbnails linked to the child
  pages, of the pages with ids 7 and 15.

= 1.1.3 =
* Add postid="n" parameter.
* Attached images with a menu_order of less than -100 will not be
  displayed.  This is the "Order" you can set in the media library.

= 1.1.2 =
* Display=attached could result in error; corrected.

= 1.1.1 =
* Resolve resize warnings when PNG images included

= 1.1 =
* Add page exclude parameter

= 1.0 =
* Initial version on

== Development Notes ==

* [Note 20120111] Other filetypes handled in get_images_from_folder()
  must take care to let actual images take priority regardless of
  which appears first in directory. The switch statement will need to
  take this into account.