Я добавляю пользовательские URL в Wordpress, используя add_rewrite_rule
.Ниже приведен мой код: -
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-адресов работают, а некоторые - нет.Не уверен, почему?
Приведенный ниже 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
, оно работает отлично.
Однако приведенный ниже 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. Не найдено.
IЯ проверил мои правила URL, используя Monkeyman Rewrite Analyzer , и шаблон URL совпадает, но все равно выдает ошибку 404.
Что именно мне не хватает?