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 09 PHP
劣质的PHP代码简化
Feb 08 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
spl_autoload_register与autoload的区别详解
Jun 03 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
PHP常用的小程序代码段
Nov 14 PHP
php实现简单的上传进度条
Nov 17 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP内存溢出优化代码详解
Feb 26 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执行速度全攻略(下)
2006/10/09 PHP
mac下安装nginx和php
2013/11/04 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP学习记录之数组函数
2018/06/01 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
javascript时区函数介绍
2012/09/14 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
python查看zip包中文件及大小的方法
2015/07/09 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
护士演讲稿范文
2014/01/05 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
学校个人对照检查材料
2014/08/26 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
html5调用摄像头截图功能
2022/01/18 Javascript