Публикация в группе: Кастомизация WP-Recall и Wordpress

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

На самом деле мы будем производить подсчет не "скачиваний" а кликов по нужным ссылкам, т.е. если в посте кликнули по ссылке "скачать" - считаем что файл скачан, не важно что там дальше сделает пользователь.

1. Создаем новую таблицу в базе

Итак, начнем мы с создания новой таблицы, в которой будем хранить данные о скачиваниях для каждого поста за сутки.

Назовем таблицу: wp_day_download

Сделаем столбцы: post_id | date | dl

2. Создаем файл редиректа

Теперь в корне нашего сайта надо создать новый php файл, который будет использоваться для редиректа нужных ссылок. Через него то и будут считаться скачивания (заноситься в базу)

Доп. бонус редиректа в том, что мы можем поставить на нем задержку, например в 10 сек, и показать там рекламу и через 10 сек перенаправить пользователя по ссылке.

Назовем файл dl.php и добавим в него следующий код:

Как вы заметили мы будем использовать  define('SHORTINIT', true); а это значит что почти никакие функции wordpress в этом файле работать не будут, но тут этого и не нужно. А нагрузки нет никакой!

Ну что же, теперь думаю понятно что ссылки на скачивание у нас будут иметь вид:

site.ru/dl.php?url=<закодированный url>&id=<ид поста>

3. Конвертируем ссылки в постах в нужный формат

Теперь нам осталось только конвертировать ссылки в нужный формат.

Т.к. у меня на сайте больше 10.000 записей - отредактировать все ссылки ручками это очень тяжело, тогда решено было написать функцию которая будет фильтровать контент поста и заменять ссылки на НУЖНЫЕ домены.

Да-да, мы будем заменять ссылки только на те домены, где лежит файл. Конечно если писать сайт с нуля, я бы сделал для ссылок какое-то мета-поле и заменял бы только ссылки из него, но и в нашем случае все будет работать отлично.

В functions.php необходимо добавить следующий код

Тут конечно 99% что не самый "Оптимальный" способ проверки, но вроде никакой особой нагрузки нет. В любом случае буду рад любым замечаниям - с радостью внесу их и у себя на сайте, а не только тут.

Так же, как вы могли заменить, нужным ссылкам мы присвоим class="dl-link" - можно использовать его для выделения таких ссылок.

4. Важно. Код для single.php

Как вы поняли общие скачивания мы будем заносить в мета поле поста, однако его немного геморно создавать в файле dl.php, но выход очень прост:

В single.php добавьте (в цикле конечно же):

И все будет отлично: после того как кто-то откроет пост - проверится есть ли у него мета поле downloads и если нет - добавится. А значит клик по нашей сгенерированной ссылке внутри поста нормально отработается.

Ну и итог:

Как показать общие скачивания?

Как показать скачивания за сутки?

Как показать скачивания за N дней?

4

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

не в сети 13 минут

Preci

323

1

Комментарии: 155Публикации: 32Регистрация: 11-11-2014Продаж/Покупок: 869/30