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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
php常用文件操作函数汇总
Nov 22 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP空值检测函数与方法汇总
Nov 19 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
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python http基本验证方法
2018/12/26 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
小学清明节活动方案
2014/03/08 职场文书
投资入股合作协议书
2014/10/28 职场文书
仓管员岗位职责
2015/02/03 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android