WordPress中用于更新伪静态规则的PHP代码实例讲解


Posted in PHP onDecember 18, 2015

flush_rewrite_rules() 函数用来删除然后根据现有的条件重写伪静态规则,也就是刷新一次伪静态规则了。

先来说一下,通常在主题或者插件添加新的自定义文章类型的时候调用,防止新的自定义文章类型的文章出现 404 的情况,或者很多时候我们都需要在主题启用的时候执行一些代码,比如布置一些数据库表单、跳转到设置页面等等,WordPress 本身并没有提供相关的钩子,网上也有很多五花八门的实现方法,经过我的研究,发现了可能是最优的方法,下边分享给大家:

/**
  *WordPress 在主题启用的时候执行一些代码
  *http://www.endskin.com/theme-activation-action/
*/
function Bing_theme_activation(){
  if( $GLOBALS['pagenow'] != 'themes.php' || !isset( $_GET['activated'] ) ) return;
  /*
  这里就可以放置在主题启用的时候要执行的代码了,比如跳转到设置界面:
  wp_redirect( admin_url( 'options-general.php' ) );//注意修改页面地址
  die;
  */
}
add_action( 'load-themes.php', 'Bing_theme_activation' );

此代码放在主题和插件里都是有效的。

另外要注意,更新伪静态规则是非常消耗时间和效率的,所以不要每次执行代码都调用,只在必要的情况调用(比如启用主题和启用插件),把 flush_rewrite_rules() 挂到 init 钩子上是极其不正确的。

用法

flush_rewrite_rules( $hard );

参数

$hard

(布尔)(可选)如果为 True 则一起刷新 .htaccess 文件(hard flush);为 False 则只更新数据库里的伪静态规则(soft flush)。

默认值:True(hard flush)。

例子

在主题启用的时候更新伪静态规则:

function Bing_theme_activation(){
  if( $GLOBALS['pagenow'] != 'themes.php' || !isset( $_GET['activated'] ) ) return;
  flush_rewrite_rules();
}
add_action( 'load-themes.php', 'Bing_theme_activation' );

在插件启用的时候更新伪静态规则:

function Bing_myplugin_activate(){
  flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'Bing_myplugin_activate' );

其它

此函数位于:wp-includes/rewrite.php

PHP 相关文章推荐
判断是否为指定长度内字符串的php函数
Feb 16 PHP
php 注释规范
Mar 29 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
纯php生成随机密码
Oct 30 PHP
微信支付扫码支付php版
Jul 22 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
Dec 18 #PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 #PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 #PHP
详解 PHP加密解密字符串函数附源码下载
Dec 18 #PHP
PHP封装的字符串加密解密函数
Dec 18 #PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 #PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 #PHP
You might like
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
浅析js封装和作用域
2013/07/09 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
js实现拖拽功能
2017/03/01 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
Python可变参数函数用法实例
2015/07/07 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python 实现单通道转3通道
2019/12/03 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
Linux的文件类型
2012/03/07 面试题
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
大学毕业生的自我鉴定
2013/11/30 职场文书
学习委员自我鉴定
2014/01/13 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
促销活动总结模板
2014/07/01 职场文书
承诺书模板
2014/08/30 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
MySQL 如何设计统计数据表
2021/06/15 MySQL