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 相关文章推荐
动易数据转成dedecms的php程序
Apr 07 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
Linux下PHP加速器APC的安装与配置笔记
Oct 24 PHP
php简单分页类实现方法
Feb 26 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
解决PhpStorm64不能启动的问题
Jun 20 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
如何删除多级目录
2006/10/09 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
javascript Excel操作知识点
2009/04/24 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python迭代器和生成器介绍
2015/03/06 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
python提取页面内url列表的方法
2015/05/25 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
python之pandas用法大全
2018/03/13 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
机电一体化大学生求职信
2013/11/08 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
组织关系转移介绍信
2014/01/16 职场文书
初级会计求职信范文
2014/02/15 职场文书
安全生产管理责任书
2014/04/16 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android