Параметр строки запроса теряется в правиле перезаписи
-
-
Как вы получаете параметр в шаблоне страницы?Возможно,проблема в этом.How are you retrieving the parameter in you page template? Perhaps the issue is there.
- 0
- 2011-08-22
- montrealist
-
Вы уверены,что дело в переписке?А что-нибудь в single-book.php?Как вы получаете буквенную переменную в этом файле?Are you sure it's something with the rewrite? And something in single-book.php? How are you getting the letter variable in that file?
- 0
- 2011-08-22
- chrisguitarguy
-
@dalbaeb А,это должно было быть в исходном посте.Я отредактировал его.@dalbaeb Ah, this should have been in the original post. I've edited it in.
- 0
- 2011-08-22
- Rebecca Chernoff
-
@ChristopherDavis А,это должно было быть в исходном посте.Я отредактировал его.@ChristopherDavis Ah, this should have been in the original post. I've edited it in.
- 0
- 2011-08-22
- Rebecca Chernoff
-
1 ответ
- голосов
-
- 2011-08-22
Думаю,проблема в вашем внешнем коде.
Попробуйте это:
<?php if( $letter = get_query_var( 'letter' ) ) { echo 'Current Letter: ' . $letter; } else { echo 'Current Letter: All'; }
I think it's probably your front end code that's the problem.
Try this:
<?php if( $letter = get_query_var( 'letter' ) ) { echo 'Current Letter: ' . $letter; } else { echo 'Current Letter: All'; }
-
Нет.): URL-адрес по-прежнему заканчивается как `/books/the-dictionary`,и все (теперь 3) способа получить qs var пусты.Nope. ): The url still ends up as `/books/the-dictionary` and all (now 3) ways of pulling the qs var are empty.
- 0
- 2011-08-22
- Rebecca Chernoff
-
Это своего рода длинный выстрел,но замените ваши первые две функции в `functions.php` (`my_init` и `add_books_rewrite`) на это: http://pastie.org/2411828 и удалите свой add_filter ('init'...) линия.Затем попробуйте вручную сбросить правила перезаписи,перейдя на страницу настроек постоянных ссылок и нажав «Сохранить».This is sort of a long shot, but replace your first two functions in `functions.php` (`my_init` & `add_books_rewrite`) with this: http://pastie.org/2411828 and delete your add_filter('init' ...) line. Then try manually flushing your rewrite rules by going to your permalinks settings page and hitting save.
- 0
- 2011-08-22
- chrisguitarguy
-
И вы можете попробовать удалить знак доллара в конце вашего регулярного выражения add_rewrite_rule.And you may want to try deleting the dollar sign at the end of your `add_rewrite_rule` regex as well.
- 0
- 2011-08-22
- chrisguitarguy
-
Так вы думаете,что анализатор перезаписи,показывающий,что все в порядке,- отвлекающий маневр?Хм,постараюсь.So you think the Rewrite Analyzer indicating things are ok is a red herring? Hmm, will try.
- 0
- 2011-08-22
- Rebecca Chernoff
-
Да ... без изменений.Yeah...no change.
- 0
- 2011-08-22
- Rebecca Chernoff
-
Мне просто кажется странным,что WP перенаправляет URL - вероятно,что-то связано с канонической перезаписью.Что насчет использования add_rewrite_endpoint: http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint 'add_rewrite_endpoint (' letter ',EP_PERMALINK); `.Используйте это вместо add_rewrite_rule и посмотрите,что произойдетI just find it weird that WP is redirecting the URL -- probably something to do with the canonical rewriting. What about using add_rewrite_endpoint: http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint 'add_rewrite_endpoint( 'letter', EP_PERMALINK );`. Use that instead of add_rewrite_rule and see what happens
- 0
- 2011-08-22
- chrisguitarguy
Я успешно добавил настраиваемый тип сообщения,и структура постоянных ссылок отлично работает. Так,например,у меня есть собственный тип сообщения
books
,а постоянная ссылка на книгу -/books/the-dictionary
.Мой шаблон страницы
single-book.php
принимает параметрletter
для настройки содержимого,отображаемого на странице. Я хотел бы иметь возможность ссылаться на это,например,/book/the-dictionary/q
.Я добавил в файлfunctions.php моей темы следующее:
Потребовалось несколько попыток использования приведенного выше кода сброса,ручного перехода на страницу настроек постоянной ссылки и сохранения,а также исправления глупых ошибок в регулярном выражении,но в итоге я смог убедиться,что перезапись была добавлена правильно,используя Яна Фабри потрясающе плагин анализатора перезаписи .
Так что,думаю,все идет гладко,верно? Ага ... не совсем так.
Когда я загружаю свой сайт и перехожу в
books/the-dictionary/q
,он загружает содержимоеthe-dictionary
правильно,но теряет параметр. Интересно то,что если я загружуindex.php?pagename=the-dictionary&letter=q
,все будет отлично работать.Для получения параметра у меня есть следующий код:
Я также искал
$_SERVER["QUERY_STRING"]
. Они заполняются,когда я используюindex.php?pagename...&letter...
,но не когда я использую/books/pagename/letter
.Итак,похоже,здесь что-то происходит. WordPress не полностью удаляет параметр,поскольку все работает,если я укажуindex.php с соответствующими переменными строки запроса. Похоже,это означает,что правило перезаписи работает неправильно. Однако плагин Rewrite Analyzer,похоже,говорит,что все настроено правильно для того,что я собираюсь сделать.
Я немного не понимаю,на что мне следует обратить внимание,чтобы исправить отключение. Извините,если я упустил что-то очевидное. ):