Home >Backend Development >PHP Tutorial > 实现wordpress路由效能

实现wordpress路由效能

WBOY
WBOYOriginal
2016-06-13 12:30:46761browse

实现wordpress路由功能
经过两天的正则表达式的学习,和研究wordpress的路由函数,成功实现了自定义wordpress路由功能,以下是路由规则的实现。

如果有自定义的url参数,要通过路由传递,必须通过wordpress的函数将参数添加进去:

<br />
//add query_args<br />
function add_query_vars($aVars) {<br />
	$aVars[] = 'score';<br />
	$aVars[] = 'type'; // represents the name of the product category as shown in the URL<br />
	return $aVars;<br />
}<br />
add_filter('query_vars', 'add_query_vars');//wordpress过滤器<br />


同时在获取参数的页面也要用到wordpress的函数获取:
$type=isset($wp_query->query_vars['type'])?urldecode($wp_query->query_vars['type']):'';


<br />
//路由规则-根据时间排序以及各类别的最新条目<br />
function add_rewrite_rules($aRules) {<br />
	$aNewRules = array(<br />
		'text/([^latest][^/]+)/?(/page/([0-9]+)?)?/?$' => 'index.php?cat=2&score=$matches[1]&paged=$matches[3]',<br />
		'image/([^latest][^/]+)/?(/page/([0-9]+)?)?/?$'=>'index.php?cat=3&score=$matches[1]&paged=$matches[3]',<br />
		'video/([^latest][^/]+)/?(/page/([0-9]+)?)?/?$'=>'index.php?cat=4&score=$matches[1]&paged=$matches[3]',<br />
		'resource/([^latest][^/]+)/?(/page/([0-9]+)?)?/?$'=>'index.php?cat=5&score=$matches[1]&paged=$matches[3]',<br />
		'text/(latest)/?(/page/([0-9]+)?)?/?$'=>'index.php?cat=2&type=$matches[1]&paged=$matches[3]',<br />
		'image/(latest)/?(/page/([0-9]+)?)?/?$'=>'index.php?cat=3&type=$matches[1]&paged=$matches[3]',<br />
		'video/(latest)/?(/page/([0-9]+)?)?/?$'=>'index.php?cat=4&type=$matches[1]&paged=$matches[3]',<br />
		'resource/(latest)/?$'=>'index.php?cat=5&type=$matches[1]',<br />
		'(month)/?(/page/([0-9]+)?)?/?$'=>'index.php?score=$matches[1]&paged=$matches[3]',<br />
		'(24hr)/?(/page/([0-9]+)?)?/?$'=>'index.php?score=$matches[1]&paged=$matches[3]',<br />
	);<br />
	$aRules = $aNewRules + $aRules;<br />
	return $aRules;<br />
}<br />
add_filter('rewrite_rules_array', 'add_rewrite_rules');<br />


<br />
//路由规则-类别<br />
add_rewrite_rule('^text/?(/page/([0-9]+)?)?/?$','index.php?cat=2&paged=$matches[2]','top'); //http://www.ke6.com/text/ 段子对应的类别ID<br />
add_rewrite_rule('^image/?(/page/([0-9]+)?)?/?$','index.php?cat=3&paged=$matches[2]','top'); //http://www.ke6.com/image/ 趣图对应的类别ID<br />
add_rewrite_rule('^video/?(/page/([0-9]+)?)?/?$','index.php?cat=4&paged=$matches[2]','top'); //http://www.ke6.com/video/ 视频对应的类别ID<br />
add_rewrite_rule('^resource/?(/page/([0-9]+)?)?/?$','index.php?cat=5&paged=$matches[2]','top'); //http://www.ke6.com/resource/ 视频对应的类别ID<br />


要实现的url路由效果如下:

全部-24小时:http://www.domain.com/24hr/
全部-7天:http://www.domain.com/
全部-30天:http://www.domain.com/month/
段子-24小时:http://www.domain.com/text/24hr/
段子-7天:http://www.domain.com/text/
段子-30天:http://www.domain.com/text/month/

视频:video
趣图:image
干货:resource
随机:random

最新鲜-全部:http://www.domain.com/latest/
最新鲜-段子:http://www.domain.com/text/latest/

本文链接:http://www.tantengvip.com/2013/11/wordpress-route/

更多wordpress的二次开发请访问:
http://www.tantengvip.com/category/web/wordpress/

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn