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的错误信息
Oct 09 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
php小偷相关截取函数备忘
Nov 28 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
php常用hash加密函数
Nov 22 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
小程序云开发实战小结
2018/10/25 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
一篇不错的Python入门教程
2007/02/08 Python
Python兔子毒药问题实例分析
2015/03/05 Python
python编码最佳实践之总结
2016/02/14 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
Scrapy框架使用的基本知识
2018/10/21 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
PyTorch预训练的实现
2019/09/18 Python
django中瀑布流写法实例代码
2019/10/14 Python
python切割图片的示例
2020/11/12 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
卫校中专生个人自我评价
2013/09/19 职场文书
优良学风班总结材料
2014/02/08 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
格列夫游记读书笔记
2015/07/01 职场文书