我正在使用add_rewrite_rule
在Wordpress中添加自定义URL。以下是我的代码:-
add_action( 'init', 'some_function' );
function some_function(){
global $wp_rewrite;
add_rewrite_rule( // This is not working.
'([a-zA-Z0-9-]+)/dp/([a-zA-Z0-9-]+)/?$',
'index.php?partners_deal_url=$matches[1]',
'top' );
add_rewrite_rule( // This is working.
'dp/([a-zA-Z0-9-]+)/?$',
'index.php?partners_deal_url=$matches[1]',
'top' );
$wp_rewrite->flush_rules();
}
add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
$query_vars[] = 'partners_deal_url';
return $query_vars;
}
add_action( 'template_redirect', 'prefix_url_rewrite_templates' );
function prefix_url_rewrite_templates() {
if (get_query_var('partners_deal_url')){
add_filter( 'template_include', function() {
return get_template_directory() . '/single-deal.php';
});
}
}
但是,我的某些自定义URL有效,而有些则无效。不确定,为什么?
以下网址不起作用:-
add_rewrite_rule('([a-zA-Z0-9-]+)/dp/([a-zA-Z0-9-]+)/?$',
'index.php?partners_deal_url=$matches[1]', 'top' );
例如:-当我浏览到domain.com/ABCD/dp/PQR
时,显示未找到404。
下面的规则很好用。
add_rewrite_rule('dp/([a-zA-Z0-9-]+)/?$',
'index.php?partners_deal_url=$matches[1]', 'top' );
例如:-当我浏览到domain.com/dp/PQR
时,它工作得很好。
但是,以下网址不起作用:-
add_rewrite_rule('([a-zA-Z0-9-]+)/dp/([a-zA-Z0-9-]+)/?$',
'index.php?partners_deal_url=$matches[1]', 'top' );
例如:-当我浏览到domain.com/ABCD/dp/PQR
时,显示未找到404。
我使用Monkeyman Rewrite Analyzer测试了url规则,并且URL模式已匹配,但仍然会显示404错误。
我到底想念什么?