添加自定义页面的重写规则

时间:2012-01-19 作者:Umesh Awasthi

正在尝试使用特定于作者的URL创建特定于作者的页面,它工作正常,但创建此URL时没有考虑以下两个因素

作者名称冲突(类似名称)

  • 要添加到作者页面的分页选项(对于他发布的帖子)
  • 这是我的初始规则

    function add_my_rule() {    
        global $wp; 
        $wp->add_query_var(\'args\');   
        add_rewrite_rule(\'writer\\/(.*)\',\'index.php?pagename=writer&args=$matches[1]\',\'top\'); 
        /*global $wp_rewrite;
        $wp_rewrite->flush_rules();*/
    }
    add_action(\'init\', \'add_my_rule\'); 
    
    这是一个URL的工作文件

    www.myblog.com/writer/umesh-awasthi ,
    
    但可能会有更多同名作者,这将产生一个问题。所以我打算把博客作者的URL

    www.myblog.com/writer/001/umesh-awasthi 哪里001 是始终唯一的用户id。

    第二个问题是分页,因为我可以在作者页面上创建分页,但当用户单击第二个页面时,URL将显示为

    http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/ 因此,根据我的URL重写规则,我将获得以下数据作为参数umesh-awasthi/page/2 这意味着现在我的查询将无法正常工作,因为它希望作者名称为umesh-awasthi 并将作为umesh-awasthi/page/2

    我的问题是,我是否可以重写规则,以便以以下方式获取三个不同变量中的数据

    用户ID作者姓名页码(如果存在)是WP的新页码,我不知道如何实现这一点,请提前感谢

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

    function add_my_rule() {    
        global $wp; 
        $wp->add_query_var(\'args\');   
        $wp->add_query_var(\'arg_username\');
        add_rewrite_rule(\'writer/([0-9]+)/([^/]*)/page/([0-9]+)\',\'index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]&paged=$matches[3]\',\'top\');
        add_rewrite_rule(\'writer/([0-9]+)/([^/]*)\',\'index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]\',\'top\');
        /*global $wp_rewrite;
        $wp_rewrite->flush_rules();*/
    }
    add_action(\'init\', \'add_my_rule\');
    
    这应该可以奏效。一个writer/user\\u id/username的重写规则(username不在重写规则中使用,但必须使其工作。第二个重写规则相同,只是它添加了分页。

    编辑:在上面的代码中添加了arg\\u用户名。

    结束

    相关推荐

    将目录路径传递给plugins_url()安全吗?

    plugins_url() 函数接受插件slug或文件路径来构建URL。我有以下目录结构:/wp-content/mu-plugins/someplugin/css/file.css /wp-content/mu-plugins/someplugin/includes/file.php 我需要建立URL到file.css 在里面file.php. 我不能通过__FILE__ 因为这将是一个层次太深。plugins_url(\'css/file.css\', __FILE__ )