wordpress可以使用rewrite API让url更加美观,需要用到两个相关的rewite函数,分别是add_rewrite_tag和add_rewrite_rule。下面看看具体的例子如何自定义wordpress路由规则,和自定义url参数。


add_action( 'init', 'my_rr_url' );
function my_rr_url()
{      
    //Ensure the $wp_rewrite global is loaded
    global $wp_rewrite;
    add_rewrite_tag('%myname%','([^&]+)');
    add_rewrite_rule( 'haha/([A-Za-z0-9]{1,})/?$','index.php?page_id=8&myname=$matches[1]', 'top' );
 
    //Call flush_rules() as a method of the $wp_rewrite object
    $wp_rewrite->flush_rules();
}

add_rewrite_tag自定义url参数

使用add_rewrite_tag函数可以添加自定义url参数,比如以上例子的&myname=,告诉wordpress myname参数是合法的,因此使用add_rewrite_tag函数注册这个url参数。

*add_rewrite_tag函数不是美化wordpress URL路由规则必须的,当你添加自定义参数时才会用到。比如本例添加了一个参数myname。

add_rewrite_rule自定义路由

要美化wordpress的url,必须使用add_rewrite_rule函数,自定义url访问规则,告诉wordpress如何正确解析。如上例中的:


add_rewrite_rule( 'haha/([A-Za-z0-9]{1,})/?$','index.php?page_id=8&myname=$matches[1]', 'top' );

第一个匹配的参数是$matches[1],第二个是$matches[2],以此类推。

熟悉使用了这个两个函数:add_rewrite_tag和add_rewrite_rule,就可以随心所欲的自定义wordpress网站的路由规则了。

打赏