您现在的位置是:首页 > 网站制作 > WordpressWordpress
使用template_redirect为wordpress添加自定义页面
杰帅2023-08-26【Wordpress】人已围观
简介wordpress添加自定义页面一般有两种方法,一种是使用自定义模板,另外一种是使用template redirect 钩子。第一种方法网上教程很多,大致思路是先制作一个自定义的模板,可以从page.php中复制,然后按需求修改,最后创建一个页面,选择这个模板。不 清楚的可以网上搜索下,博主这里主要介绍第二种方法。
wordpress添加自定义页面一般有两种方法,一种是使用自定义模板,另外一种是使用template redirect 钩子。第一种方法网上教程很多,大致思路是先制作一个自定义的模板,可以从page.php中复制,然后按需求修改,最后创建一个页面,选择这个模板。不 清楚的可以网上搜索下,博主这里主要介绍第二种方法。
template_redirect 动作钩子很有用,因为它是WordPress知道用户正在浏览的页面的关键。它在特定的页面选择 theme template 之前执行。在只在网站的前端触发,并不在管理员页面触发。
当你需要为特定的页面加载代码的时候,这个钩子很有用。
比如我们要把 example.com/some-custom-url-request 转交给主题文件夹下的 /custom/some-custom-url-request.php 来处理,就可以用这种方式来处理。这种方法相比第一种来说更加的自由,可定制度更高。
在当前主题目录下的模板函数中添加如下代码,即在functions.php最后添加。
function loadCustomTemplate($template) {
global $wp_query;
if(!file_exists($template))return;
$wp_query->is_page = true;
$wp_query->is_single = false;
$wp_query->is_home = false;
$wp_query->comments = false;
// if we have a 404 status
if ($wp_query->is_404) {
// set status of 404 to false
unset($wp_query->query["error"]);
$wp_query->query_vars["error"]="";
$wp_query->is_404=false;
}
// change the header to 200 OK
header("HTTP/1.1 200 OK");
//load our template
include($template);
exit;
}
function templateRedirect() {
$basename = basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
loadCustomTemplate(TEMPLATEPATH.'/custom/'."/$basename.php");
}
add_action('template_redirect', 'templateRedirect');
添加这个代码实现了WordPress查找当前主题目录 /custom 文件夹下的 php 文件,并且将相匹配的 URL 请求转交给对应的 php 文件来处理的效果。同时这个 php 文件还保持了对 WordPress API 的调用。
在当前主题目录 /custom 文件夹下创建新hello.php文件如下。
<?php get_header();?>
<div id="main">
<div id="content">
<div id="post-999" class="page type-page status-publish hentry">
<h2 class="post-title">My custom page</h2>
<div class="post-content">
<?php echo "Hello World"; ?>
<div class="clear"></div>
</div><!-- END .post-content -->
<div class="clear"></div>
</div><!-- #post-## -->
</div><!-- END #content -->
<?php get_sidebar(); ?>
<div class="clear"></div>
</div><!-- END #main -->
<?php get_footer(); ?>
这是一个简单的示例页面,打开example.com/hello即可显示Hello World,而且也保留了当前主题的页面效果。
很赞哦! ()
相关文章
随机图文
-
wordpress 上传的图片不显示的问题 base64,data:image/gif
-
wordpress发布文章HTML标签被自动过滤掉该如何处理?
wordpress发布文章时很多html标签都会自动过滤掉,造成了文章中无法添加<style></style><script></script>等标签。那么该如何如何处理呢? 解决方法一: 将wp-includes文件夹下 -
WordPress 页面模板(Page Template)下拉列表不显示的原因及解决方法
WordPress 的自定义页面模板是一个非常强大好用的功能,使用它新建一些静态页面(Page),添加上一些数据调用的函数,再在网页上做一个导航连接到对应的页面就可以实现很多自定义的功 -
wp_reset_postdata 和 wp_reset_query 的作用与区别
什么时候使用wp_reset_query,什么时候用wp_reset_postdata?
文章评论
本站推荐
标签云
猜你喜欢
- 优化WordPress分类和标签,提升博客组织性
- WordPress使用register_post_type 函数创建自定义文章类型∶
- WP-Optimize与WP Rocket插件简单对比评测2022
- 微信公众号连接wordpress免插件技巧
- 通过WP CLI一次性删除WordPress中未使用的图片 - 搬主题
- WordPress函数get_template_part()
- 织梦DedeCMS转WordPress网站图文教程 包含模板转换
- wordpress技巧:从google公用库载入Jquery
- WordPress函数 get_header()
- 如何制作wordpress 网站搜索功能| WordPress教程网