创建作者特定的页面URL

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

我的问题与author-specific-urls-in-wordpressmapping-multiple-urls-to-same-page-in-wordpress. 我遵循了以下步骤

创建了一个自定义页面(writer.php)

  • 从仪表板关联该页面,因为所有writer都没有在word press中注册,所以WP内置的author功能对我没有任何帮助。所以我创建了一个自定义URL

    $author_page_url = home_url( \'/\' );
    $author_page_url .=\'writer/\'.$author_id[0];
    
    在哪里author_id 正在从数据库中提取。我的函数中有以下条目。php

    add_action(\'init\', \'add_my_rule\');      
        function add_my_rule()     {    
                global $wp; 
                $wp->add_query_var(\'args\');   
                add_rewrite_rule(\'writer\\/(.*)\',\'index.php?pagename=writer&  
                             args=$matches[1]\',\'top\'); 
                    }
    
    还有作家。php我正在做类似的事情

    $params = get_query_var(\'args\'); 
                $ppp = get_option(\'posts_per_page\');
                if (!is_paged()) {
                        $custom_offset = 0;
                } else {
                    $custom_offset = $ppp*($paged-1);   
                }
                $args = array( \'meta_key\' => \'writer\', \'meta_value\' => $params 
                           ,\'numberposts\' => $ppp,\'offset\' => $custom_offset);
                $authorposts=get_posts($args);
    
    我的问题是当我点击以下URL时http://localhost/blog/wordpress/writer/umesh-awasthi WP给我404错误。而URLhttp://localhost/blog/wordpress/writer/ 工作非常好。

    最初我开发这个时,它工作得很好,现在我不知道出了什么问题。有人能帮我调试这个问题吗。提前谢谢。

    Update

    我最初的怀疑是重写规则不起作用,但不确定原因

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

    如果我删除换行符,您的示例就会生效。

    所以这应该是可行的:

    function add_my_rule() {    
        add_rewrite_tag("%args%", \'([^/]*)\', \'args=\');
        add_rewrite_rule(\'writer/([^/]*)\',\'index.php?pagename=writer&args=$matches[1]\',\'top\'); 
    }
    add_action(\'init\', \'add_my_rule\');
    

    结束

    相关推荐

    将目录路径传递给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__ )