Wordpress Rewrite Rule

时间:2013-02-26 作者:David B

我在上有一个标准页面设置http://mysite.com/mypage/

我想在我的主题函数中设置一个重写规则,该规则接受任何URL,例如:

http://mysite.com/mypage/helloworld/ <;--当前显示“未找到”

并将其转化为:

http://mysite.com/mypage/?var=helloworld <;--当前显示标准页面

添加注释:

“helloworld”是一个未知的变量值,因此我希望所有“/mypage/”URL都重写回来,例如:http://mysite.com/mypage/abc/http://mysite.com/mypage/1231241/http://mysite.com/mypage/sdfasfdadsf/

将全部重写回http://mysite.com/mypage/?var={path}

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

由于问题被修改了,我修改了我的答案。这个任务相对简单,只需一个重写规则就可以完成,它将/mypage/string之后的所有内容转换为一个变量-我称之为var。由于这是通过hook添加到query\\u vars的,因此可以通过global $wp_query; echo $wp_query->var;.

add_filter( \'query_vars\', \'binda_query_vars\' );
function binda_query_vars( $vars ) {
    $vars[] = \'var\';
    return $vars;
}

add_action( \'generate_rewrite_rules\', \'binda_rewrite_rules\' );
function binda_rewrite_rules( $wp_rewrite ) {           
   $mypage_id = 4; //setup your \'mypage\' ID
    $wp_rewrite->rules = array(             
        \'mypage/(.+?)/?$\' => $wp_rewrite->index . \'?page_id=\'.$mypage_id.\'&var=\' . $wp_rewrite->preg_index( 1 ),        
    ) + $wp_rewrite->rules;
}

结束

相关推荐

如何在WordPress附件页面(Image.php)中显示自定义域和父帖子ID

我试图用代码在WordPress附件页(image.php)中的循环外显示自定义字段,它不返回任何内容。这是我用来显示自定义字段的代码:<?php global $wp_query; $postid = $wp_query->post->ID; echo get_post_meta($postid, \'my-custom-field\', true); ?> 我正试图在附件页toowith中显示父帖子idget_the_id 并使用此代码