Home > Backend Development > PHP Tutorial > 实现wordpress路由功能,该怎么处理

实现wordpress路由功能,该怎么处理

WBOY
Release: 2016-06-13 11:48:09
Original
1042 people have browsed it

实现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 />
Copy after login


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


<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 />
Copy after login


<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 />
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