Wordpress 之 Rewrite Rules
-----------------------------------------------------------------
场景描述:
自定义wp主题中,添加了个关于页面(about.php) 。
目的:
顺利访问 http://<domain>/about.php
-----------------------------------------------------------------
解决方案:在主题的functions.php文件中, 自定义重写规则 rewrite_rules
-----------------------------------------------------------------
Step 1. 添加 generate_rewrite_rules
if ( ! function_exists( 'testthemes_rewrite_rules' ) ) :
/**
* @param WP_Rewrite $wp_rewrite
*/
function testthemes_rewrite_rules( $wp_rewrite ) {
$testthemes_rules = [
'about(.*)$' => 'index.php?my_custom_page=about',
]; $wp_rewrite->rules = $testthemes_rules + $wp_rewrite->rules;
}
endif; // testthemes_rewrite_rules add_action( 'generate_rewrite_rules', 'testthemes_rewrite_rules' );
说明:
pattern=>url格式: 'about(.*)$' => 'index.php?my_custom_page=about'
-----------------------------------------------------------------
Step 2. 添加 query_vars
if ( ! function_exists( 'testthemes_add_query_vars' ) ) :
/**
* @param array $public_query_vars
* @return array
*/
function testthemes_add_query_vars($public_query_vars) {
$public_query_vars[] = 'my_custom_page';
return $public_query_vars;
}
endif;
add_action( 'query_vars', 'testthemes_add_query_vars' );
-----------------------------------------------------------------
Step3. 添加 template_redirect
if ( ! function_exists( 'testthemes_template_redirect' ) ) :
/**
* @void
*/
function testthemes_template_redirect() {
global $wp;
/**@var WP_Query $wp_query*/
global $wp_query;
/**@var WP_Rewrite $wp_rewrite*/
global $wp_rewrite; //查询my_custom_page变量
$my_custom_page = $wp_query->query_vars['my_custom_page'];
switch ($my_custom_page) {
case 'about':
include(TEMPLATEPATH.'/about.php');
die();
}
}
endif;
add_action( 'template_redirect', 'testthemes_template_redirect' );
-----------------------------------------------------------------
Step4. 添加 load-themes.php
if ( ! function_exists('testthemes_flush_rewrite_rules')):
/**
* @void
*/
function testthemes_flush_rewrite_rules(){
/**@var string $pagenow*/
global $pagenow;
/**@var WP_Rewrite $wp_rewrite*/
global $wp_rewrite; if( 'theme.php' == $pagenow && isset( $_GET['activated'] )) {
$wp_rewrite->flush_rules();
}
}
endif;
add_action( 'load-themes.php', 'testthemes_flush_rewrite_rules' );
-----------------------------------------------------------------
Step5. 重新激活主题
END
Wordpress 之 Rewrite Rules的更多相关文章
- Nginx下WordPress的Rewrite
最近接触WP Super Cache,该插件要求固定链接必须是重写的,故用到Rewrite. 我的是这样配置的: /usr/local/nginx/conf/rewrite/wordpress.con ...
- (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定
本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...
- nginx rewrite重写与防盗链配置
nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...
- winserver 2008 r2 iis7.5 实现php wordpress url静态化操作步骤(UrlRewrite实现)
参考网址:http://jingyan.baidu.com/article/cbf0e500ebec582eaa2893d2.html 文中涉及到的程序源码以及配置 详见附件:http://files ...
- How to install Wordpress 4.0 on CentOS 7.0
This document describes how to install and configure Wordpress 4.0 on CentOS 7.0. WordPress started ...
- 黄聪:wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些
原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins ...
- WordPress nginx环境下开启多站点
在wp-config.php插入 define('WP_ALLOW_MULTISITE', true); 进入管理页面安装网络,子目录模式按提示再在wp-config.php插入 define('MU ...
- (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定
本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 1. 网站管理平台WordPress和云计算平台Azure简介 (6分 ...
- WordPress版微信小程序开发系列(一):WordPress REST API
自动我发布开源程序WordPress版微信小程序以来,很多WordPress站长在搭建微信小程序的过程中会碰到各种问题来咨询我,有些问题其实很简单,只要仔细看看我写的文章,就可以自己解决.不过这些文章 ...
随机推荐
- VOIP语音编码带宽计算
VOIP Bandwidth consumption naturally depends on the codec used. VOIP消耗的带宽一般取决于所使用的语音编码. When calcul ...
- Update 出现在的问题
报错提示:之前的操作没有完成,运行deanup被打断,请先执行Cleanup方法. 正常右键点击Cleanup,如果只让默认值勾选,可能还是会报这个错.所以正确操作如下: 全部选中再点击OK,这样就可 ...
- darknet源码学习
darknet是一个较为轻型的完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装,没有任何依赖项(OpenCV都可以不用),移植性非常好,支持CPU与GPU两种计算方式.1.test源码( ...
- poj 2420 A Star not a Tree? —— 模拟退火
题目:http://poj.org/problem?id=2420 给出 n 个点的坐标,求费马点: 上模拟退火. 代码如下: #include<iostream> #include< ...
- ping测试网络
https://jingyan.baidu.com/article/ac6a9a5e109d5f2b653eacbc.html 百度百科:https://baike.baidu.com/item/pi ...
- mysql数据库备份bat脚本
@ECHO off TITLE databaseBackup E: REM : 源数据库: IP 端口 用户名 密码 SET DB_HOST=192.168.1.1 SET DB_PORT=3306 ...
- Sherlock and the Encrypted Data
题意: 对于16进制数字num,假定 $p_0,p_1,...,p_m$ 在该数字中出现过,如果有 $x = 2^{p_0} + 2^{p_1} + ... + 2^{p_m}$ 且 $x \oplu ...
- tomcat+mysql+javaweb+docker
1.安装好docker 2.docker pull tomcat docker pull mysql 3.docker run -it -p 8080:8080 --rm tomcat:7.0 #-i ...
- 3.7-3.10 Hive 企业使用优化1
一.Fetch Task 在执行hive代码的时候,一条简单的命令大部分都会转换成为mr代码在后台执行, 但是有时候我们仅仅只是想获取一部分数据而已,仅仅是获取数据,还需要转化成为mr去执行吗? 那个 ...
- linux磁盘存储管理基本命令和工具
1 磁盘在linux表示方法 (1) IDE硬盘:hd[a~z]x,主设备号+次设备号+磁盘分区编号/hd(0-n,y) (2)SCSI硬盘:sd[a~z]x/hd(0-n,y) 注:主设备号可以唯一 ...