Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm struggling with the structure of my Wordpress site and I was hoping you might be able to give me some advice.

The site is for a series of events and the structure is as follows:

  • Gateway (contains a list of events)
    • London 2012 (a specific event)
      • Overview (default for event)
      • Speakers
      • Agenda
      • Venue
      • Register
    • New York 2012
      • Overview
      • Speakers
      • Agenda
      • Venue
      • Register

I am using several custom post types, and each have a number of custom fields attached:

Events: the information from this custom post type is used to create the Overview page Speakers: this a pool of the potential speakers. Speakers are added to a specific event using the above custom post type Venue: this is a pool of potential venues. The venue is added to a specific event using the above custom post type

I would like the structure of the site to be as follows:

  • / - Gateway
  • /london-2012/ - A specific event overview
  • /london-2012/speakers - Speakers page
  • /london-2012/agenda - Agenda page
  • /new-york-2012/speakers - Another speakers page
  • etc.

…where an identical page 'types' (eg. speakers page) will all use the same template across the board (I'll just get the parent event from the URL and do a custom query to grab the data for the page).

Can anyone suggest the best way to do this? I believe either a URL rewrite solution or categories may work but I'm unsure about both :(

Update 1

Have sorted this using redirects - for example, speakers pages:

add_rewrite_rule(
  '^event/([A-Za-z0-9-]+)/speakers/?$', //Checked against the global $wp object - $wp->request
  'index.php?page_id=9&event_slug=$matches[1]', //Use WP_Query params to find your page
  'top' //This will superceed the default WP rewrite stack
);

then registered the variable:

add_filter('query_vars', 'my_query_vars');

function my_query_vars($vars){
    $vars[] = 'event_slug';
    return $vars;
}
share|improve this question
add comment

1 Answer

example.com/event/london-2012/speakers/john-doe

You need an "event" post type and a "speaker post type. The event post type should be hierarchical and should have a sub-page called "speakers" which should use a custom template that displays all the "speaker" post types assigned to that event (see the Posts 2 Posts plugin).

Then you can create other sub-pages like agenda, register, etc.

share|improve this answer
    
Thanks for getting back to me :) I've created a new hierarchical post type called 'Event', can I make this a parent of a page though? I didn't know that you could cross-match parent-child post types? –  Joe Czucha Nov 12 '12 at 14:19
    
Your event can BE the parent: /event/sub-page. But you can create post-to-post relationships with Posts 2 Posts plugin if you wanted speakers to be associated with events and vice versa. –  developdaly Nov 12 '12 at 19:15
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.