I had the same reaction when I saw the order of items when I first started using Omeka. It was a struggle to get items to display in an order that matched my plans.
Here's my take on sorting items for someone getting started. It's what I would have liked to have read when I first ran into the issue, first to stop putting hope on the Item Ordering plugin as a good solution, and second to see how the item browse request works at the URL level because it is a key part of Omeka's engine.
The Item Order plugin allows you to re-arrange the set of items to be displayed in an arbitrary order set by the rearrange activity. This is not a great solution if your items have a natural order based on an attribute.
Why have a workflow that needs a manual operation to set the order of items?
If your items have a natural ordering based on an attribute such as Title or Creator (called element texts or element values in Omeka) then it is possible to tell Omeka to use the attribute's value for sorting.
Also, it is easy to extend the set of attributes for an item to include something like a Display Sequence value that can be used to control display order. Add it as a new Item Type Metadata element. Set its value for each item when loading an Item's data into Omeka.
The default Omeka product doesn't know which item attribute to sort by so it picks one to use. It uses the time of insert in descending order (last in, first out).
Omeka imposes this default sort policy inside the core PHP code so it is not obvious what is going on when looking at theme scripts.
If sort order were set in the standard themes as part of the basic functionality, then it would be simpler to see where a sort order policy was set and how to change it.
Unfortunately, there are no examples in the standard themes of setting the sort order. It requires digging a bit to find the technique for setting sort order in a theme script.
The codex on sorting has an answer that is correct but not that helpful until you are an experienced code changer that can understand the clues.
All things related to changing the sort order require that you already have mastered the basic concepts of customizing a theme.
There are set of PHP script files that are used implicitly to produce the HTML for the web site.
You may have your own version of those files that you can modify easily and safely.
When you copy the initial standard set of files into a new location in "themes" that you control and can edit, you have created a custom theme.
Editing the script files to have minor changes can be done by following patterns and doing simple replacement.
Editing the script files to become very different requires having some skill at PHP and HTML and CSS.
URLs that tie together the pages have well defined rules that can be used for control. The rules are not well documented.
The codex on sorting says this on how to change the sort order using the URL.
For example, to sort items by Dublin Core Title on the items browse page,
you want to set the sort_field parameter to Dublin Core,Title.
To generate this link you could use the link_to_browse_items helper:
<?php
echo link_to_browse_items('Sorted by Title',
array('sort_field' => 'Dublin Core,Title'));
?>
In the basic product, a request to view a page of items in a collection is triggered by clicking on a link URL in a collection page to items/browse.php.
If that link is changed to have URL parameters that include sort control values, then the displayed item will be sorted.
In the menu of a standard theme, the menu choice "Browse Items" is a link URL to items/browse.php that does not have any sort control If that URL is changed to have sort control parameters, then the resulting page will display Items in the designated sort order.
Here's the example the codex uses, having more specific detail, but with the same missing steps in the explanation (nothing said about the many ways that the second array parameter is used; nothing said about the special format of the sort field value string).
If you establish a custom theme and look at the scripts in the collections folder, you will notice that both "browse.php" and "show.php" emit a link to view items in the collection by way of making a call to link_to_items_browse(). When a visitor clicks on the created link, they are taken to a page browsing the items in that collection.
In collections/browse.php
<p class="view-items-link"><?php echo link_to_items_browse(
__('View the items in %s',
metadata('collection',
array('Dublin Core', 'Title'))),
array('collection' =>
metadata('collection', 'id'))); ?></p>
In collections/show.php
<h2><?php echo link_to_items_browse(
__('Items in the %s Collection',
$collectionTitle),
array('collection' =>
metadata('collection', 'id')));
?></h2>
If you modify the lines like below, you will add a request into the URL to sort the items in the resulting Item browse page by the Dublin Core Title attribute in ascending order.
In collections/browse.php
<p class="view-items-link"><?php echo link_to_items_browse(
__('View the items in %s',
metadata('collection',
array('Dublin Core', 'Title'))),
array('collection' =>
metadata('collection', 'id'),
'sort_field' => 'Dublin Core,Title',
'sort_dir' => 'a',
)); ?></p>
In collections/show.php
<h2><?php echo link_to_items_browse(
__('Items in the %s Collection',
$collectionTitle),
array('collection' =>
metadata('collection', 'id'),
'sort_field' => 'Dublin Core,Title',
'sort_dir' => 'a',
)); ?></h2>
If you modify the lines like below, you will add a request into the URL to sort the items in the resulting Item browse page by the Item Type Metadata Interviewer attribute in descending order.
In collections/browse.php
<p class="view-items-link"><?php echo link_to_items_browse(
__('View the items in %s',
metadata('collection',
array('Dublin Core', 'Title'))),
array('collection' =>
metadata('collection', 'id')
'sort_field' =>
'Item Type Metadata,Interviewer',
'sort_dir' => 'd',
)); ?></p>
In collections/show.php
<h2><?php echo link_to_items_browse(
__('Items in the %s Collection',
$collectionTitle),
array('collection' =>
metadata('collection', 'id'),
'sort_field' =>
'Item Type Metadata,Interviewer',
'sort_dir' => 'd',
)); ?></h2>
These examples show specific changes to existing script lines, giving a pattern to notice and replace with changes so your item pages are sorted how you want them. The changes must be made in each place where a link to browse items is created. There may be more than one place in a given file. Don't forget header.php and footer.php where the menu choice is set.
===
Sorry. This answer is only a little better than the codex. It does not give a full and complete answer to all concerns related to sorting. But it does cover the first steps toward full control and shows examples in existing code for creating a items/browse.php URL that sorts items how you want them sorted.
The topic of how to control sort order is a big one that can involve both design and coding changes. Having only URL control over item display order does not cover every case. For instance, the standard collections/show.php displays items within the shown collection in an order that is not controlled by the URL.
Removing the code that shows the items on the collections/show.php page is one way around that. Another is to create the set of items to display within the show.php with code changes inside show.php that requests items to show, and use sort control when getting the items. Another is to build a simple plugin that contains a hook for the "item_browse_sql" event which resets the default sort order to use another item attribute field rather than the default 'added' descending.
Those suggestions for getting around cases that are not handled by changing a URL are very high level pointers to ways to modify Omeka to give more control on sorting. In a few weeks, read them again and see if they make better sense.
The Item Order plugin, with a need to manually sort items into the order you want to view them, should only be chosen when the preferred item sort order is not related to any natural item attribute and there is no way to define an added attribute such as Display Sequence and set it at the time of adding the item information.
In your situation, do the items have a natural sort order based on an item attribute?