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
php下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
php 页面执行时间计算代码
Dec 04 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
php生成zip文件类实例
Apr 07 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 PHP
PHP7移除的扩展和SAPI
Mar 09 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设计模式 Proxy (代理模式)
2011/06/26 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
php把数组值转换成键的方法
2015/07/13 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
js模拟微博发布消息
2017/02/23 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
详解vue中axios的封装
2018/07/18 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python控制台显示时钟的示例
2014/02/24 Python
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
用python代码做configure文件
2014/07/20 Python
windows系统下Python环境搭建教程
2017/03/28 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
Django跨域请求原理及实现代码
2020/11/14 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
学术诚信承诺书
2014/05/26 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
Tomcat用户管理的优化配置详解
2022/03/31 Servers
python中mongodb包操作数据库
2022/04/19 Python