-----------------------------------------------------------------

场景描述:

自定义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的更多相关文章

  1. Nginx下WordPress的Rewrite

    最近接触WP Super Cache,该插件要求固定链接必须是重写的,故用到Rewrite. 我的是这样配置的: /usr/local/nginx/conf/rewrite/wordpress.con ...

  2. (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定

    本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  3. nginx rewrite重写与防盗链配置

    nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...

  4. winserver 2008 r2 iis7.5 实现php wordpress url静态化操作步骤(UrlRewrite实现)

    参考网址:http://jingyan.baidu.com/article/cbf0e500ebec582eaa2893d2.html 文中涉及到的程序源码以及配置 详见附件:http://files ...

  5. 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 ...

  6. 黄聪:wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些

    原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins ...

  7. WordPress nginx环境下开启多站点

    在wp-config.php插入 define('WP_ALLOW_MULTISITE', true); 进入管理页面安装网络,子目录模式按提示再在wp-config.php插入 define('MU ...

  8. (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定

    本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 1. 网站管理平台WordPress和云计算平台Azure简介 (6分 ...

  9. WordPress版微信小程序开发系列(一):WordPress REST API

    自动我发布开源程序WordPress版微信小程序以来,很多WordPress站长在搭建微信小程序的过程中会碰到各种问题来咨询我,有些问题其实很简单,只要仔细看看我写的文章,就可以自己解决.不过这些文章 ...

随机推荐

  1. html5--3.16 button元素

    html5--3.16 button元素 学习要点 掌握button元素的使用 button元素 用来建立一个按钮从功能上来说,与input元素建立的按钮相同 button元素是双标签,其内部可以配置 ...

  2. 更改Windows的“视频”“图片”“”下载“文档”“音乐”“桌面”的默认路径

    右键-->属性

  3. Swift 控制语句

    Control Flow指的是『逻辑控制语句』,包括if.if-else.for.for-in.while.do-while.switch等.其中大部分和OC中差不多,但Swift在某些方便增强了控制 ...

  4. 「UOJ#117」 欧拉回路

    欧拉回路 - 题目 - Universal Online Judge 题意: 给定有向图或无向图,求一条欧拉回路. 题解 心路历程:woc什么傻哔东西->哇真香我的吗!(逃 首先我知道很多人把欧 ...

  5. [APIO 2010] 特别行动队

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1911 [算法] 设前i个士兵"修正"后的最大战斗力为fi 令su ...

  6. MTK DDR调试

    1. 获取 flash id: 硬件信息:通过这个节点可以知道当前flash的id,上层根据id找到对应的flash名字. cat /sys/block/mmcblk0/device/cid \ker ...

  7. CSS:CSS 颜色名

    ylbtech-CSS:CSS 颜色名 1.返回顶部 1. CSS 颜色名 所有浏览器都支持的颜色名. HTML 和 CSS 颜色规范中定义了 147 中颜色名(17 种标准颜色加 130 种其他颜色 ...

  8. P-Function

    题意: 对于集合 $S = {1, 2, ...., n}$ , 定义函数 $F(x) = y, x, y$ 属于 $S$,对于任何 $x$ 属于 $S$, 有 $F(F...F(x)) = x$, ...

  9. tetrahedron

    题意: 求解一个四面体的内切球. 解法: 首先假设内切球球心为$(x0,x1,x2)$,可以用$r = \frac{3V}{S_1+S_2+S_3+S_4}$得出半径, 这样对于四个平面列出三个方程, ...

  10. 13.详解oauth2授权码流程

    13.详解oauth2授权码流程 把登陆系统单独独立出来,可以给自己写的微服务用,也可以给第三方的系统调用我们的服务 显式的和隐式的,两种方式,