Публикация в группе: Otshelnik-Fm - мои работы (код, плагины, дополнения, статьи и руководства)

Категории группы: Функции WordPress

Добавлено в закладки: 1

Вступление:

В вордпресс есть ссылки в виде ЧПУ и обычные (ugly). Обычные это вида: ваш-сайт/?p=post_id - где post_id - id записи.

Плюс у таких ссылок очевиден - указывая ее внутри записи мне не нужно бояться, что если я сменю чпу на другой вид - то буду получать 404-ю ошибку. По этой ссылке вордпресс мне редиректом направит куда нужно. Плюс к этому - я всегда указываю данный тип ссылок - когда пишу новое дополнение - мне не нужно функцией get_permalink получать урл до записи
(один запрос в бд точно будет на запрос типа ссылок: get_option('permalink_structure'))

Подобное и с личным кабинетом - я могу указать: ваш-сайт/?author=1 и попаду в свой кабинет (даже при включенном чпу)

А вот с ссылкой на комментарий все сложней - у вордпресса нет механизма, который приведет нас к нужному кабинету, учитывая постраничную навигацию комментариев. Нет такого: ваш-сайт/?comment=comment_id - чтобы указав в урл или в html вашего плагина id комментария и только по факту перехода высчитывался урл для этого одного конкретного комментария.

Тикет двухгодичной давности никто не поддержал. Вместо этого они советуют использовать для получения ссылки на комментарий функцию get_comment_link, а она, как я выяснил, довольно прожорлива. На получение ссылки на один комментарий она делает два запроса к базе данных. Теперь представим что мы выводим 10 последних комментариев - это +20 запросов к базе данных! Представляете - на каждую загрузку страницы 20 запросов к бд, и не факт же что этими ссылками воспользуются и перейдут на страницу комментария. Мы таким образом наш сайт вхолостую грузим.

В этой записи я покажу, как сделать подобный урл для вашего плагина или дополнения к WP-Recall

Решение:

Для начала покажем вордпрессу что у нас есть новая переменная запроса (мог бы и GET применить - но захотелось по кодексу ВП)

- здесь мы в массив переменных запроса ВП добавили свое новое значение.

А кодом ниже отловим его и произведем редирект на нужный нам комментарий:

- теперь перейдя по урл: ваш-сайт/?comment_id=16 - мы 302 редиректом перейдем на нужную страницу (учитывается пагинация) к комментарию. Ведь именно по факту перехода и работает этот код.

Как использовать для своих плагинов и дополнений:

- просто в html указываем Id комментария и переменная $link будет содержать урл до комментария.

Итак метрики этого метода:
Было 10 комментариев и функция get_comment_link давала мне +20 запросов к бд. Когда применил этот запросов не стало - т.к. по сути это html+php

Буду рад если вы поделитесь применением данного метода на вашем сайте и озвучите свои метрики "до" и "после" применения его.

3

Автор публикации

не в сети 5 часов

Otshelnik-Fm

495

Вся лента по разработке здесь: http://across-ocean.otshelnik-fm.ru/?note-link=2484

http://across-ocean.otshelnik-fm.ru/ - список моих работ к плагину WP-Recall

Комментарии: 1105Публикации: 126Регистрация: 27-01-2013Продаж/Покупок: 6047/124