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 12 PHP
php数组一对一替换实现代码
Aug 31 PHP
php自动获取关键字的方法
Jan 06 PHP
PHP中foreach()用法汇总
Jul 02 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
PHP children()函数讲解
Feb 03 PHP
mongodb和php的用法详解
Mar 25 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 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数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
FCK调用方法..
2006/12/21 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
js计算精度问题小结
2013/04/22 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
详解React 16 中的异常处理
2017/07/28 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python3写入文件常用方法实例分析
2015/05/22 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python源文件的字符编码知识点详解
2021/03/04 Python
有机童装:Toby Tiger
2018/05/23 全球购物
优秀团员个人的自我评价
2013/10/02 职场文书
语文教学感言
2014/02/06 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
合作经营协议书范本
2014/09/16 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis