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 相关文章推荐
杏林同学录(七)
Oct 09 PHP
Wordpress php 分页代码
Oct 21 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
php获取网页请求状态程序示例
Jun 17 PHP
PHP实现简单数字分页效果
Jul 26 PHP
CI配置多数据库访问的方法
Mar 28 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
php array_keys 返回数组的键名
Oct 25 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
Jul 03 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
定义select的边框颜色
2008/04/28 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
基于Python log 的正确打开方式
2018/04/28 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
百丽国际旗下购物网站:优购
2017/02/28 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
什么是组件架构
2016/05/15 面试题
家长会欢迎词
2015/01/23 职场文书
2015年副班长工作总结
2015/05/15 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
Golang 链表的学习和使用
2022/04/19 Golang
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技