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

实现wordpress路由功能

WBOY
Release: 2016-06-23 14:39:40
Original
1341 people have browsed it

经过两天的正则表达式的学习,和研究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过滤器
Copy after login


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


//路由规则-根据时间排序以及各类别的最新条目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');
Copy after login


//路由规则-类别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
Copy after login


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


回复讨论(解决方案)

回复给分啊!!

不知道你在做什么

不知道你在做什么

发技术贴啊,分享!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template