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 相关文章推荐
php5 pdo新改动加载注意事项
Sep 11 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
php cout<<的一点看法
Jan 24 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
基于Zend的Config机制的应用分析
May 02 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
浅谈使用PHP开发微信支付的流程
Oct 04 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 PHP
TP5框架页面跳转样式操作示例
Apr 05 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
10 个经典PHP函数
2013/10/17 PHP
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP重载基础知识回顾
2020/09/10 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python从ftp下载数据保存实例
2013/11/20 Python
python交互式图形编程实例(三)
2017/11/17 Python
对Python中range()函数和list的比较
2018/04/19 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
Django 多环境配置详解
2019/05/14 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
pytorch中的inference使用实例
2020/02/20 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
测绘工程个人的自我评价
2013/11/23 职场文书
医院检讨书范文
2014/02/01 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
给朋友的道歉短信
2015/05/12 职场文书
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs