Tags and Categories

Introduction

The easiest way to determine the exact content of your index is to use tags and/or categories to limit the blog posts which appear there.  There are two main settings available for doing that:

  • Include/exclude posts in these categories
  • Include/exclude posts with these tags

As the names suggest, this is where you can type in the name of any valid categories and tags to restrict the type of blog posts you want in each index. For example, suppose I have a site full of book reviews, and I have already them divided into two main categories: fiction and non-fiction.  I could just create an regular index of all reviews (posts), but the non-fiction reviews would be mixed in with the fiction reviews, making it harder to people to find the reviews they want.  Well, instead I can create two separate indexes, one for each category.  In one I would specify fiction as the include category, and in the other I can specify non-fiction, and the two sets of reviews would be nices separated. Now, suppose I have another site where I blog about all sorts of stuff, but every so often I post a service announcement about the blog, which is of no interest to anyone within a couple of weeks later.  I want an index of all my posts, but I don’t want those boring announcements cluttering up the index.  Fortunately I have already tagged those posts with the tag the boring stuff, and I can use that tag in the index settings to exclude all of them.  I just enter ~the boring stuff into the include/exclude tags field (note the little “not” sign (“~”) in front of the tag name), which tells the index to exclude only the posts with that tag. Note, I can use either the name or the “slug” (the unique internal name) or a tag or category, but it has to be valid.  The settings page will give you back an error if you type in a name or slug that doesn’t exist.

Using Tags

The rules for tags are very simple:

  • If you leave the text box blank, all post are included.
  • If you add one or more tag names or slugs (separated by a commas) to the text box
    tag-1, tag-2

    then the posts included in the index would have the tags:

    WITH (tag-1 OR tag-2)
  • If you add one or more tags names or slugs with the ~ sign in front of them
    ~tag-a, ~tag-b

    then all posts are excluded from the index except those with the tags:

    NOT WITH (tag-a OR tag-b)
  • You can combine the included tags and excluded tags together like this
    tag-1, tag-2, ~tag-a, ~tag-b

    and posts are included in index according to the following rules:

    WITH (tag-1 OR tag-2) AND NOT WITH (tag-a OR tag-b)

The rules for categories are basically the same for tags, but with one extra twist. It is possible to have child categories in WordPress. So you might have a category of book reviews called Non-Fiction and then a series of child categories such as History, Economics, Astronomy, and so on. You can add a post to a child category (e.g. Astronomy) and even though you did not explicitly put it in the Non-Fiction category, it is in there by the fact that Astronomy is a child of the Non-Fiction

Using Categories

Therefore you would assume that if you specified Non-Fiction in the include/exclude categories text box, all the posts categorized in History, Economics, Astronomy, would also show up. But, you would be wrong! By default, posts in the child categories of the categories you entered into the text box are not included. But do not fret, there is an option to include all the child categories in the index too:

  • Include child categories

Here is a summary of the rules for including/excluding categories in the index:

  • If you leave the text box blank, all post are included.
  • If you add one or more tag names or slugs (separated by a commas) to the text box
    cat-1, cat-2

    then the posts included in the index would have the tags:

    IN (cat-1 OR cat-2)
  • If you add one or more tags names or slugs with the ~ sign in front of them
    ~cat-a, ~cat-b

    then all posts are excluded from the index except those with the tags:

    NOT IN (cat-a OR cat-b)
  • You can combine the included tags and excluded tags together like this
    cat-1, cat-2, ~cat-a, ~cat-b

    and posts are included in index according to the following rules:

    IN (cat-1 OR cat-2) AND NOT IN (cat-a OR cat-b)
  • When you have the Include child categories option selected you can do something like this:
    parent-cat, ~child-cat-2

    thus including all posts in parent-cat and its descendant, except for the posts in child-cat-2:

    IN (parent-cat) AND NOT IN (child-cat-2)

Using Tags and Categories Together

There is nothing to stop you from using both tags and categories to determine which posts will appear in your index.  In fact, depending on how you tag and categorize your blog, it can prove extremely useful.  Suppose you have a popular, multi-purpose blog with posts in a wide range of categories and you decide that you want to publish an index of your greatest hits—your most popular posts—in a couple of the categories.  All you need to do is go through the blog and tag each of the posts you want in the index (there are plenty of other plugins to help you do this, like Simple Tags) and then add the tag name into the index settings along with the categories you want.

For example, if you have two categories Politics and Current Affairs you could tag your most popular articles with the popular tag like so:

Categories:
Politics, Current Affairs
Tags:
popular

and the resulting set of posts to be displayed in the index would be calculated as follows:

IN (cat:Politics OR cat:Current Affairs) AND IN (tag:popular)

In general, the following set of categories and tags:

Categories:
cat-1, cat-2, ~cat-a, ~cat-b
Tags:
tag-1, tag2, ~tag-a, ~tagb

results in the following rules being applied to the posts in the index:

(IN (cat-1 OR cat -2) AND NOT IN (cat-a OR cat-b)) AND
(WITH (tag-1 OR tag-2) AND NOT WITH (tag-a OR tag-b))

and don’t forget that child categories could be implicitly included or excluded if you have the Include child categories option selected.

Additional Notes

  • You can type the included and excluded tag and category names in any order.  The results will be always be the same.
  • You can use the category or tag’s slug name instead, but the next time you open the settings page, you will see the titles, not the slugs.
  • I have recently noticed that there is a problem with tag and category names with a comma in them.  Because commas are used by the plugin to separate the terms, if you try to add a name that has a comma, the plugin will refuse to accept it.  The work around (for now) is to use the slug name instead since they never have commas.  You can find out the slug of a tag or category by going to Posts » Tags and Posts » Categories respectively.  Note: you will have to do this every time you edit the settings for the index (until the problem is fixed, anyway), so try to avoid using tag and category names with commas in your index settings, if you can.
  • If you are sorting the index by tags or categories, there are some more inclusion/exclusion rules to be aware of in some cases.  Please see the Sorting page for more details.
  • If you want to have an index of pages in your blog, but want to use tags to include or exclude some of them, you can add tags to pages using Simple Tags or other plugins that add tagging to pages.
  • If you delete a tag or category that’s being used in an index, the next time you edit the settings if you see an error message informing you that the settings are no longer valid.
  • AZIndex stores tags and categories using their internal term ids, so renaming tags or categories will not affect the operation of index since the term ids will not change.
Continue to the next page »