Help with url rewrite

时间:2012-05-07 作者:Alexa

如何打开URL,如:

http://site.com/?project=5

进入:

http://site.com/project/5/

?

我在这里查看重写文档:http://codex.wordpress.org/Class_Reference/WP_Rewrite#Examples

然后想出了这个

// Adding a new rule
function my_insert_rewrite_rules( $rules )
{
  $newrules = array();
  $newrules[\'(project)/(\\d*)$\'] = \'index.php?project=$matches[2]\';
  return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
    array_push($vars, \'project\');
    return $vars;
}

add_filter( \'rewrite_rules_array\',\'my_insert_rewrite_rules\' );
add_filter( \'query_vars\',\'my_insert_query_vars\' );
add_action( \'wp\', \'test\');

function test()
{
 global $wp_rewrite;
 $wp_rewrite->flush_rules();
 if(isset($_GET[\'project\'])){
   echo $_GET[\'project\'];
   exit;
 }

};
但当我访问例如http://site.com/project/2/

2 个回复
最合适的回答,由SO网友:Jobjörn Folkesson 整理而成

PHP代码不够,需要编辑。相应的htaccess文件。(您可以使用$wp_rewrite->mod_rewrite_rules(); 或者手动编辑。)然而,请注意URL重写是一件复杂的事情-您确定需要它吗?如果你在帖子/页面上使用了相当长的永久链接,那么很有可能会把它弄坏。

SO网友:Milo

要做到这一点,最简单的方法是创建一个页面,并给它一个slug项目。

然后添加重写规则和查询变量:

add_action( \'init\', \'my_insert_rewrite_rules\' );
function my_insert_rewrite_rules(){
    add_rewrite_rule(
        \'project/([0-9]+)/?$\',
        \'index.php?pagename=project&project=$matches[1]\',
        \'top\' );
}

add_filter( \'query_vars\', \'my_insert_query_vars\' );
function my_insert_query_vars( $query_vars ){
    $query_vars[] = \'project\';
    return $query_vars;
}
然后在模板中,使用get_query_var(\'project\'); 检索项目的值。

结束

相关推荐