Rewrite in plugin

时间:2016-04-27 作者:SaleCar

我用短代码制作了插件。用户在“bz”页中输入短代码。现在,该插件在www.sitename页面上使用。通信/bz。

我想在我的插件之后获取所有url内容。所以,当用户输入www.sitename时。com/bz/hello我收到“哎哟!找不到那个页面”,我想有www.sitename。通信/bz?abc=你好。

我什么都试过了。。。但它不起作用!

add_action( \'init\', \'custom_rewrite\' );
function custom_rewrite(){
    add_rewrite_rule(
        \'^bz/([^/]*)/?$\',
        \'index.php/bz?abc=$matches[2]\',
        \'top\' );
}
我想问题在于我的重写,因为它在已经“永久对齐”的页面之后。

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

你就快到了,但你对规则的理解有点偏离了。此外,我建议使用page_rewrite_rules 过滤器:

function wpse_224942_page_rewrite_rules( $rules ) {
    global $wp_rewrite;

    /* Don\'t forget to change "my_query_var" in the rewrite rule too */
    $new_rules = array(
        \'bz/([^/]+)/?$\' => $wp_rewrite->index . \'?pagename=bz&my_query_var=\' . $wp_rewrite->preg_index( 1 ),
    );

    return $new_rules + $rules;
}

add_filter( \'page_rewrite_rules\', \'wpse_224942_page_rewrite_rules\' );

/**
 * Register our public query var.
 */
function wpse_224942_query_vars( $vars ) {
    $vars[] = \'my_query_var\';

    return $vars;
}

add_filter( \'query_vars\', \'wpse_224942_query_vars\' );
不要忘记刷新永久链接(设置>永久链接>保存更改)。现在,您可以按如下方式获取URL“参数”:get_query_var( \'my_query_var\' )

我建议换一下my_query_var 与您的项目更相关的内容。