2015-03-20 2 views
0

У меня возникла проблема с переписыванием URL-адреса страницы с помощью wordpress. Я пробовал с обычным apache mod_rewrite, но результат был неубедительным. Поэтому я решил сосредоточиться на WordPress переписыванияНевозможно переписать URL с пользовательским var в wordpress

моего домена Дев является:

http://localhost/randomwebsite/

Я пытаюсь переписать этот ADRESS

/index.php?p = 13806 & annee = 2014

в

/resultats/2014/

где resultats р = 13806 и 2014 является 'ANNEE' (год на французском языке)

мой functions.php:

function add_result_url() { 
    add_rewrite_rule('^resultats/([0-9]+)/?', 'index.php?p=13806&annee=$matches[1]', 'top'); 
    add_rewrite_tag('%annee%','([0-9]+)'); 
}; 
add_action('init', 'add_result_url'); 
flush_rewrite_rules(); 

мой файл шаблонов

global $wp_query; 
$season = $wp_query->query_vars['annee']; 
var_dump ($wp_query->query_vars['annee']); 

var_dump возвращают нуль на

/resultats/2014/

но работает на

resultats /? ANNEE = 2014

/индекс .php? p = 13806 & annee = 2014 (с переадресацией на первый)

Спасибо за вашу помощь

EDIT 1

Я проверить связь 2 от answear Игореве, но не мог получить он работал с:

functions.php 
function add_custom_query_var($vars){ 
     $vars[] = "annee"; 
     return $vars; 
    } 
    add_filter('query_vars', 'add_custom_query_var'); 
    function add_rewrite_rules($aRules) { 
     //add_rewrite_rule('^resultats/([^/]*)/([^/]*)/$', '?p=13806&annee=$matches[1]&gp=$matches[2]', 'bottom'); 
     $aNewRules = array('^resultats/([0-9]*)/$' => 'index.php?p=13806&annee=$matches[1]'); 
     $aRules = $aNewRules + $aRules; 
     return $aRules; 
    } 
    add_filter('rewrite_rules_array', 'add_rewrite_rules'); 

и

template file: 
if(isset($wp_query->query_vars['annee'])) { 
$season = urldecode($wp_query->query_vars['annee']); 
} 
var_dump ($season); 
var_dump ($_GET["annee"]); 

ответ

0
  1. Вам не нужно добавлять rewrite_tag, потому что вы на самом деле ловите этот var в $matches[1].
  2. Вы уверены, что WordPress знает этот вар под названием annee? Возможно, вам нужно сначала зарегистрировать этот var.

Посмотреть эти два SO вопросов подробных объяснений:

How to pass extra variables in URL with Wordpress

Passing and retrieving query vars in wordpress

+0

Отредактированные мой вопрос, но все-таки stucked – Kable

+0

первую очередь, установить и использовать 2 плагин для отладки - Query Monitor и переписать правила инспектора. Первый из них покажет вам все, что происходит под капотом, - как WP анализирует запрос, какие переменные он подбирает и т. Д. Во-вторых, вы сможете проверить свои правила перезаписи и посмотреть, есть ли другое правило, которое перехватывает запрос. Ловушка с правилами перезаписи находится в их порядке - WP использует первый согласованный и игнорирует остальные. Из вашего вопроса трудно понять, где проблема. Вся переписывающая тема немного сложна и требует некоторой отладки. –

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