一直有如此的需求,比如用wordpress搭建一个公司门户,需要一个产品列表的页面,这个页面需要完全自定义的程序去实现,无法实现为一篇文章或者一个页面,这在wordpress原来的系统中似乎很难实现。
其实这个功能唯一需求的地方,就是能够自定义一个URL然后映射到主题中自定义的一个页面中即可,对于数据库的读写还有其他的逻辑实现,完全可以在主题文件中用PHP代码随心所欲地实现,数据库表也可以随意建,这些都不是问题。但是wordpress就是没有提供额外的URL映射功能,有一个add_rewrite_rule()函数,只是可以自定义新的URL映射到原来的URL,并没有添加URL映射到主题文件的机制。
只能从源码入手,很快可以找到在wp-includes/template-loader.php中,是URL路由到主题文件的入口,所以当我们设置一个新的URL,比如: /production,将它映射到主题目录下的production.php。wordpress会认为 /production 是一个Page的URL,但是扫描数据库后发现没有对应的Page的静态url符合,所以is_404()就返回了true,然后$template被设置为主题对应的404页面。
这样就简单了,在template-loader.php中一堆if和elseif的后面,include( $template );的前面,我们加入以下代码,就可以实现我们的目的:
| 代码如下 | 复制代码 |
| else : $template = get_index_template(); endif; // hacked if(is_404()){ //新的URL一定会被认为是404页面 if($wp_query->query_vars['pagename'] == 'production'){ //从404结果中找到我们的特殊URL $template = get_query_template('production'); //映射到自定义的主题文件 } } //www.111com.net // end if ( $template = apply_filters( 'template_include', $template ) ) include( $template ); return; |
|
这样我们就从404的结果中,找到了我们自定义的URL路径,并将其映射到了主题目录中的production.php文件,这样就是完全自定义的URL和自定义的主题文件了,为所欲为吧亲!
罚罪1+2最新一集未删减在线看-罚罪1+2全80集蓝光高清1080p无删减资源夸克免费观看入口
罚罪1+280集高清完整版迅雷云盘下载1080P(4k)资源
杨紫《生命树》全集高清1080P/4K阿里云盘资源下载无删减
罚罪1+2在哪看?罚罪1+2全80集高清未删减在线观看入口地址
韩剧再婚皇后1080p迅雷磁力链接分享-韩剧再婚皇后高清完整版迅雷云盘下载1080P(4k)资源
如果我不曾见过太阳高清无删减夸克在线看-如果我不曾见过太阳蓝光高清1080p无删减资源夸克免费转存