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开发模式(简写版)
Mar 15 PHP
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
PHP重定向与伪静态区别
Feb 19 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 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操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
Python的形参和实参使用方式
2019/12/24 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
广州迈达威.net面试题目
2012/03/10 面试题
《我的信念》教学反思
2014/02/15 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
办理收楼委托书范本
2014/10/09 职场文书
小学生节水倡议书
2015/04/29 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
刑事上诉状范文
2015/05/22 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis