2014-12-15 4 views
2

Я хочу, чтобы изменить структуру постоянных ссылок для конкретных пользовательского поста type.i.eWordpress add_rewrite_rule дает 404

http://test.com/brand/calvin-klien?mtype=tab2 
        ^this is dynamic  

Для

http://test.com/brand/calvin-klien/mtype/tab2 
         ^this is dynamic 

Вот кусок кода, который я пробовал.

Регистрация add_rewrite_tag

function custom_rewrite_tag() { 
     add_rewrite_tag('%mtype%', '([a-z0-9\-]+)'); 
    } 
    add_action('init', 'custom_rewrite_tag', 10, 0); 

add_action('init', 'wpse50530_journal_archive_rewrite', 10, 0); 

Code1

function wpse50530_journal_archive_rewrite(){ 

    add_rewrite_rule('brand/([a-z0-9\-]+)/([a-z0-9\-]+)/$','index.php?name=$matches[1]/?mtype=$matches[2]','top'); 
} 

Кодекса2

add_action('generate_rewrite_rules', 'work_list'); 
function work_list($wp_rewrite) { 
    $newrules = array(); 
    $newrules['brand/([a-z0-9\-]+)/([a-z0-9\-]+)/$'] = 'index.php?name=$matches[1]&mtype=$matches[2]'; 
    $wp_rewrite->rules = $newrules + $wp_rewrite->rules; 

Я пытался как выше codes, flushed permalinks, но все еще 404. Я не знаю, почему он создает соответствует $ в HTAccess, как htacces не знает ЧТО $ соответствует

Кроме того, я попытался monkeyman-rewrite-analyzer plugin, который показывает правильный результат для согласованного моего Permalink, но до сих пор слово пресса показывает 404. Смотрите приложенные скриншоты для code1 & Кодекса2

Code1![][1]Code2

ответ

3

Следующий код должен помочь

add_action('init', 'so_27487849'); 

function so_27487849() { 

    add_rewrite_rule(
     '^brand/([^/]*)/mtype/([^/]*)/?', 
     'index.php?name=$matches[1]&mtype=$matches[2]', 
     'top'); 

} 

Промойте пермалинки и он должен работать.

+0

Благодаря Anand я сделал некоторые изменения, но ваш ответ был стартером для меня :) –

+0

Это хорошая новость :) Все самое лучшее. –

+0

Можете ли вы, пожалуйста, помочь мне в этом = Мне нужно 404 на неправильном адресе. Правильно: «brand/calvin-klein/tab1/watches1 /» Неправильно «brand/calvin-klein/tab12231231/watches1 /», но он все равно дает мне такую ​​же ошибку, а не 404 страница –

0

Я продолжу код Ананда для дальнейших изменений. Он перенаправлялся на name=$matches[1], и мне нужно оставаться на том же URL-адресе, на который я нахожусь, для этого он должен включать имя типа персонализированного сообщения.

add_action('init', 'so_27487849'); 
function so_27487849() { 
    add_rewrite_rule('^brand/([^/]*)/([^/]*)/?','index.php?brand=$matches[1]&mtype=$matches[2]','top'); 
                  ^--this 
} 

У меня есть Довольно URL ... Yaaay !!! НОURL не содержит query string(i.e: mtype=tab1) и остальная часть моего кода бесполезно, так что мы можем достичь этого, делая get_query_var('mtype') и я получил то же самое значение, которое работает в $_REQUEST['mtype'] и мой код работал как шарм.

Также я выключил monkeyman pluggin

Смежные вопросы