wordpress自定义url参数实现路由功能的代码示例


Posted in PHP onNovember 28, 2013

经过两天的正则表达式的学习,和研究wordpress的路由函数,成功实现了自定义wordpress路由功能,以下是路由规则的实现。
如果有自定义的url参数,要通过路由传递,必须通过wordpress的函数将参数添加进去:

//add query_args
function 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'); //对应的类别ID
add_rewrite_rule('^image/?(/page/([0-9]+)?)?/?$','index.php?cat=3&paged=$matches[2]','top');
add_rewrite_rule('^video/?(/page/([0-9]+)?)?/?$','index.php?cat=4&paged=$matches[2]','top'); 
add_rewrite_rule('^resource/?(/page/([0-9]+)?)?/?$','index.php?cat=5&paged=$matches[2]','top');
PHP 相关文章推荐
PHP中,文件上传
Dec 06 PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
php自定义函数截取汉字长度
May 15 PHP
两个php日期控制类实例
Dec 09 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
PHP变量内存分配问题记录整理
Nov 27 #PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 #PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 #PHP
php编写的简单页面跳转功能实现代码
Nov 27 #PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 #PHP
XAMPP安装与使用方法详细解析
Nov 27 #PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 #PHP
You might like
PHP调用Webservice实例代码
2011/07/29 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
js常见表单应用技巧
2008/01/09 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
django rest framework 自定义返回方式
2020/07/12 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
美国渔具店:FishUSA
2019/08/07 全球购物
EJB的激活机制
2013/10/25 面试题
介绍一下mysql的日期和时间函数
2013/03/28 面试题
财务管理职业生涯规划书
2014/02/26 职场文书
公司接待方案
2014/03/08 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL