WordPress 中使用 add_rewrite_rule 添加自定义重写规则完整示例

追格官方小助手/ 2023年02月21日/ WordPress/ 浏览 2082

如何为 WordPress 添加自定义重写规则?网上一大堆文章,却都不太完整~。最后,还是在 WordPress 官方文档找到了完整示例。


第一步,添加规则


add_action( 'init',  function() {
    add_rewrite_rule( 'myparamname/([a-z0-9-]+)[/]?$', 'index.php?myparamname=$matches[1]', 'top' );
} );


第二步,刷新固定链接


在管理后台,设置->固定链接,点一下保存。


注意,固定链接结构不要选【朴素】。


第三步,添加自定义参数到白名单


add_filter( 'query_vars', function( $query_vars ) {
    $query_vars[] = 'myparamname';
    return $query_vars;
} );


这一步,有个替代方案,就是使用 add_rewrite_tag 函数,可与第一步合并,如下:


add_action( 'init',  function() {
    add_rewrite_tag('%myparamname%', '([^&]+)');
    add_rewrite_rule( 'myparamname/([a-z0-9-]+)[/]?$', 'index.php?myparamname=$matches[1]', 'top' );
} );


第四步,添加对应的模板文件


add_action( 'template_include', function( $template ) {
    if ( get_query_var( 'myparamname' ) == false || get_query_var( 'myparamname' ) == '' ) {
        return $template;
    }

    return get_template_directory() . '/template-name.php';
} );


在 template-name 文件中,写自己需求的代码就可以了。


发表评论

暂无评论,抢个沙发...

客服 工单