如何创建我创建的页面的伪静态规则

时间:2016-05-16 作者:hoythan

我是一名中文WordPress开发人员,我不熟悉英语,所有内容都是机器翻译。

我是一个中国的WordPress的开发者,我不熟悉英语,所有的内容都是机器翻译。

我想为我的网站创建一个单独的评论页面。

我希望能为我的网站创建一个单独的评论显示页面

这是我的想法:

我的想法如下

我创建了一个postcomment-page.php 关于我的WordPress主题的页面

它的URL是xxx.com/postcomment-page

我有一个$_GET[\'postid\'] 和a$_GET[\'paged\'] 在此页上。

总共有两个get请求,

普通URL:xxxx.com/?pagename=postcomment-page&postid={postid}&paged={paged}

我想要URL:xxxx.com/postcomment-page/{postid}-paged-{paged}.html

这样我就可以得到两个get请求。

但我尝试了各种方法来使用它。

请你帮助我,非常感谢。

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

你需要一个rewrite rule! 首先,让我们把这一点落实到位:

function wpse_226796_rewrite_rule( $rules ) {
    global $wp_rewrite;

    // http://php.net/manual/en/reference.pcre.pattern.syntax.php
    $regex = \'postcomment-page/([1-9][0-9]*)-paged-([1-9][0-9]*)\\.html\';

    $query = sprintf(
        \'%s?pagename=postcomment-page&postid=%s&paged=%s\',
        $wp_rewrite->index,
        $wp_rewrite->preg_index( 1 ),
        $wp_rewrite->preg_index( 2 )
    );

    // Push our rule to the top of $rules
    return array( $regex => $query ) + $rules;
}

add_filter( \'page_rewrite_rules\', \'wpse_226796_rewrite_rule\' );
接下来,我们需要注册查询变量,以便WordPress将“pretty”永久链接正确解析到查询中:

function wpse_226796_query_vars( $vars ) {
    // "paged" is already a core public query var
    $vars[] = \'postid\';

    return $vars;
}

add_filter( \'query_vars\', \'wpse_226796_query_vars\' );
现在我们需要将这些规则“刷新”到数据库缓存中-go to Settings > Permalinks and click Save.

现在,URL如下postcomment-page/237-paged-2.html 将提供:

<?php echo get_query_var( \'postid\' ); // 237 ?>
<?php echo get_query_var( \'paged\' ); // 2 ?>

相关推荐