Я хотел бы иметь отдельную страницу для комментариев к сообщению, такую, что эта страница: /2011/02/post-name/
просто показывает сообщение, а затем вы щелкаете ссылку, чтобы просмотреть комментарии, переходя на страницу, подобную этой:/2011/02/post-name/comment-page-1/
Затем я проверю URL, чтобы увидеть, есть ли в нем "comment-page-x", и отображу страницу по-другому, если это так (удалите сообщение, чтобы людям не приходилось каждый раз прокручивать это, а также выполняйте стилизацию немного по другому).
Это бы сработало, но WordPress перенаправляет comment-page-1
на страницу поста - мне нужно, чтобы она оставалась comment-page-1
там в URL.
Это возможно? Как мне это сделать? Спасибо!
Ответы:
Отличный вопрос! WordPress назначает номер страницы вашего комментария для запроса var,
'cpage'
который устанавливается/comment-page-1/
в конце вашего URL . Итак, ваш виновник вredirect_canonical()
функции, строка 192 из/wp-includes/canoncial.php
.Поскольку
redirect_canonical()
функция устанавливается как действие, мы можем вставить собственную функцию, которая будет вызываться вместо нее , чтобы наша функция установила для'cpage'
запроса var значениеfalse
, callredirect_canonical()
, а затем'cpage'
вернула обратно то, что было; это удержит WordPress от перенаправления на вас.Чтобы вставить свою собственную функцию, вам нужно вызвать две ловушки
'init'
и тому'template_redirect'
подобное, поэтому обязательно установите'init'
ловушку, которая будет вызываться послеdo_action()
внутреннего ядра WordPress, которое добавляетredirect_canonical()
:Тогда, конечно, вам нужно что-то сделать со своим
'cpage'
. Вы можете либо проверить возвращаемое значение,get_query_var('cpage')
либо добавить еще один хук, чтобы позволить вам создать шаблон для комментария, что я и сделал. Это добавит вид для шаблона темы файла с таким же , как это было бы нормально загружаться , но с[comments].php
в конце имени вместо.php
, то естьsingle[comments].php
. Обратите внимание, что для этого фильтра я установил приоритет 11; вам может потребоваться установить еще большее число, если используемый вами плагин добавляет себя после вашего хука:И вот доказательство того, что все это работает!
(источник: mikeschinkel.com )
источник
functions.php
файл вашей темы или в.php
файл плагина, который вы, возможно, пишете». Но вы говорите, что не работает? Что именно он не делает? Вы поместилиecho "Test"; exit;
операторы в каждую из функций, чтобы убедиться, что хуки запускаются? Есть ли у вас плагины, которые могут быть конфликтующими? Вы пытались изменить11
в двух местах на100?
Вы включили весь код? Вы создали файл шаблона темы под названиемsingle[comments].php
?