[wp-hackers] Oddball query question
Shelly
wordpress at anekostudios.com
Sat Oct 25 20:58:53 GMT 2008
Okay. This is a seriously weird question, and I don't even know if it
can be done - but here goes.
I'm finishing up a (free, I should mention - I don't want you all to
think I'm making $$ off your good names :) ) site for a local non-
profit here in town. They have a monthly newsletter that they like to
put online - currently it's done in Microsoft Word (gah! It's
terrible) and I'm working on bringing them out of 1992.
So these guys elect a new board member to each position every 2
years. The actual *positions* stay the same, but the *people* in them
change. Due to this fact, I've created user logins that reflect the
positions available. Each board position writes a section to the
newsletter every month, which starts out with the President first
(monthly "hello" message) and then goes on to the vice president, the
civics coordinator, fundraising, etc.
(Yes, there is a point to me telling you this.)
Right now, I'm using a tag archive to determine the newsletters
pages. Some of the board positions have running articles which stay
the same throughout the year, but most of them put in something new
every month. (some only create one post that's only to show up in one
month and never again). So this knocks out the idea of ordering by
date - because in some cases, when a post is written in September
(the beginning of their year), it's unchanged through to July. So it
seemed to make more sense to *tag* them with what month/year they
belong to, rather than order by date and write the same post over and
over again. Because of this, I also had to edit the tag archive with
a query - because the site is set to show the default 10 posts, but
the newsletter needs to show *all* posts for it's tag on a page. So I
had to do a custom query that matched the current month to it's tag
(because there's not always the same post count from month to month),
and I don't want posts from September showing up in October.
So right now, it's set to use a month/year tag for posts so they show
up in the proper page (tag archive). I can't order the posts by date
(for reasons stated above). Each user also has a category that they
are bound to (using a plugin) so when they write, they are ensured to
post is the proper category. But I can't order the posts by Category
ID or category name (as far as I know anyway - ordering by Category
would work, but I don't think that's a parameter that's accepted by
queries right now, plus aren't tags a form of categories? That would
make the database's head explode.), so I'm thinking ordering by author
is my best bet. So I did that - ordered the posts by Author ID.
Works great.
*however* there are times when new positions are added, and sometimes
a few get removed. So this screws up my order - because if I add a
new position, and it needs to show up between two other positions that
already exist, it shows at the end instead of where it needs to go.
What I *need* is somehow to order by my own custom-defined order
string. Right now, I'm pulling it off my exporting the database and
reassigning author ID's so they show up in the proper order, and then
importing the new data back in. *I'm* fine with doing this, but when
the club has people who are currently using Microsoft Word to do their
website, and don't even know what "anchor tag" means...you know this
ain't gonna work.
So finally we get to my actual question (sorry all, I feel like it's
better to have too much info than not enough!) - is there a way to set
my order in a custom manner? Currently the query that's working is
this:
$path = $_SERVER["REQUEST_URI"];
list($root,$tag,$tagname) = explode('/', $path);
query_posts('tag='.
$tagname.'&showposts=-1&orderby=author&order=asc&author=-1');
But I need something like this:
$path = $_SERVER["REQUEST_URI"];
list($root,$tag,$tagname) = explode('/', $path);
query_posts('tag='.$tagname.'&showposts=-1&orderby='.$order);
Where "$order" would be my own custom arrangement of authors be it by
name or ID. It just can't be rand(), ASC or DESC, but instead a
specific order I define (preferably by nicename) and give to the
$order variable.
Is there a way to do that? or am I just dreaming? I was thinking if
I could somehow pull in the list of all authors in some kind of array
(wp_list_authors('echo=0')? maybe?) and then order the key/value
pairs as variables, I could do it that way, but I feel like a complete
dolt right now. I'm just trying anything I can think of right now.
Anyway, if you haven't fallen asleep reading, I'd appreciate any
prodding or ideas you all might have on this.
~Shelly
More information about the wp-hackers
mailing list