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安全配置方法
Jun 16 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php微信公众账号开发之前五个坑(一)
Sep 18 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 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导出oracle库的php代码
2009/04/20 PHP
php使用websocket示例详解
2014/03/12 PHP
php表单敏感字符过滤类
2014/12/08 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python生成pdf文件的方法
2014/08/04 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python中%r和%s的详解及区别
2017/03/16 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
基于python3生成标签云代码解析
2020/02/18 Python
Python collections模块的使用方法
2020/10/09 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
先进集体申报材料
2014/12/25 职场文书
生日祝酒词大全
2015/08/10 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis