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

实现wordpress路由功能

WBOY
WBOYOriginal
2016-06-23 14:39:401338browse

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

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

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


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


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


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


要实现的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