WordPress使用Rewrite Rules路由新建页面

之前也介绍过一种方法,通过新建页面或者新建文章的方式来新建一个页面。详细可以看下面的文章:

但是有的用户会不老实,将我们新建的页面删除,这就非常的难受,比如我们开发了个插件或者主题,通过新建页面来让用户设置一些东西,但是在你发布插件或主题后,一半人删除了我们新建的页面,跑来找你,问你他怎么设置不了,那就非常难受了。

今天,我们介绍新方法,只需代码即可创建页面,但是也有一个弊端,就是在WordPress后台的页面里面找不到我们新建的页面,而且在设置中不能使用朴素的固定链接的形式。我们的代码如下:

<?php
function hbpay_rewrite_rules($wp_rewrite)
{
        $new_rules['hbpay$']             = 'index.php?hbpay=1';
        $wp_rewrite->rules               = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'hbpay_rewrite_rules');

function hbpay_query_vars($public_query_vars)
{
    if (!is_admin()) {
        $public_query_vars[] = 'hbpay';
    }
    return $public_query_vars;
}
add_filter('query_vars', 'hbpay_query_vars');

function hbpay_load_template()
{
    $hbpay = get_query_var('hbpay');
    if ($hbpay) {
        global $wp_query;
        $template         = hidden_block_dir."/pay/hbpaypage.php";//页面文件所在位置,我的文件内容为666
        load_template($template);
        exit;
    }
}
add_action('template_redirect', 'hbpay_load_template', 5);

注意上面的hidden_block_dir.”/pay/hbpaypage.php”,这是页面所在位置,需要放入你自己的文件,其中hidden_block_dir为C:\wwwroot\a.com\wp-content\plugins\HB,是我用来测试的插件目录。我是在插件入口文件这样声明的define(“hidden_block_dir”,dirname(FILE));。

hbpay$的意思是访问例如:http://a.com/hbpay的时候实际访问的是http://a.com/index.php?hbpay=1

$public_query_vars[] = ‘hbpay’;是http://a.com/index.php?hbpay=1这个的参数,用来在$hbpay = get_query_var(‘hbpay’);这里获取值,然后加载我们的页面文件。

然后我们就能这样http://a.com/hbpay/访问页面了。

图片[1]-WordPress使用Rewrite Rules路由新建页面 - KEKC博客-KEKC博客
因为我页面文件只打印输出了666,所以只显示666
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享