在wordpress的开发中,需要添加url自定义参数传送接收值,同时重写路由规则保证url地址的美观,要用到add_rewrite_rule函数,和init动作和query_vars过滤器。如下代码示例了添加url自定义参数和定义路由规则的方法:
function products_plugin_rules() {
add_rewrite_rule('products/?([^/]*)', 'index.php?pagename=products&product_id=$matches[1]', 'top');
}
function products_plugin_query_vars($vars) {
$vars[] = 'product_id';
return $vars;
}
add_action('init', 'products_plugin_rules');
add_filter('query_vars', 'products_plugin_query_vars');
定义了自定义url参数,我们接收参数的值在wordpress中,不建议直接用$_GET获取,有专门的函数get_query_var,以下代码演示了在wordpress中获取url中参数的值:
function products_plugin_display() {
$products_page = get_query_var('pagename');
$product_id = get_query_var('product_id');
if ('products' == $products_page && '' == $product_id):
//show all products
exit;
elseif ('products' == $products_page && '' != $product_id):
//show product page
exit;
endif;
}
//register plugin custom pages display
add_filter('template_redirect', 'products_plugin_display');
1 2

