[wp-hackers] Permalinkg Rule

Mike Schinkel mikeschinkel at newclarity.net
Mon Jun 7 08:11:36 UTC 2010


Hi Giro,

> Is possible to define a rule, that if I have many pages
> 
> /contributors/john
> /contributors/jack
> 
> Where last name is always different but I want that all refer to same page,
> with a possibilitie to take name as parameter.
> 
> Where I have to start looking ?

URL routing in WordPress can be a real challenge. I've been studying it for well over a year and I still struggle with it so the way I'm going to suggest may not be the best way, but it works for me (modify the function names to suit your preferences.):

===[Add this somewhere in your page.php template, or other page template]========

<?php echo get_person_slug(); ?>

===[Add this to your theme's functions.php]========

add_filter('query_vars','my_query_vars');
add_filter('request','my_request');

function my_query_vars($query_vars) {
	$query_vars[] = 'person_slug';
	return $query_vars;
}
function my_request($request) {
	if (isset($request['pagename'])) {	// "pagename" assumes that there is post_type of "page"  called "contributors", i.e. that you've added a page with a slug of "contributors." 
		$parts = explode('/',$request['pagename']);
		if ($parts[0]=='contributors') {
			$request['pagename'] = $parts[0];
			$request['person_slug'] = $parts[1];
		}
	}
	return $request;
}
function get_person_slug() {
	global $wp;
	return $wp->query_vars['person_slug'];
}

HTH.

-Mike



More information about the wp-hackers mailing list