Heim >Backend-Entwicklung >PHP-Tutorial >实现wordpress路由功能,该怎么处理

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

WBOY
WBOYOriginal
2016-06-13 11:48:091049Durchsuche

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


------解决方案--------------------
不知道你在做什么

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn